我正在尝试使用iptables使所有DMZ服务(当前托管在防火墙后面的私有地址中)通过一个唯一的公共IP地址(外部防火墙的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。
我想要实现的是A能够仅通过使用防火墙的公共IP地址访问B上的服务,而我实际上可以通过运行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进行访问,是否可以帮助我达到相同的结果?