14.04 LTS / 使用 2 条 WAN 线路进行路由...在 Dom-0 Xen 主机上让我抓狂

14.04 LTS / 使用 2 条 WAN 线路进行路由...在 Dom-0 Xen 主机上让我抓狂

简短说明:

嗯,我想我可能有一个解决方案,但需要先证明它。

关于硬件路由器上的 NAT,每条 WAN 线似乎只对其自己的子网进行 NAT,因此我只需要让它们也在其他子网上进行 NAT...

当其工作时将会给出答案。

谢谢。


我正在设置一个 Xen-Hypervisor 来用这台机器替换我的 3 台旧机器。

基础是 Dell PowerEdge 2950 16GB Ram,包含两个物理 NIC Ubuntu 服务器 Trusty 14.04 已完成所有更新。

我的设置有点奇怪,但我的内部网有 4 个网络,分为

192.168.0.0/26 - all routing devices, accesspoints and servers
192.168.0.64/26 - all office and top prio devices
192.168.0.128/26 - entertainment stuff and kids
192.168.0.192/26 - low prio and open dhcp area for guests

这是因为我需要降低访客和低优先级内容的带宽,以便有足够的保留空间来工作。所有工作都通过 tc 和 iptables 完成。这在旧的 Internetline 上仍然有效,它只有 0.5MBits/s DL 和 96kBit/s UL,我们已经坚持了 13 年。

从上周开始,我除了旧线路外还增加了一条 LTE (4G) 50MBit/s DL 10MBit/s UL 线路,以加快日常工作速度。但 4G 是基于 30GB 的传输包,可以额外付费扩展 30GB。由于我的旧线路至少还要再使用 2 年,直到 SIP 中继对我可用,所以我想将旧的无限制线路用于各种密集型任务,例如更新和大型下载,这些任务不需要在规定时间准备好,或者进行 ftp 备份等。

到目前为止这就是我的情况。

现在我想建立一个Linux机器,它除了可以完成一些常见的事情(比如LAMP和Mail等)之外,还可以完成以下任务。

  • 保留我的 4 个网络并使它们像以前一样易于管理,以便像以前一样为最高优先级保留带宽,但现在用于两条线路。

  • 对每条线路使用一个执行 NAT 和拨号的硬件路由器/网关(对于慢速 DSL 线路使用 wrt54gl,对于 LTE 端使用华为 B593u-12)最好将它们设置在 192.168.1.0/24 上,但我稍后会解释。

我的设置如下:

LTE (B593u-12)
192.168.1.20
                  DELL2950 Dom-0                 Clients
                  (eth1 192.168.1.5)             (192.168.0.XXX/26)
                  (Xenbr0:X 192.168.0.XXX/26)
DSL (WRT54GL)
192.168.1.21

现在我们需要从 192.168.1.0/24 到不同网络 192.168.0.0/26、192.168.0.64/26、192.168.0.128/26、192.168.0.192/26 进行一些路由,这些路由都位于 Xenbr0(192.168.0.5)、Xenbr0:1(192.168.0.105)、Xenbr0:2(192.168.0.175)和 ​​Xenbr0:3(192.168.0.205)上

我在建立到每个 WAN 路由器的静态路由时遇到问题,我不需要在 Linux Box 上进行 NAT,所以现在我在每个 WAN 路由器上放置 4 个 IP,以便每个网络都可以访问它。

内核 ip_forwand 已启用!我在 iptables FORWARD、INPUT 等表上添加了完整的 ACCEPT 策略,以确保在我在 iproute2 端对路由进行排序时不会丢弃任何内容。

iptables -nvL

Chain INPUT (policy ACCEPT 5418K packets, 762M bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:53
    0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:53
    0     0 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:67
    0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:67

Chain FORWARD (policy ACCEPT 1406K packets, 107M bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-out vif4.0 --physdev-is-bridged
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in vif4.0 --physdev-is-bridged
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-out vif3.0 --physdev-is-bridged
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in vif3.0 --physdev-is-bridged
    0     0 ACCEPT     all  --  *      virbr0  0.0.0.0/0            192.168.122.0/24     ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  virbr0 *       192.168.122.0/24     0.0.0.0/0           
    0     0 ACCEPT     all  --  virbr0 virbr0  0.0.0.0/0            0.0.0.0/0           
    0     0 REJECT     all  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  virbr0 *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT 5215K packets, 9072M bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     udp  --  *      virbr0  0.0.0.0/0            0.0.0.0/0            udp dpt:68

Xen 在表中添加了 vif 和 virbr0 设备,但据我所知,这些对于我的问题来说并不重要。

稍后将启用 iptable 集,如果可能的话,也需要对这些进行提示。内核是否能够在所有网桥之间进行路由而无需任何额外配置,还是我在这里遗漏了什么?

ip 路由显示表主要

default via 192.168.1.20 dev eth1 
192.168.0.0/26 dev xenbr0  proto kernel  scope link  src 192.168.0.5 
192.168.0.64/26 dev xenbr0  proto kernel  scope link  src 192.168.0.105 
192.168.0.128/26 dev xenbr0  proto kernel  scope link  src 192.168.0.175 
192.168.0.192/26 dev xenbr0  proto kernel  scope link  src 192.168.0.205 
192.168.1.0/24 dev eth1  proto kernel  scope link  src 192.168.1.5 
192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1 
224.0.0.0/4 dev xenbr0  scope link 

和 iproute2 上基于规则的路由类似:

ip 路由显示表 LTE

default via 192.168.1.20 dev eth1 
192.168.0.0/26 dev xenbr0  proto kernel  scope link  src 192.168.0.5 
192.168.0.64/26 dev xenbr0  proto kernel  scope link  src 192.168.0.105 
192.168.0.128/26 dev xenbr0  proto kernel  scope link  src 192.168.0.175 
192.168.0.192/26 dev xenbr0  proto kernel  scope link  src 192.168.0.205 
192.168.1.0/24 dev eth1  proto kernel  scope link  src 192.168.1.5

ip 路由显示表 DSL

default via 192.168.1.21 dev eth1 
192.168.0.0/26 dev xenbr0  proto kernel  scope link  src 192.168.0.5 
192.168.0.64/26 dev xenbr0  proto kernel  scope link  src 192.168.0.105 
192.168.0.128/26 dev xenbr0  proto kernel  scope link  src 192.168.0.175 
192.168.0.192/26 dev xenbr0  proto kernel  scope link  src 192.168.0.205 
192.168.1.0/24 dev eth1  proto kernel  scope link  src 192.168.1.5

据我所知,我需要从每个 WAN 路由器将静态路由添加回 Linuxbox,以便它可以找到 192.168.0.0/26 等等......

由于 DD-WRT 项目,这在 WRT54GL 上是可能的,并且在 LTE 上我获得了 root 访问权限并配置了一个启动脚本,该脚本可以对盒子执行类似我在 DD-WRT 上能够执行的操作。

所以我会在每台设备上尝试这个:

route add -net 192.168.0.0 mask 255.255.255.192 gw 192.168.1.5
route add -net 192.168.0.64 mask 255.255.255.192 gw 192.168.1.5
route add -net 192.168.0.128 mask 255.255.255.192 gw 192.168.1.5
route add -net 192.168.0.192 mask 255.255.255.192 gw 192.168.1.5

每个客户端都会获得与其网络相关的 Dom-0 的合适 IP,以便将 Dom-0 作为标准网关。所以这很好用。所有 SMB 和 CIFS 共享都可以在整个基础设施中访问。

现在我可以执行以下操作:从每个 WAN 路由器 shell(eth0 和 Xenbr0) ping Dom-0,从其他 0.XXX/26 网络中的任何设备 ping 每个 WAN 路由器。

因此显然路由本身似乎有效。

但不知为何我无法弄清楚为什么我无法从客户端连接到互联网?!在这种情况下,Linux Box 本身是在线的,可以访问两条线路和每个 WAN 路由器的 NATted 互联网。

所以我现在就在这里。我已经读了无数页关于旋转、静态路由和所有类型的资料。

最后,我希望能够在 eth1 上使用 IFB 将传入流量整形为每条线路上的一定量,以适应​​不同的规则,例如子网、l7-mark、src 和 dst ip 等,以选择服务将使用哪条线路以及它将通过 tc 和 iptables 获得多少带宽。

我的桥接设置正常吗?

bridge name bridge id       STP enabled interfaces
virbr0      8000.000000000000   yes     
xenbr0      8000.001d0904bbb4   yes     eth0
                                        vif3.0
                                        vif3.0-emu
                                        vif4.0
                                        vif4.0-emu

vif3 和 vif4 是我的 Xen 客户端(使用它们在 mysql 等上进行开发),它们可以访问整个网络(包括所有共享),并且可以 ping 网络内的每个设备。所以大致上我认为应该没问题。不确定那个 STP 选项...

我现在有点困惑,因为我看不出问题所在...希望你们中的一些人能更好地了解它;)

来自德国的问候……

相关内容