我正在使用 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 的默认路由呢?
1
saar 2016-09-20 11:15:55 +08:00
不用那条 metric 调高就好了
|
2
nifury OP |
3
zsj950618 2016-09-20 11:21:00 +08:00
你需要的是策略路由,从那个网卡进来的从哪个网卡出去。。。
|
4
nifury OP |
5
sylecn 2016-09-20 11:27:59 +08:00
eth0 只连了内网,不需要这个默认路由啊。删掉这个试试:
ip r del default via 172.17.128.2 dev eth0 |
6
sylecn 2016-09-20 11:29:03 +08:00
如果确认删除了会自动回来, eth0 设置 static ,手动配置 IP 和 netmask 吧,不写 gateway 就行了。
|
8
jasontse 2016-09-20 11:34:03 +08:00 via iPad
|
9
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 信息。 |
10
nifury OP @jasontse 谢谢~
我装过 ifmetric 然而并没有修改 metric 修改过 dhclient.conf 然而并没有效果 我 /etc/dhcp3/下并没有 dhclient.conf ,所以改的是 /etc/dhcp/下的 不过在 dhcp3 下创建该 conf 也无效 |
12
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 |
13
nifury OP @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 |
14
cmlz 2016-09-20 11:51:49 +08:00
eth0 取消 DHCP ,把你 eth0 获取到的 IP 直接写到配置文件好了。
|
15
pagxir 2016-09-20 11:57:02 +08:00 via Android
关闭本机的反向路由过滤 or 双线策略路由。
|
16
xiaooloong 2016-09-20 12:05:44 +08:00
默认路由 == 网关地址
只在一个网卡上配置网关就行了 |
17
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 |
24
cmlz 2016-09-20 13:55:56 +08:00
|
25
cmlz 2016-09-20 14:04:05 +08:00
把你的 /etc/network/interfaces 配置这样改:
auto lo iface lo inet loopback allow-hotplug eth0 iface eth0 inet dhcp down route del -net 0.0.0.0 dev eth0 #eth0 激活后删除默认路由 allow-hotplug wlan0 iface wlan0 inet manual wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf |
26
nifury OP |
28
JamesRuan 2016-09-20 18:23:36 +08:00
“因为系统默认回复到 eth0 导致 TCP 连接无法建立”怎么可能吗?
是因为 sshd 开在 wlan up 之前吗? 如果不是的话,无论如何,如果按 0.0.0.0:22 进行 listern 的话,自然可以连接上啊? |
29
catror 2016-09-20 18:23:45 +08:00 via Android
把内网的网关删除,手动加一条内网的路由,只路由内网地址
|
30
allen2000 2016-09-20 18:27:50 +08:00
D.2.7. Altering existing routes with ip route change
Occasionally, you'll want to remove a route and replace it with another one. Fortunately, this can be done atomically with ip route change. Let's change the default route on tristan with this command. Example D.24. Altering existing routes with ip route change [root@tristan]# ip route change default via 192.168.99.113 dev eth0 [root@tristan]# ip route show 192.168.99.0/24 dev eth0 scope link 127.0.0.0/8 dev lo scope link default via 192.168.99.113 dev eth0 from: http://linux-ip.net/html/tools-ip-route.html |
31
catror 2016-09-20 18:32:38 +08:00 via Android
噢,是 DHCP 的啊…我有一台设备也是同时接内外网,不过地址都是静态的,内网不配置网关,然后加一条指向内网的网关的路由给内网地址使用就行
|
32
allen2000 2016-09-20 18:32:50 +08:00
可能还需要运行一下, ip route flush cache
If you do use the ip route change command, you should be aware that it does not communicate a routing table state change to the routing cache, so here is another good place to get in the habit of using ip route flush cache. |