如何使WLAN始终是默认路由?(ip路由列表)


8

每当我将4G调制解调器添加到树莓派时,它都会位于默认路由ou之上ip route list,但是我希望所有内容都通过wlan,并且仅使用4G调制解调器接收SSH连接。

我找到了关于如何禁用默认路由的答案

但是,重新启动后,4G调制解调器会回到顶部。

如何使wlan0始终成为默认规则的第一条规则?

更新:

这是我连接USB加密狗时的dmesg输出:

[426102.910168] usb 1-1.5.1: new full-speed USB device number 6 using dwc_otg
[426103.046670] usb 1-1.5.1: not running at top speed; connect to a high speed hub
[426103.056674] usb 1-1.5.1: New USB device found, idVendor=12d1, idProduct=1f01
[426103.056693] usb 1-1.5.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[426103.056704] usb 1-1.5.1: Product: HUAWEI_MOBILE
[426103.056714] usb 1-1.5.1: Manufacturer: HUAWEI_MOBILE
[426103.056724] usb 1-1.5.1: SerialNumber: 0123456789ABCDEF
[426103.121355] usb-storage 1-1.5.1:1.0: USB Mass Storage device detected
[426103.122875] scsi host0: usb-storage 1-1.5.1:1.0
[426103.987177] usb 1-1.5.1: USB disconnect, device number 6
[426105.470211] usb 1-1.5.1: new full-speed USB device number 7 using dwc_otg
[426105.606666] usb 1-1.5.1: not running at top speed; connect to a high speed hub
[426105.615673] usb 1-1.5.1: New USB device found, idVendor=12d1, idProduct=14dc
[426105.615692] usb 1-1.5.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[426105.615703] usb 1-1.5.1: Product: HUAWEI_MOBILE
[426105.615713] usb 1-1.5.1: Manufacturer: HUAWEI_MOBILE
[426105.766297] usb-storage 1-1.5.1:1.2: USB Mass Storage device detected
[426105.766768] scsi host0: usb-storage 1-1.5.1:1.2
[426105.855053] cdc_ether 1-1.5.1:1.0 eth1: register 'cdc_ether' at usb-3f980000.usb-1.5.1, CDC Ethernet Device, 0c:5b:8f:27:9a:64
[426105.855593] usbcore: registered new interface driver cdc_ether
[426106.785653] scsi 0:0:0:0: Direct-Access     HUAWEI   TF CARD Storage  2.31 PQ: 0 ANSI: 2
[426106.803758] sd 0:0:0:0: Attached scsi generic sg0 type 0
[426106.820687] sd 0:0:0:0: [sda] Attached SCSI removable disk

这是 ip addr

eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 0c:5b:8f:27:9a:64 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::584f:751f:bb3e:e26b/64 scope link 
       valid_lft forever preferred_lft forever

更新2

我再附加几次,直到显示出eth1路线:

[10787.229141] usb 1-1.5: new full-speed USB device number 7 using dwc_otg
[10787.363515] usb 1-1.5: New USB device found, idVendor=05e3, idProduct=0606
[10787.363533] usb 1-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[10787.363544] usb 1-1.5: Product: USB Hub 2.0
[10787.363555] usb 1-1.5: Manufacturer: ALCOR
[10787.365166] hub 1-1.5:1.0: USB hub found
[10787.369831] hub 1-1.5:1.0: 4 ports detected
[10797.419094] usb 1-1.5.1: new full-speed USB device number 8 using dwc_otg
[10797.555636] usb 1-1.5.1: not running at top speed; connect to a high speed hub
[10797.565759] usb 1-1.5.1: New USB device found, idVendor=12d1, idProduct=1f01
[10797.565777] usb 1-1.5.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[10797.565789] usb 1-1.5.1: Product: HUAWEI_MOBILE
[10797.565799] usb 1-1.5.1: Manufacturer: HUAWEI_MOBILE
[10797.565808] usb 1-1.5.1: SerialNumber: 0123456789ABCDEF
[10797.630477] usb-storage 1-1.5.1:1.0: USB Mass Storage device detected
[10797.631101] scsi host0: usb-storage 1-1.5.1:1.0
[10798.472745] usb 1-1.5.1: USB disconnect, device number 8
[10799.469081] usb 1-1.5.1: new full-speed USB device number 9 using dwc_otg
[10799.630768] usb 1-1.5.1: not running at top speed; connect to a high speed hub
[10799.646891] usb 1-1.5.1: New USB device found, idVendor=12d1, idProduct=14dc
[10799.646909] usb 1-1.5.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[10799.646920] usb 1-1.5.1: Product: HUAWEI_MOBILE
[10799.646930] usb 1-1.5.1: Manufacturer: HUAWEI_MOBILE
[10799.814489] usb-storage 1-1.5.1:1.2: USB Mass Storage device detected
[10799.815008] scsi host0: usb-storage 1-1.5.1:1.2
[10799.897788] cdc_ether 1-1.5.1:1.0 eth1: register 'cdc_ether' at usb-3f980000.usb-1.5.1, CDC Ethernet Device, 0c:5b:8f:27:9a:64
[10799.898127] usbcore: registered new interface driver cdc_ether
[10800.889652] scsi 0:0:0:0: Direct-Access     HUAWEI   TF CARD Storage  2.31 PQ: 0 ANSI: 2
[10800.910585] sd 0:0:0:0: Attached scsi generic sg0 type 0
[10800.923297] sd 0:0:0:0: [sda] Attached SCSI removable disk

这是 route -n

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 wlan0
0.0.0.0         192.168.8.1     0.0.0.0         UG    207    0        0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG    303    0        0 wlan0
169.254.0.0     0.0.0.0         255.255.0.0     U     202    0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     204    0        0 docker0
169.254.0.0     0.0.0.0         255.255.0.0     U     206    0        0 veth4557ad2
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U     303    0        0 wlan0
192.168.8.0     0.0.0.0         255.255.255.0   U     207    0        0 eth1

看到我做了ifmetric wlan0,为了能够使用wlan0ssh了我的覆盆子

更新09/10:

allow-hotplug wlan0
iface wlan0 inet dhcp
    up ifmetric wlan0 0
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

这不会使我的wlan0指标为0。我在做什么错?


1
第一步是找出4G调制解调器为何获得默认路由的原因。它可以做DHCP吗?如果是,请找出它的名称(网络管理器?传统的ifup / ifdown?),然后在该调用中配置dhclient等,以不为该特定接口设置默认路由。
dirkt

@dirkt是USB加密狗,因此在连接时默认情况下会获得一个新接口。/ etc / network / interfaces上没有eth1的规则,但这是分配给它的以太网设备。你知道为什么吗?我不知道它是否执行DHCP,界面非常简单,没有更改或外观的高级内容。这是华为的调制解调器。你能帮个忙吗?
Guerlando OC

1
插入USB加密狗之后,请dmesg使用and syslog 的输出(journalctl如果您有systemd,请使用此输出)编辑问题(在stackoverflow上缩进4个空格以进行正确格式化)。
dirkt '18

@dirkt我会在有人帮我插入4G调制解调器后尽快发布dmesg。同时,我如何找到为路由器提供IP地址的东西?我正在使用基于Debian的raspbian,所以您有想法吗?
Guerlando OC

通常,通常是通过调用DHCP来获取IP地址dhclient,或者如果调制解调器使用点对点协议,则可以从该协议获取IP地址。所有这些都应该显示在日志中的某处,这就是为什么我要日志的原因。如果您没有对RaspPi的物理访问权限(您没有提到这一点),ip link或者ip addr还应显示它是否是点对点协议(可能需要详细模式)。
dirkt

Answers:


5

要更改接口的路由优先级,您可以更改指标。

默认情况下,所有均为0,这是最高优先级。因此,您可以执行以下操作:

allow-hotplug eth1
iface eth1 inet dhcp
    up ifmetric eth1 30

ifmetric在Debian中使用,必须先安装它:

sudo apt-get install ifmetric

度量

设置网络接口的路由指标

ifmetric是一个Linux工具,用于立即设置连接到给定网络接口的所有IPv4路由的度量。这可用于更改通过接口路由IPv4流量的优先级。较低的指标与较高的优先级相关。

度量标准0表示优先级最高的路由,它是默认路由。较大的度量值表示优先级较低的路由。度量值最低的活动接口的IP地址将成为源IP地址。参见ifmetric(8)。


1
也许您还应该解释一下,如果存在其他接口,为什么这将有助于从特定接口获取DHCP(而不是忽略它)。
dirkt '18

@dirkt您能更好地解释dhcp吗?我目前有iface wlan0 inet手册,其上为ifmetric wlan0 0,但wlan0指标不会显示为0
Guerlando OCs

1

这是如何覆盖默认路由的老问题。

IPv4的最简单方法是不尝试更改度量标准/优先级,而是拆分路由:

ip route add 0.0.0.0/1 via wlan0-gw
ip route add 128.0.0.0/1 via wlan0-gw

起作用的原因是使用最长匹配前缀搜索来执行路由表查找。仅当存在两条等效的路由时,路由度量才起作用。在这种情况下,这两个路由的1位前缀比默认路由的0位前缀(0.0.0.0/0)长,将首先进行查询。由于这两个路由覆盖整个0.0.0.0/0,因此它们始终优先于默认路由。

另一种方法是将单独的路由表与您喜欢的默认路由一起使用,并添加一条规则以将所有流量发送到该路由表。我从未见过任何会干扰ip规则的自动化,因此它们添加的其他路由也无关紧要。这里的问题是您的自动化程序将无法插入其他路由。

因此,tl; dr:

iface wlan0 inet manual
    up ip route add 0.0.0.0/1 via wlan0-gw
    up ip route add 128.0.0.0/1 via wlan0-gw
    ....

或者(但您还必须将所有其他路由添加到“表5”):

iface wlan0 inet manual
    up ip rule add to 0.0.0.0/0 table 5
    up ip route add default via wlan0-gw table 5
    ....

0

ip route add/del在debian中持久化的一种方法是将它们写成/etc/network/interfaces如下所示:

allow-hotplug eth1
iface eth1 inet dhcp
    post-up ip route del default
    post-up ip route add default via <gateway IP> dev wlan0

我认为这样一来,它只会为每个接口添加一个默认网关,但不会优先使用该网关
Guerlando OCs 18-10-9

好的,我知道,它将排除默认值,并为wlan0添加一个。但是也不会为eth0添加默认值吗?
Guerlando OCs '18 -10-9

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.