솔직히 해결 방법을 모르고 iptables를 자주 사용하지 않기 때문에 해결할 수 없는 문제가 있습니다....
인터넷 액세스용 게이트웨이를 나타내고 (WAN IP) 123.123.123.0/30 -> 234.234.234.0/23(내부) 네트워크로 트래픽을 전달하는 기본 Linux 라우터가 있습니다. 내부 네트워크 234.234.234.0 내에는 3개의 인터페이스를 갖춘 또 다른 Linux 라우터가 있습니다. 명확히 하기 위해 234.234.234.254/23 eth0, 192.168.1.1/24 eth1 및 172.16.0.1/24 eth2라고 말할 수 있습니다. 따라서 회로도는 다음과 같습니다.
WAN:123.123.123.2 (eth0) -> (eth1) LAN:234.234.234.1/23 // (eth2) LAN:234.234.234.2 -> (eth0) LAN:192.168.0.1/24 및 (eth1) LAN:172.16. 0.1/24
분명히 123.123.123.1/30을 통해 기본 라우터 0.0.0.0 0.0.0.0에서 기본 경로를 설정하기만 하면 됩니다(인터페이스는 ISP 게이트웨이입니다).
eth0 및 eth1에서 SNAT를 설정했습니다. 아니면 234.234.234.254/23 eth2를 통해 (192.168.1.0/24 및 172.16.0.0/24)이라고 말해야 합니까?
예:
iptables -t nat -I POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 234.234.234.2
이제 두 개인 네트워크의 모든 트래픽은 234.234.234.254를 통해 나가는데 이는 좋습니다. 원하는 인터넷에 접속할 수 있지만 문제는 사설망에서 원하지 않는 234.234.234.0/23 네트워크에도 접속할 수 있다는 점입니다. 전체 트래픽을 외부로 격리하고 싶지만 234.234.234.0/23 네트워크의 어떤 컴퓨터에도 연결할 수 없습니다.
어떻게 해야 하나요?
나가는 트래픽을 제한하기 위해 어떤 규칙이 누락되어 있습니까? 아니면 "인터넷" 액세스만 허용하고 "인트라넷"(네트워크 234.234.234.0/23)은 허용하지 않는다고 말해야 합니까...?
답변1
filter/FORWARD
앞에서 본 것처럼 nat/POSTROUTING
패킷은 이전 규칙에 대해 평가됩니다.이 Netfilter 회로도에서이므로 FORWARD
수정되지 않은 소스 IP 주소가 계속 표시됩니다. 따라서 복잡성이나 특수 설정, NAT에 대해 생각할 필요가 없습니다. 두 번째 라우터에 추가된 방화벽 규칙은 간단합니다.
iptables -A FORWARD -s 192.168.1.0/24 -d 234.234.234.0/23 -j REJECT
iptables -A FORWARD -s 172.16.0.0/24 -d 234.234.234.0/23 -j REJECT
고려해야 할 다양한 변형이 있으며 여기에서는 모두 가능합니다. 예를 들어 및 -s 192.168.1.0/24
로 바꿀 수 있습니다 .-i eth0
-s 172.16.0.0/24
-i eth1
반대 방향은 NAT에 의해 "보호"됩니다. 그럼에도 불구하고 이를 시행하고 내부 네트워크에서 개인 네트워크를 보호하려면 더 많은 규칙을 추가해야 하지만 공개 트래픽을 추적한 다음 시나리오를 단순화할 수 있는 실제 상태 저장 규칙 세트를 고려하는 것이 더 나을 것입니다. 개인 네트워크와 내부 네트워크 사이의 특정 소스 또는 대상에 대한 일부 예외. 자세한 내용을 확인해주세요예 사용 상태 저장 방화벽, 또는 "stateful iptables"를 검색하세요(이 예에서는state
모듈은 이제 다음으로 교체되었습니다.conntrack
기준 치수).