![14.04 LTS / 使用 2 条 WAN 线路进行路由...在 Dom-0 Xen 主机上让我抓狂](https://linux22.com/image/1128111/14.04%20LTS%20%2F%20%E4%BD%BF%E7%94%A8%202%20%E6%9D%A1%20WAN%20%E7%BA%BF%E8%B7%AF%E8%BF%9B%E8%A1%8C%E8%B7%AF%E7%94%B1...%E5%9C%A8%20Dom-0%20Xen%20%E4%B8%BB%E6%9C%BA%E4%B8%8A%E8%AE%A9%E6%88%91%E6%8A%93%E7%8B%82.png)
简短说明:
嗯,我想我可能有一个解决方案,但需要先证明它。
关于硬件路由器上的 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 选项...
我现在有点困惑,因为我看不出问题所在...希望你们中的一些人能更好地了解它;)
来自德国的问候……