2 个网络接口之间的 NAT 规则(使用 iptables)

2 个网络接口之间的 NAT 规则(使用 iptables)

这是我当前拥有的网络:

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

另请不要忘记在服务器上打开所需的端口。

相关内容