树莓派有线连接ipv6

由于办公室使用了不支持ipv6的路由器,路由器下面的设备都无法使用ipv6。想到树莓派只是无线连接到路由器,还有一个有线网口空着,把它连到路由器上层的交换机上不就可以使用ipv6了吗?一试果然可以。但也存在一个问题,那就是默认路由的问题。树莓派默认优先使用有线连接(eth0)的路由,而不是无线(wlan0)的路由。这样的问题在于 wlan0 登录了学校账号可以连外网而 eth0 没有登录学校账号,ipv4不能连外网,但是ipv6连外网不用登录账号。于是树莓派只能访问ipv6的网络,而ipv4则无法访问外网。我不想再在 eth0 上登录账号,所以想着让 wlan0 为默认网络,这样就可以连外网了,而对于 ipv6,则因为只有 eth0 通自然会选择通过 eth0 连接,这样 ipv4 和 ipv6 就都能用了。最初,菜单->首选项->高级网络配置=>常规中的“自动以优先级连接”的设置试了,根本不管用,不管是把有线无线的分别设成0和1还是1和0,重启后发现都是默认优先使用eth0,route -n结果如下

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.168.0.1      0.0.0.0         UG    100    0        0 eth0
0.0.0.0         192.168.0.1     0.0.0.0         UG    600    0        0 wlan0
10.168.0.0      0.0.0.0         255.255.0.0     U     100    0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.0.0     0.0.0.0         255.255.255.0   U     600    0        0 wlan0

于是尝试将如下代码加到 /etc/rc.local 中

  /usr/sbin/route del default gw 192.168.0.1 dev wlan0
  /usr/sbin/route add default gw 192.168.0.1 dev wlan0 metric 50  #设置wlan0优先级高于eth0

让它开机启动时就重设 eth0 的 metric 使之小于 eth0 的 100(小的优先)从而优先使用 wlan0。谁知道,这样设置后重启发现无法连到树莓派了!无奈只能关机拔卡,通过读卡器修改 rc.local,改回原来的样子(得用 linux 去读,因 rc.loca l在 ext4 分区上,为增加通用性,加了一句 sh /boot/mystart.sh,然后在 fat 分区上的 mystart.sh 里设置自定义启动命令)。插回卡,重启树莓派,结果依然是连不上(我一直都是通过内网 ip 连接的,即 wlan0 的网络)。后来想到会不会是无线网出了问题,于是把有线从交换机上拔下来插到路由器上,使之也成为内网,自动分配了一个内网IP,通过这个IP连上了,一看果然是无线网没有连接!于是连接上无线网,没发现什么异常。想来应该是重启前我恰好升级了一下软件包,里面应该包括无线网相关的,应该是升级后的无线网需要重新设置,产生了这么一个坑。于是尝试把上面两句 route 命令加回到 /boot/mystart.sh 里,再次重启尝试,诡异的是依然无法连接!不就无线网的 ip 无法连接,就连有线网的内网 ip(有线网还插在路由器上)也无法连接!而且有意思的是,无线网完全无法 ping 通,而有线网可以 ping 通但是无法连接。我猜测是由于此时网关是下面的样子

0.0.0.0         192.168.0.1     0.0.0.0         UG    50    0        0 wlan0
0.0.0.0         192.168.0.1     0.0.0.0         UG    100   0        0 eth0
...

此时 wlan0 根本不通,只能通过 eth0 去连树莓派,即数据是从 eth0 进来的,然而数据从树莓派往外走时却从 wlan0 往外走,自然走不通。于是想到,做个判断,只有当 eth0 默认路由到 10.168.0.0 网络时才进行上面设置,否则不进行改变,这样即使无线不通也可以通过有线插路由器来访问。于是 /boot/mystart.sh 设置如下

#!/bin/sh
/usr/sbin/route -n |grep '^0\.0\.0\.0 *10\.168.*eth0' #eth0是否接到校园网(10.168开头)
if [ $? -eq 0 ]; then #上面判断为是
  /usr/sbin/route del default gw 192.168.0.1 dev wlan0
  /usr/sbin/route add default gw 192.168.0.1 dev wlan0 metric 50  #设置wlan0优先级高于eth0
fi

这回把网线插回交换机,重启树莓派,终于有线无线都通了。最终路由如下

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    50     0        0 wlan0
0.0.0.0         10.168.0.1      0.0.0.0         UG    100    0        0 eth0
10.168.0.0      0.0.0.0         255.255.0.0     U     100    0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.0.0     0.0.0.0         255.255.255.0   U     600    0        0 wlan0

顺便说下鼠标飘的问题

通过 vnc 连接到树莓派,总感觉鼠标很飘,有延迟。网上说在 /boot/cmdline.txt 最后一行添上

usbhid.mousepoll=0

即可。试了下,似乎管点用,但仍然有些飘。又试着把上面一句写在原来一行的最后而不是新建一行,结果也没什么改变,就先这样吧。

你可能感兴趣的:(树莓派有线连接ipv6)