首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >路由4网络

路由4网络
EN

Unix & Linux用户
提问于 2013-05-14 12:28:03
回答 1查看 182关注 0票数 1

我已经尝试了将近一个星期来使它发挥作用,但没有成功。我开始觉得无望了。

我有4个以太网适配器:

代码语言:javascript
复制
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)在启动时给我的默认路由:

代码语言:javascript
复制
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.010.45.15.0中不可见,反之亦然。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2013-05-14 12:46:53

你只能有一个默认路径..。每个路由表。因此,首先,您需要删除所有默认路由,但只有一条。您希望您的debian服务器使用的一条路径。

对于其他内容,您想要的是所谓的“源路由”,这意味着您根据当前处理的数据包的源(源)执行不同的路由。

是一个实例,可以很精确地说明您想要对源路由做什么。您的问题有点不稳定,所以我假设您希望debian服务器也使用您的VDSL线路。

这意味着您希望从路由表中删除所有默认路由,但通过eth0删除。那么,您的主/本地RT应该如下所示:

代码语言:javascript
复制
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。所以你可以去

代码语言:javascript
复制
echo 200 UseCable >> /etc/iproute2/rt_tables

然后告诉内核在数据包来自10.45.13.0时使用该表,如下所示:

代码语言:javascript
复制
ip rule add from 10.45.15.0 table UseCable

然后,您需要填充UseCable。以下是一个开端:

代码语言:javascript
复制
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

好吧,那么你的路由就完成了。我觉得你也想要纳特。所以你需要一些类似于

代码语言:javascript
复制
#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的条目。

我把文雅作为练习留给你。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/75776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档