移远4G模块与有线网卡路由冲突
上位机设置路由表
设置网关,设置前要删除之前网关(192.168.1.1替换成要设置的网关地址)
sudo route del default gw 192.168.1.1
sudo route add default dev enp1s0
4G拨号脚本
问题:防止在内网环境中使用公网IP段
解决方案:去除拨号脚本中iptables设置的规则。
问题:4G网卡偷跑流量
解决方案:使用route设置路由表指定IP通过4G网卡
拨号脚本添加代码
echo "123456" | sudo -S route add default dev enp1s0 metric 100
if [ ! -f /etc/ppp/ip-up.local ]; then
echo "123456" | sudo -S touch /etc/ppp/ip-up.local
echo "123456" | sudo -S chmod 777 /etc/ppp/ip-up.local
# 通过4G的ip地址
echo "route add 120.77.148.139 dev ppp0" >> /etc/ppp/ip-up.local
echo "route add 132.163.96.6 dev ppp0" >> /etc/ppp/ip-up.local
fi
案例
工控板上Ubuntu系统的设置网关功能与4G功能不兼容
现象
在使用4G模块的情况下开机,在相应软件中测试所需链接的平台,提示「主机不能访问」
原因
- 开机后4G模块需要时间挂载初始化,否则偶尔拨不上号
- 当程序设置默认网关时,网关会覆盖4G网卡的默认网关,导致4G无法通信
解决方案
- 启动脚本中运行拨号脚本前增加延时5S,确保4G模块准备好了再进行拨号
- 修改设置网关的逻辑,使ppp0始终保持有默认路由,且不影响当前默认网关的使用
流程图
设置网关
graph LR
START(开始) --> Q1{自动或手动设置IP?}
Q1 --> 手动设置IP
手动设置IP --> 重启网卡
重启网卡 --> 设置网关
设置网关 --> 处理ppp0
处理ppp0 --> END(结束)
Q1 --> 自动获取IP
自动获取IP --> 处理ppp0
处理ppp0
graph LR
START(开始) --> 查看当前路由
查看当前路由 --> 记录当前默认网关
记录当前默认网关 --> Q1{是否包含ppp0}
Q1 --否--> END(结束)
Q1 --是--> 删除所有默认路由
删除所有默认路由 --> 重新设置已记录的网关
重新设置已记录的网关 --> 重新设置ppp0网关
重新设置ppp0网关 --> END(结束)