궁금한게 좀 많은데요.
우선 이 iptables에서 문제점이 뭐죠?
/etc/sysconfig에 iptables이라는 이름으로 저장하고 ./iptables start를 시키면 실행이 되고, iptables
-L를 하면 실행된 iptables이 다 보입니다. 이 iptable을 /etc/rc.d/rc.local 파일의 가장 아래에
if [ -f /etc/sysconfig/iptables ]; then
/etc/sysconfig/iptables
fi
를 두어서 부팅시에 자동으로 시작되게 하고, tnsysv로 모듈을 올려서 데몬이 작동하게 ip
tables을 분명히 체크를 하였는데 재부팅하면서 iptables fail하면서 iptables-restore를 help하라면
서 재부팅시에 자동으로 시작을 안하내요. 또, NAT의 구성을 어떻게 하는지 아래에서 보
시고 잘못된 부분을 좀 가르쳐주세요. eth0은 외부 주소이고, eth1은 내부를 사용하기 위해
서 ip:192.168.1.2 mask:255.255.255.0 G.W:192.168.1.1로 두었습니다. 이렇게 공인된 내부 주소를 두고
201부터 220까지 여러개를 사용하면 두고서 하나를 메일서버, 두개의 웹서버와, ftp서버를
두려고 하는데 어떻게 이것을 FORWARD와 NAT를 구성하는지를 잘 모르겠어요. NAT와 FORWARD의
상관관계 좀 예를 통해서 설명 좀 해 주십시요.. POSTROUTING,PREROUTING,OUTPUT과 FORWARD를 함께 사
용해도 되는지와 상관관계에 대해서는 자료가 좀 없어서리.. 고정아이피를 20개 정도 두
고 하는데 이것을 -j DNAT를 통해서 할때 두개의 웹서버를 주면 dport가 80면이 두개가 들어올
때에 이것을 어떻게 각각의 웹서버에 전달하는지요?
제 iptables의 내용은 대충 이렇습니다.
제가 아직 완전히 이해를 못하고 남들 흉내만 내서리 좀 이상하군요..
# 기본 정책
/sbin/iptables -Z INPUT
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -F INPUT
/sbin/iptables -A INPUT -i lo -j ACCEPT
# 알 수 없는 패킷 을 막기
/sbin/iptables -A INPUT -m state --INVALID -j DROP
/sbin/iptables -A OUTPUT -m state --INVALID -j DROP
# 확립된 연결에 대한 패킷을 받아들인다.
/sbin/iptables -A INPUT -i eth0 -p tcp --syn -j ACCEPT
# echo난 목적지에 도착 못하거나 시간 최과된 패킷을 받아들인다.
/sbin/iptables -A INPUT -i eth0 -p icmp --icmp-type 0 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --icmp-type 3 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --icmp-type 11 -j ACCEPT
#ping을 막는다.
/sbin/iptables -A INPUT -s xxx.xxx.xxx.xxx/255.255.255.224 -p icmp --icmp-type echo- -j ACCEPT
/sbin/iptables -A INPUT -d xxx.xxx.xxx.xxx/255.255.255.224 -j REJECT
# 외부 서비스를 위한 설정..
/sbin/iptables -A INPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
# UDP 설정
/sbin/iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
# 외부 서비스를 위한 설정..
/sbin/iptables -A INPUT -p tcp --dport 20 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 113 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 1433 -m state --state NEW,ESTABLISHED -j ACCEPT
# UDP 설정
/sbin/iptables -A INPUT -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
# LOG 저장
/sbin/iptables -A INPUT -m state -state INVALID -j LOG --log-prefix "Invalid packet"
# 전부 거절하기
/sbin/iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT
/sbin/iptables -A INPUT -p --syn -j REJECT
/sbin/iptables -A INPUT -p tcp --dport 1:40000 -j DROP
/sbin/iptables -A INPUT -p udp --dport 1:40000 -j DROP
##############################################################
########### FORWARD ###############
##############################################################
/sbin/iptables -Z FORWARD
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -F FORWARD
/sbin/iptables -A FORWARD -i eth1 -o eht1 -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -Z FORWARD -i eth0 -o eth1 -j ACCEPT
/sbin/iptables -Z FORWARD -j LOG
##############################################################
########### OUTPUT ###############
##############################################################
/sbin/iptables -Z OUTPUT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -F OUTPUT
/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 20 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -Z OUTPUT -o eth0 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
##############################################################
########### TOS ###############
##############################################################
/sbin/iptables -t mangle -A OUTPUT -p tcp -s 0/0 --sport 80 -j TOS --set-tos 0x10
/sbin/iptables -t mangle -A OUTPUT -p tcp -s 0/0 --sport 20 -j TOS --set-tos 0x08
/sbin/iptables -t mangle -A OUTPUT -p tcp -s 0/0 --sport 21 -j TOS --set-tos 0x10
/sbin/iptables -t mangle -A OUTPUT -p tcp -s 0/0 --sport 25 -j TOS --set-tos 0x02
/sbin/iptables -t mangle -A OUTPUT -p tcp -s 0/0 --sport 110 -j TOS --set-tos 0x02
##############################################################
########### NAT ###############
##############################################################
/sbin/iptables -t nat -F
/sbin/iptables -t nat -A PREROUTING -i eth1 -j DNAT --to xxx.xxx.xxx.201-xxx.xxx.xxx.220
/sbin/iptables -t nat -A PREROUTING -p tcp -p --dport 80 -i eth1 -j DNAT --to xxx.xxx.xxx.201:8080
/sbin/iptables -t nat -A PREROUTING -p udp -p --dport 80 -i eth1 -j DNAT --to xxx.xxx.xxx.201:8080
/sbin/iptables -t nat -A PREROUTING -p tcp -p --dport 25 -i eth1 -j DNAT --to xxx.xxx.xxx.202
/sbin/iptables -t nat -A PREROUTING -p tcp -p --dport 110 -i eth1 -j DNAT --to xxx.xxx.xxx.202
/sbin/iptables -t nat -A PREROUTING -p tcp -p --dport 80 -i eth1 -j DNAT --to xxx.xxx.xxx.203:8081
/sbin/iptables -t nat -A PREROUTING -p tcp -p --dport 80 -i eth1 -j DNAT --to xxx.xxx.xxx.203:8081
/sbin/iptables -t nat -A PREROUTING -p tcp -p --dport 20 -i eth1 -j DNAT --to xxx.xxx.xxx.204
/sbin/iptables -t nat -A PREROUTING -p tcp -p --dport 21 -i eth1 -j DNAT --to xxx.xxx.xxx.204
/sbin/iptables -t nat -A PREROUTING -p tcp -p --dport 1433 -i eth1 -j DNAT --to xxx.xxx.xxx.204
/sbin/iptables -A FORWARD -i eth0 -o eth1 -j DNAT REJECT