CentOS 6 iptables NAT 라우터

CentOS 6 iptables NAT 라우터

WAN에 연결된 개인 네트워크를 시뮬레이션하기 위해 연구실용 NAT 라우터를 설정하려고 합니다. 세 개의 가상 머신이 있습니다.

  • 공용 IP 192.168.0.5/24
  • 개인 IP 172.16.0.5/24
  • 라우터 192.168.0.1/24(eth0), 172.16.0.1/24(eth1)

먼저 각 시스템의 네트워크를 구성하고 개인->라우터와 공용->라우터 간에 ping이 가능한지 확인했습니다.

그런 다음 net.ipv4.ip_forward1로 설정 sysctl.conf하고 변경 사항을 적용합니다.
이 시점에서는 비공개에서 공개로, 공개에서 비공개로 핑을 보낼 수 없습니다. 라우터의 iptables 규칙을 새로 고치면 문제가 해결되었습니다.

iptables -F
iptables -t net -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle-X

그런 다음 CENTOS6/RHEL6 가이드에 따라 다음 iptables 명령을 실행하여 전달을 설정했습니다.

iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

혼돈이 시작됩니다. 개인에서 공용으로 ping을 보낼 수 있고 tcp 덤프를 사용하여 IP 주소가 올바르게 위장되었는지 확인할 수 있습니다. 하지만 공개에서 비공개로 핑을 보낼 수도 있습니다.

/etc/sysconfig/iptables이것은 Linux 라우터 파일의 덤프입니다.

*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -o eth1 -j ACCEPT
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT

거부를 추가하고 관련/설립 상태를 입력해 보았습니다. 소위 공개 호스트가 개인 네트워크를 스누핑하는 것을 막을 수는 없는 것 같습니다. 어떤 아이디어가 있나요? 나에게 뭔가 문제가 있는 것이 확실합니다.

답변1

필터 테이블의 기본 정책은 ACCEPT가 아닌 DROP이어야 합니다. 그렇지 않으면 기본적으로 모든 패킷이 전달됩니다.

iptables -P FORWARD DROP

답변2

드디어 알아냈어요! 먼저 이전과 같이 iptables를 새로 고칩니다.

iptables -F
iptables -t net -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X

필터링 정책 설정

iptables -P OUTPUT ACCEPT
iptables -P INPUT ACCEPT
iptables -P FORWARD DROP

그런 다음 변장을 설정하세요.

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

그런 다음 개인 인터페이스로의 라우팅을 방지하도록 필터를 설정하십시오. 이렇게 하면 공개 호스트가 라우터를 게이트웨이로 사용하는 것을 방지할 수 있습니다. 이것이 없으면 공용에서 라우터의 개인 인터페이스를 ping할 수 있습니다.

iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -j DROP

마지막으로 전달 설정

iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

관련 정보