Используя iptables, я пытаюсь сделать все службы DMZ (в настоящее время размещенные на частных адресах за брандмауэром) доступными через один и только один общедоступный IP-адрес - внешний брандмауэр.Я достиг этого с помощью NATTing, однако посторонние все еще могут получить доступ к частным адресам DMZ, чего я хочу избежать.
Пример диаграммы следующий:
A__________________________FW______________________B
Description:
(public internet)______(firewall)_______(DMZ server in private IP)
Interface(s) alongside IP addresses:
eth0__________________eth0_&_eth1__________________eth0
1.1.1.2___________1.1.1.2__&__2.2.2.1_____________2.2.2.2
B работает nc -lp 2000
, чтобы открыть общедоступный порт 2000.
Я хочу добиться того, чтобы А мог получить доступ к службе на В, используя только общедоступный IP-адрес брандмауэра, и на самом деле я могу добиться этого благодаряNAT, запустив:
nc 1.1.1.1 2000
ОДНАКО, моя проблема в том, что я могу добиться того же, запустив
nc 2.2.2.2 2000
, чего я не хочу, потому что кто-то извне теперь можетдоступ к частному IP-адресу.
Я использую следующие правила iptables:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2000 -j DNAT --to-destination 2.2.2.2
iptables -A FORWARD -i eth0 -o eth1 -p tcp --syn --dport 2000 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Не могли бы вы помочь мне достичь того же результата, разрешив доступ только через 1.1.1.1?