对设备进行调试时,需要使用专用4G卡通过给电脑连接手机热点的方式进行调试,同时希望手机可以连接wifi访问互联网
首先添加一条通过4G卡的路由规则,将特定设备的网段指定通过手机物联网卡出站
1 | ip rule add to 100.0.0.0/8 table rmnet_data1 pref 100 |
此时上在手机上已经可以ping通设备IP,说明路由生效了,但是电脑连接手机的过USB网络共享仍然只能访问手机连接的WIFI物联网,无法通过4G网络访问设备IP
查看iptebles的nat表,在tetherctrl_nat_POSTROUTING -o wlan0 -j MASQUERADE前添加一条tetherctrl_nat_POSTROUTING -d 100.0.0.0/8 -o rmnet_data1 -j MASQUERADE 这样就能指定100.0.0.0/8网段的IP通过rmnet_data1接口出站
1 | iptables -t nat -D tetherctrl_nat_POSTROUTING -o wlan0 -j MASQUERADE |
此时USB网络共享的电脑仍然不能访问设备IP,再继续找iptables中的规则,发现filter有一条规则时将tetherctrl_FORWARD的目标全部丢弃tetherctrl_FORWARD -j DROP,可以通过的规则在这条规则前面,需要把这条规则删掉,就可以了
1 | # iptables -t filter -D tetherctrl_FORWARD -i wlan0 -o rndis0 -m state --state RELATED,ESTABLISHED -g tetherctrl_counters |
现在就实现了默认通过WIFI访问互联网,100.0.0.0/8网段通过4G卡访问
TODO: 双4G上网,通过物联网卡访问物联网,通过正常4G访问互联网