我已经尝试了将近一个星期来使它发挥作用,但没有成功。我开始觉得无望了。
我有4个以太网适配器:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 30:85:a9:ad:54:1e brd ff:ff:ff:ff:ff:ff
inet 10.100.36.2/29 brd 10.100.36.7 scope global eth0
inet6 fe80::3285:a9ff:fead:541e/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether a0:f3:c1:04:64:40 brd ff:ff:ff:ff:ff:ff
inet 69.70.164.242/30 brd 69.70.164.243 scope global eth1
inet6 fe80::a2f3:c1ff:fe04:6440/64 scope link
valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether a0:f3:c1:04:a0:2f brd ff:ff:ff:ff:ff:ff
inet 10.45.13.1/24 brd 10.45.13.255 scope global eth2
inet6 fe80::a2f3:c1ff:fe04:a02f/64 scope link
valid_lft forever preferred_lft forever
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 28:10:7b:c9:58:76 brd ff:ff:ff:ff:ff:ff
inet 10.45.15.1/24 brd 10.45.15.255 scope global eth3
inet6 fe80::2a10:7bff:fec9:5876/64 scope link
valid_lft forever preferred_lft forever这是linux服务器(Debian)在启动时给我的默认路由:
69.70.164.240/30 dev eth1 proto kernel scope link src 69.70.164.242
10.100.36.0/29 dev eth0 proto kernel scope link src 10.100.36.2
10.45.15.0/24 dev eth3 proto kernel scope link src 10.45.15.1
10.45.13.0/24 dev eth2 proto kernel scope link src 10.45.13.1
default via 10.45.15.254 dev eth3
default via 10.45.13.254 dev eth2
default via 69.70.164.241 dev eth1
default via 10.100.36.1 dev eth0这是我想做的。eth0是我的VDSL线,eth1是我的电缆线。我想:
10.45.13.0 (eth2)转发到网关10.100.36.1 (eth0)10.45.15.0 (eth3)转发到网关69.70.164.241 (eth1)如果我做了这个工作,我会很高兴,但我也想让10.45.13.0在10.45.15.0中不可见,反之亦然。
发布于 2013-05-14 12:46:53
你只能有一个默认路径..。每个路由表。因此,首先,您需要删除所有默认路由,但只有一条。您希望您的debian服务器使用的一条路径。
对于其他内容,您想要的是所谓的“源路由”,这意味着您根据当前处理的数据包的源(源)执行不同的路由。
这是一个实例,可以很精确地说明您想要对源路由做什么。您的问题有点不稳定,所以我假设您希望debian服务器也使用您的VDSL线路。
这意味着您希望从路由表中删除所有默认路由,但通过eth0删除。那么,您的主/本地RT应该如下所示:
69.70.164.240/30 dev eth1 proto kernel scope link src 69.70.164.242
10.100.36.0/29 dev eth0 proto kernel scope link src 10.100.36.2
10.45.15.0/24 dev eth3 proto kernel scope link src 10.45.15.1
10.45.13.0/24 dev eth2 proto kernel scope link src 10.45.13.1
default via 10.100.36.1 dev eth0然后按照链接的示例创建另一个路由表。您可能希望调用该表UseCable而不是John。所以你可以去
echo 200 UseCable >> /etc/iproute2/rt_tables然后告诉内核在数据包来自10.45.13.0时使用该表,如下所示:
ip rule add from 10.45.15.0 table UseCable然后,您需要填充UseCable。以下是一个开端:
ip route add 10.45.15.0/24 dev eth3 table UseCable
ip route add 69.70.164.240/30 dev eth1 table UseCable
ip route add default via 69.70.164.241 table UseCable #that's the default route via cable好吧,那么你的路由就完成了。我觉得你也想要纳特。所以你需要一些类似于
#for everything from eth3 leaving through eth1
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
#for everything from eth2 leaving through eth0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 好了。这不是最干净的方式,但10.45.13.0/24和10.45.15.0/24之间的通信是不可能的,因为从10.45.15.0/24开始的路由表不包含10.45.13.0/24的条目。
我把文雅作为练习留给你。
https://unix.stackexchange.com/questions/75776
复制相似问题