树莓派有线网口连接一台交换机,地址10.10.10.12,交换机不连外网。
无线网口连接WIFI,地址192.168.0.201
设想是树莓派通过WIFI连接外网,通过有线连内网跑一个正在写的程序
配置好后发现两个网段都可以ping通,但是ping 不通 www.google.com
怀疑是路由表的问题
之前一个小项目上也遇到过linux系统双网卡,分别接内网外网,ping外网地址默认使用内网网卡的问题。
同时我手头有台ubuntu主机也是一样的连接方式,但是没有问题
查看之后发现路由表第一条有问题,所有的包都从eth0发出去了
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 303 0 0 eth0
之前遇到过类似的问题,发现是路由的配置问题,并且问题出在先配置无线,再配置有线的情况下,反之就没问题。如果最后配置有线IP,会增加一条新的路由规则,导致数据全部从这个有线网卡发送出去。
这次直接把这条路由删掉,发现也行。
再开机启动里加上就行
sudo route del -net 0.0.0.0/0 eth0
但是加上了不其效果,猜想是相关服务还没启动,加了个time.sleep(20)解决