我正在尝试使用 Ubuntu Server 18.04 和 iptables 路由一些公共和私有 IP 地址。请注意:我已更改 IP 地址的前几位以保护隐私,但保留数字以提高可读性。我还启用了所有适当的先决条件,例如设置/proc/sys/net/ipv4/ip_forward
。
这是我的 NIC 配置:
eno1 (private, internal network)
IP: 10.0.0.1/8
enp12s0f0 (public, outgoing interface)
IP: 50.20.14.214/0
GW: 50.20.14.212
enp12s0f1 (public, internal interface)
IP: 50.20.15.1/24
基本上,enp12s0f0 是连接我和提供商的接口。
连接到 enp12s0f1 的交换机将为需要这些地址的设备提供公共 IP 地址。例如,将 50.20.15.20 设置为 Web 服务器,或将 50.20.15.25 设置为 PBX 服务器。
最后,eno1 作为网关连接到内部网络(10.0.0.0/8),将流量转发出 enp12s0f1。
这是我在 /etc/rc.local 中使用的配置:
myip=50.20.15.1
myoip=50.20.14.214
iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
iptables -F
iptables -X
iptables -t nat -A POSTROUTING -o enp12s0f1 -j SNAT --to-source $myoip
iptables -t nat -A POSTROUTING -o enp12s0f0 -j SNAT --to-source $myip
#IP Routing
iptables -A FORWARD -i enp12s0f1 -j ACCEPT
iptables -t nat -A POSTROUTING -o eno1 -j SNAT --to-source $myoip
输出为ip route
:
default via 50.20.14.213 dev enp12s0f0 proto static
10.0.0.0/8 dev eno1 proto kernel scope link src 10.0.0.1
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.1 #<- NOTE: Part of my OpenVPN config
50.20.14.212/30 dev enp12s0f0 proto kernel scope link src 50.20.14.214
50.20.15.0/24 dev enp12s0f1 proto kernel scope link src 50.20.15.1
我尝试了各种不同的配置修改,在某些情况下,公共网络可以工作,流量可以转移到适当的主机,但内部网络根本无法工作。在其他情况下,内部网络可以工作,但它不会让任何流量通过公共内部网络。我觉得它只想将流量转发到其中一个接口,但我知道它可以同时转发两个接口。这似乎遥不可及。我快要抓狂了!请帮忙 :)