如何设置具有 2 个 WAN 接口的 Ubuntu 路由器

如何设置具有 2 个 WAN 接口的 Ubuntu 路由器

我有一个安装了 Ubuntu 服务器 14.04 的 Ubuntu 路由器。物理网络接口是:

eth0——本地局域网
eth3——WAN(互联网)
wlan2 - 本地无线局域网 (AP)

这是我的 /etc/network/interfaces:

# The loopback network interface
auto lo
iface lo inet loopback

# LAN interface
auto eth0
iface eth0 inet manual

# This is the Wireless section.
auto wlan2
iface wlan2 inet manual
 up /sbin/ifconfig wlan0 up

# This is the Bridge section.
auto br0
iface br0 inet static
address 192.168.2.106
network 192.168.2.0
netmask 255.255.255.0
bridge_ports eth0 wlan0

# WAN network interface (NAT-ed)
auto eth3
iface eth3 inet static
address 192.168.1.1
netmask 255.255.255.0
gateway 192.168.1.20
dns-nameservers 8.8.8.8 4.4.4.4

路线是:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.20    0.0.0.0         UG    0      0        0 eth3
192.168.1.0     *               255.255.255.0   U     0      0        0 eth3
192.168.2.0     *               255.255.255.0   U     0      0        0 br0

我使用 UFW,这是我添加到 /etc/ufw/before.rules 的内容:

# Configure NAT settings
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.2.0/24 -o eth3 -j MASQUERADE
COMMIT

UFW 的状态:

Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
Anywhere                   ALLOW       192.168.2.0/24
22 (v6)                    ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

然后我也使用 hostapd 作为 wifi AP。一切都运行正常。但是...我想要做的是添加一个额外的网卡,它将是第二个 WAN 接口我有一个公共静态IP。我想使用当前的 eth3 作为主互联网连接,因为它的连接非常快速且可靠,但位于 NAT 后面,因此缺乏公共 IP。我有一个带有公共 IP 的额外互联网连接,我只想使用它从外部访问服务器(路由器)(ssh、http、https)。公共 IP 互联网连接将连接到 eth2。

我不知道如何配置。当我将此配置输入到 /etc/network/interfaces 中时,我无法通过为 eth2 指定的公共 IP 访问服务器(ssh、http、https)。(使用此公共 IP 的互联网连接正常 - 我用不同的硬件路由器进行了测试,我可以从外部顺利访问它):

# WAN network interface with a public IP
auto eth2
iface eth2 inet static
address 217.XXX.XXX.AAA
netmask 255.255.255.224
gateway 217.XXX.XXX.BBB
dns-nameservers 8.8.8.8 4.4.4.4

有人能帮我解决这个问题吗?


好的,我部分解决了这个问题。>>>

我创建了新的路由表并为“公共 IP WAN”添加了路由,并添加了 IP 规则,以便来自公共 IP 的所有内容都将使用新的路由表路由到正确的接口/ gw:

sudo ip route add 217.XXX.XXX.160/27 dev eth2 src 217.XXX.XXX.185 table T1
sudo ip route add default via 217.XXX.XXX.161 table T1
sudo ip rule add from 217.XXX.XXX.185 table T1

现在我可以通过与 WAN eth2 关联的公共 IP 从外部访问服务器。令我担心的是,自从我配置了这个之后,我就无法通过路由器后面的 LAN 上的公共 IP 访问服务器。我认为这是因为设置了伪装,我们通过 eth3(即 WAN 接口 eht3(没有公共 IP))将所有内容从路由器后面的 LAN 路由。我说得对吗?有办法解决这个问题吗?

答案1

彻底解决

现在我已经有了正确的设置,整个设置都正常工作了,所以我可以通过公共 IP(WAN1)从互联网访问服务器,并通过 WAN2 将 LAN 路由到互联网,而且我仍然可以通过其公共 IP(WAN1)从 LAN 访问服务器。这是必须配置的路由,才能使其按照我之前描述的方式工作:

ip route del default table main
ip route add default via 192.168.1.20 dev eth3 table main

ip route add 217.XXX.XXX.160/27 dev eth2 src 217.XXX.XXX.185 table T1
ip route add default via 217.XXX.XXX.161 dev eth2 table T1
ip route add 192.168.2.0/24 dev br0 table T1
ip route add 192.168.1.0/24 dev eth3 table T1
ip route add 127.0.0.0/8 dev lo table T1

ip route add 192.168.1.0/24 dev eth3 src 192.168.1.1 table T2
ip route add default via 192.168.1.20 dev eth3 table T2
ip route add 192.168.2.0/24 dev br0 table T2
ip route add 217.XXX.XXX.160/27 dev eth2 table T2
ip route add 127.0.0.0/8 dev lo table T2

ip rule add from 217.XXX.XXX.185 table T1
ip rule add from 192.168.1.1 table T2

就是这样。所以问题解决了。

相关内容