iptables 를 실전예제로 배우고싶습니다.
예제1>
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.1.1/25 \
-o eth0 -j SNAT --to my.public.ip.1-my.public.ip.4
예제1에서 echo 1 > /proc/sys/net/ipv4/ip_forward 는 어떻게 동작, 실행되는건가요?
2,3행은 어떤 내용인지 설명부탁드립니다.
실전예제2>
[root@]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- a.a.a.5 anywhere
DROP all -- anywhere anywhere state INVALID
ACCEPT tcp -- 121.176.80.0/24 anywhere tcp dpt:ftp
ACCEPT tcp -- 118.39.200.0/24 anywhere tcp dpt:ftp
ACCEPT tcp -- 116.121.17.0/24 anywhere tcp dpt:ftp
ACCEPT tcp -- a.a.a.0/24 anywhere tcp dpt:ftp
ACCEPT tcp -- 211.246.213.0/24 anywhere tcp dpt:ftp
ACCEPT tcp -- 121.176.80.0/24 anywhere tcp dpt:ssh
ACCEPT tcp -- 118.39.200.0/24 anywhere tcp dpt:ssh
ACCEPT tcp -- 211.246.213.0/24 anywhere tcp dpt:ssh
ACCEPT tcp -- 116.121.17.0/24 anywhere tcp dpt:ssh
ACCEPT tcp -- 172.16.0.0/24 anywhere tcp dpt:ssh
ACCEPT tcp -- a.a.a.0/24 anywhere tcp dpt:ssh
ACCEPT udp -- anywhere anywhere udp spt:domain state ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:ftp-data state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:ftp-data state ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spts:1024:65535 dpts:1024:65535 state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:http state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:auth state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql state NEW,ESTABLISHED
ACCEPT udp -- anywhere anywhere udp dpt:domain state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:domain state NEW,ESTABLISHED
ACCEPT gre -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:pptp
ACCEPT icmp -- 123.141.6.0/24 anywhere icmp echo-request
ACCEPT icmp -- 123.141.6.0/24 anywhere icmp echo-request
ACCEPT icmp -- 221.161.30.0/24 anywhere icmp echo-request
ACCEPT icmp -- 221.161.30.0/24 anywhere icmp echo-request
REJECT tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN reject-with icmp-port-unreachable
DROP tcp -- anywhere anywhere tcp dpts:0:1023
DROP udp -- anywhere anywhere udp dpts:0:1023
REJECT icmp -- anywhere anywhere icmp echo-request reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere tcp dpt:15030
DROP tcp -- anywhere anywhere tcp dpt:55903
DROP tcp -- anywhere anywhere tcp dpt:11005
DROP tcp -- anywhere anywhere tcp dpt:27931
DROP tcp -- anywhere anywhere tcp dpt:27780
DROP tcp -- anywhere anywhere tcp dpt:cbt
DROP tcp -- anywhere anywhere tcp dpt:6130
DROP tcp -- anywhere anywhere tcp dpt:6699
DROP tcp -- anywhere anywhere tcp dpt:https
DROP tcp -- anywhere anywhere tcp dpt:msnp
DROP tcp -- anywhere anywhere tcp dpt:avt-profile-1
DROP tcp -- anywhere anywhere tcp dpt:10016
DROP tcp -- anywhere anywhere tcp dpt:10010
DROP tcp -- anywhere anywhere tcp dpt:scp-config
예제2에서 a.a.a.0 이 서버가 있는 회선입니다.
전체 라우팅 테이블 정보가 의미하는 부분과
각 라인을 구성되게하는 명령라인을 알고싶습니다.
실전예제3>
[root@chang wire68]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- a.a.a.2 anywhere
DROP all -- anywhere anywhere state INVALID
DROP all -- 192.168.100.100 anywhere
ACCEPT tcp -- 121.176.80.0/24 anywhere tcp dpt:ftp
ACCEPT tcp -- 118.39.200.0/24 anywhere tcp dpt:ftp
ACCEPT tcp -- 116.121.17.0/24 anywhere tcp dpt:ftp
ACCEPT tcp -- a.a.a.0/24 anywhere tcp dpt:ftp
ACCEPT tcp -- 211.246.213.0/24 anywhere tcp dpt:ftp
ACCEPT tcp -- 59.9.188.143 anywhere tcp dpt:ftp
ACCEPT tcp -- 121.176.80.0/24 anywhere tcp dpt:ssh
ACCEPT tcp -- 118.39.200.0/24 anywhere tcp dpt:ssh
ACCEPT tcp -- 211.246.213.0/24 anywhere tcp dpt:ssh
ACCEPT tcp -- 116.121.17.0/24 anywhere tcp dpt:ssh
ACCEPT tcp -- 172.16.0.0/24 anywhere tcp dpt:ssh
ACCEPT tcp -- a.a.a.0/24 anywhere tcp dpt:ssh
ACCEPT tcp -- 59.9.188.143 anywhere tcp dpt:ssh
ACCEPT udp -- anywhere anywhere udp spt:domain state ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:ftp-data state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:ftp-data state ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spts:1024:65535 dpts:1024:65535 state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:http state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:auth state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql state NEW,ESTABLISHED
ACCEPT udp -- anywhere anywhere udp dpt:domain state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:domain state NEW,ESTABLISHED
ACCEPT gre -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:pptp
ACCEPT icmp -- 123.141.6.0/24 anywhere icmp echo-request
ACCEPT icmp -- 123.141.6.0/24 anywhere icmp echo-request
ACCEPT icmp -- 221.161.30.0/24 anywhere icmp echo-request
ACCEPT icmp -- 221.161.30.0/24 anywhere icmp echo-request
REJECT tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN reject-with icmp-port-unreachable
DROP tcp -- anywhere anywhere tcp dpts:0:1023
DROP udp -- anywhere anywhere udp dpts:0:1023
REJECT icmp -- anywhere anywhere icmp echo-request reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP tcp -- 172.16.1.0/26 anywhere tcp dpt:cbt
DROP tcp -- 172.16.1.0/26 anywhere tcp dpt:11005
DROP tcp -- 172.16.1.0/26 anywhere tcp dpt:27780
DROP tcp -- 172.16.1.0/26 anywhere tcp dpt:7414
DROP tcp -- 172.16.1.0/26 anywhere tcp dpt:ipsec-nat-t
DROP tcp -- 172.16.1.0/26 anywhere tcp dpt:blizwow
DROP tcp -- 172.16.1.0/26 anywhere tcp dpt:irdmi
DROP tcp -- 172.16.1.0/26 anywhere tcp dpt:12013
DROP tcp -- 172.16.1.0/26 anywhere tcp dpt:15775
DROP tcp -- 172.16.1.0/26 anywhere tcp dpt:ndmp
DROP tcp -- 172.16.1.0/26 anywhere tcp dpt:10011
DROP tcp -- 172.16.1.0/26 anywhere tcp dpt:hydap
DROP tcp -- 172.16.1.0/26 anywhere tcp dpt:15001
DROP tcp -- 172.16.1.0/26 anywhere tcp dpt:62000
DROP all -- 172.16.2.0/26 121.253.14.0/24
DROP tcp -- 172.16.2.0/26 anywhere tcp dpt:11005
DROP tcp -- 172.16.2.0/26 anywhere tcp dpt:27780
DROP tcp -- 172.16.2.0/26 anywhere tcp dpt:7414
DROP tcp -- 172.16.2.0/26 anywhere tcp dpt:ipsec-nat-t
DROP tcp -- 172.16.2.0/26 anywhere tcp dpt:blizwow
DROP tcp -- 172.16.2.0/26 anywhere tcp dpt:irdmi
DROP tcp -- 172.16.2.0/26 anywhere tcp dpt:12013
DROP tcp -- 172.16.2.0/26 anywhere tcp dpt:15775
DROP tcp -- 172.16.2.0/26 anywhere tcp dpt:ndmp
DROP tcp -- 172.16.2.0/26 anywhere tcp dpt:10011
DROP tcp -- 172.16.2.0/26 anywhere tcp dpt:hydap
DROP tcp -- 172.16.2.0/26 anywhere tcp dpt:15001
DROP tcp -- 172.16.2.0/26 anywhere tcp dpt:62000
DROP all -- 172.16.3.0/26 121.253.14.0/24
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
예제3는 현재 vpn서버에 라우팅정보입니다.
설치해주신분이 더이상의 지원을 안해주셔서 자력으로 유지보수를 위해 공부중입니다.
라우팅을 추가로 변경하기위해 자세히 알고싶습니다.
각 라인이 의미하는 바와 각라인을 구성하기위한 명령라인을 알고싶습니다.
너무나 길어서 감히 답변이 없을것도 각오합니다.
일단 공개적인 질문을 드리고 조금씩이라도 배워나갈 계획입니다.
모쪼록 도움부탁드립니다. ^^
iptables -A INPUT -s 121.176.80.0/24 -j DROP 실행을 하면 라우팅 테이블에서
해당 아이피가 지워져야하는거 아닌가요?
지워지지않고 아래라인에
reject-with icmp-port-unreachable
DROP all -- 121.176.80.0/24 anywhere
로 추가되네요
기존라인을 완전히 지울려면 어떻게 해야하는건가요?
아래의 주소에 있는
아래의 주소에 있는 내용을 참고해 보세요.
http://www.yourwebexperts.com/forum/viewforum.php?f=332
iptables -A INPUT -s 로컬IP?
-s A.A.A.A 로 입력하지않고 -s localhost 이런식으으로 서버의 아이피(A.A.A.A)나 아이피대역(A.A.A.0) 가 자동으로 입력되게하는 입력어가 있나요?
이 부분이 무슨 내용인가요?
0 0 ACCEPT icmp -- * * 123.141.6.0/24 0.0.0.0/0 icmp type 8
0 0 ACCEPT icmp -- * * 123.141.6.0/24 0.0.0.0/0 icmp type 8
0 0 ACCEPT icmp -- * * 221.161.30.0/24 0.0.0.0/0 icmp type 8
0 0 ACCEPT icmp -- * * 221.161.30.0/24 0.0.0.0/0 icmp type 8
0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x02 reject-with icmp-port-unreachable
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpts:0:1023
0 0 DROP udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpts:0:1023
0 0 REJECT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 8 reject-with icmp-port-unreachable
별개지만........
별개지만........ 흠흠
iptables 룰셋에 관련된 질문을 올려주실때는 iptables -L 로 나오는 것보다는
iptables-save 로 출력되는 결과를 올려주세요.
그럼 보다 직관적으로 해석이 가능합니다.
라인 입력은 -A, -I 가 있고 지우는 건 -D 가 있습니다.
man iptables 해도 엔간한건 다 나옵니다.
iptables-save 로 해당 라인을 man 페이지를 찾아가며 하나씩 분석해보세요. 훨씬 쉬우실 겁니다.
iptabes-save 사용하니 세세하게 다 나오네요 ^^
좋은 답변 감사드립니다.
한가지만 더. 그리고
한가지만 더.
그리고 아마 다들 아시겠지만 룰셋을 테스트 한다고 쉘 스크립트로 작성하시는 분들을 종종 보는데요...
iptables 패키지에서 저장 및 불러오기를 지원합니다.
저장하기 : iptables-save > [filename]
불러오기 : iptables-restore < [filename]
도움이 되셨으면 좋겠습니다.
댓글 달기