这是我当前拥有的网络:
UBUNTU:
eth0:
ip: 212.83.10.10
bcast: 212.83.10.10
netmask 255.255.255.255
gateway 62.x.x.x
eth1:
ip: 192.168.1.1
bcast: 192.168.1.255
netmask: 255.255.255.0
gateway ?
CENTOS:
eth0:
ip: 192.168.1.2
bcast: 192.168.1.255
netmask 255.255.255.0
gateway 192.168.1.1
我基本上想要这个:
根据端口制定从互联网到特定内部服务器的特定 NAT 规则:
传入端口 80 的连接必须重定向到 192.168.1.2:80
传入端口 3306 的连接必须重定向到 192.168.1.3:3306
等等...
我还需要一条 NAT 规则,以允许子网 192.168.1.x 中的服务器浏览互联网。我需要将 eth0 上的请求路由到 eth1,以便能够退出到互联网。
我可以使用 iptables 在 UBUNTU 机器上执行此操作吗?
谢谢!
答案1
对于第一个要求,你需要使用 DNAT 或目标网络地址转换,其用法如下,
iptables -t nat -A PREROUTING -p tcp --dport TARGETPORT -j DNAT --to TARGET-IP:TARGETPORT
例子:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.1.2:80
对于 Internet 浏览,您将需要源 Natting:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source GATEWAY-IP
Or you can use masquarding instead of Source Natting like this:
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE
另请不要忘记在服务器上打开所需的端口。