iptables 를 실전예제로 배우고싶습니다.

jinstar의 이미지

예제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서버에 라우팅정보입니다.
설치해주신분이 더이상의 지원을 안해주셔서 자력으로 유지보수를 위해 공부중입니다.
라우팅을 추가로 변경하기위해 자세히 알고싶습니다.
각 라인이 의미하는 바와 각라인을 구성하기위한 명령라인을 알고싶습니다.

너무나 길어서 감히 답변이 없을것도 각오합니다.
일단 공개적인 질문을 드리고 조금씩이라도 배워나갈 계획입니다.
모쪼록 도움부탁드립니다. ^^

jinstar의 이미지

해당 아이피가 지워져야하는거 아닌가요?
지워지지않고 아래라인에
reject-with icmp-port-unreachable
DROP all -- 121.176.80.0/24 anywhere
로 추가되네요
기존라인을 완전히 지울려면 어떻게 해야하는건가요?

밤톨맨이다의 이미지

아래의 주소에 있는 내용을 참고해 보세요.
http://www.yourwebexperts.com/forum/viewforum.php?f=332

jinstar의 이미지

-s A.A.A.A 로 입력하지않고 -s localhost 이런식으으로 서버의 아이피(A.A.A.A)나 아이피대역(A.A.A.0) 가 자동으로 입력되게하는 입력어가 있나요?

jinstar의 이미지

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

monovision의 이미지

별개지만........ 흠흠
iptables 룰셋에 관련된 질문을 올려주실때는 iptables -L 로 나오는 것보다는
iptables-save 로 출력되는 결과를 올려주세요.
그럼 보다 직관적으로 해석이 가능합니다.

라인 입력은 -A, -I 가 있고 지우는 건 -D 가 있습니다.
man iptables 해도 엔간한건 다 나옵니다.
iptables-save 로 해당 라인을 man 페이지를 찾아가며 하나씩 분석해보세요. 훨씬 쉬우실 겁니다.

jinstar의 이미지

좋은 답변 감사드립니다.

monovision의 이미지

한가지만 더.
그리고 아마 다들 아시겠지만 룰셋을 테스트 한다고 쉘 스크립트로 작성하시는 분들을 종종 보는데요...
iptables 패키지에서 저장 및 불러오기를 지원합니다.

저장하기 : iptables-save > [filename]
불러오기 : iptables-restore < [filename]

도움이 되셨으면 좋겠습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.