Debian 双网卡如何只保留一个默认路由呢?

2016-09-20 11:09:14 +08:00
 nifury

我正在使用 debian 8 ,有 eth0 和 wlan0 , eth0 连接内网, wlan0 连接外网,/e/n/interfaces 如下:

allow-hotplug eth0
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

默认的路由表如下:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.17.128.2    0.0.0.0         UG    202    0        0 eth0
0.0.0.0         192.168.1.1     0.0.0.0         UG    303    0        0 wlan0
172.17.128.0    0.0.0.0         255.255.128.0   U     202    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     303    0        0 wlan0

现在的问题是我无法通过 WIFI 来 SSH 到我的主机,因为系统默认回复到 eth0 导致 TCP 连接无法建立

以下是我尝试过的方法:

unset new_routers

post-up route del default dev eth0

把 wlan0 设置 metric 0

都没用

而且我手动删掉 eth0 的默认路由之后,过一会儿自己又回来了……

有没有什么办法可以在系统启动的时候只保留 wlan0 的默认路由呢?

9013 次点击
所在节点    Linux
32 条回复
saar
2016-09-20 11:15:55 +08:00
不用那条 metric 调高就好了
nifury
2016-09-20 11:18:34 +08:00
@saar 试过了
allow-hotplug eth0
iface eth0 inet dhcp
metric 1000

重启看 metric 并没有变化
zsj950618
2016-09-20 11:21:00 +08:00
你需要的是策略路由,从那个网卡进来的从哪个网卡出去。。。
nifury
2016-09-20 11:24:32 +08:00
@zsj950618 嗯是可以这样
然而我还是想只保留一个默认路由
毕竟以后要更新系统,或者跑自己的小程序的时候,如果默认连到内网的话很不方便呢
sylecn
2016-09-20 11:27:59 +08:00
eth0 只连了内网,不需要这个默认路由啊。删掉这个试试:

ip r del default via 172.17.128.2 dev eth0
sylecn
2016-09-20 11:29:03 +08:00
如果确认删除了会自动回来, eth0 设置 static ,手动配置 IP 和 netmask 吧,不写 gateway 就行了。
nifury
2016-09-20 11:31:06 +08:00
@sylecn 谢谢~
然而实际情况是, eth0 连学校内网,是 DHCP 分配 IP 的,我没法手动配置 IP 的呀
jasontse
2016-09-20 11:34:03 +08:00
sylecn
2016-09-20 11:40:43 +08:00
另外一个参考
http://superuser.com/questions/725935/default-route-in-debian-with-two-interfaces

/etc/dhcp/dhclient.conf 添加

interface eth0 {
supersede routers ""
}

表示忽略来自 eth0 的 DHCP 里面的 gateway 信息。
nifury
2016-09-20 11:43:09 +08:00
@jasontse 谢谢~
我装过 ifmetric 然而并没有修改 metric
修改过 dhclient.conf 然而并没有效果
我 /etc/dhcp3/下并没有 dhclient.conf ,所以改的是 /etc/dhcp/下的
不过在 dhcp3 下创建该 conf 也无效
nifury
2016-09-20 11:44:24 +08:00
@sylecn 谢谢~
这个我也看到过
不过并没有效果
cmlz
2016-09-20 11:44:35 +08:00
你两个网卡都是 DHCP 自动获取 IP ?
vi /etc/network/interfaces 贴上你的配置看看。
给你个例子参考下,双网卡配置:
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 120.90.60.131
netmask 255.255.255.240
network 120.90.60.128
broadcast 120.90.60.143
gateway 120.90.60.129
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 8.8.4.4
auto eth0:10
iface eth0:10 inet static
address 192.168.200.118
netmask 255.0.0.0
nifury
2016-09-20 11:46:46 +08:00
@cmlz 谢谢~
是的,都是 DHCP

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
cmlz
2016-09-20 11:51:49 +08:00
eth0 取消 DHCP ,把你 eth0 获取到的 IP 直接写到配置文件好了。
pagxir
2016-09-20 11:57:02 +08:00
关闭本机的反向路由过滤 or 双线策略路由。
xiaooloong
2016-09-20 12:05:44 +08:00
默认路由 == 网关地址

只在一个网卡上配置网关就行了
cmlz
2016-09-20 12:15:36 +08:00
不关闭 eth0 的 DHCP 的话,编辑 /etc/network/interfaces 文件,把下面两行命令加到最后面,应该也行。
down route del -net 0.0.0.0 netmask 0.0.0.0 gw 172.17.128.2 dev eth0
up route add -net 172.0.0.0 netmask 255.0.0.0 gw 172.17.128.2 dev eth0
sylecn
2016-09-20 13:16:43 +08:00
@nifury 修改后有没有 kill 掉已经启动的 dhclient 进程?不 kill 应该不生效的。
nifury
2016-09-20 13:23:39 +08:00
@sylecn 我修改后都是重启电脑的
nifury
2016-09-20 13:26:44 +08:00
@cmlz 唔,我需要 DHCP 的,因为两个校区分配的 IP 段不一样
而增加那两行命令也没有效

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/307455

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX