1
uil330 OP 工作需求,要树莓派装上 4G 模块,然后把程序 A 的数据通过 4G 模块传到某个指定的服务器。
而其他程序还有系统本身的数据都要通过 LAN 传到本地的服务器。LAN 无法访问互联网。 类似于这种构造: 远程服务器 | | 本地服务器 | | 4G 模块 LAN | | |-------|-----------| 树莓派 但是如果一开 LAN 的话程序 A 的数据默认通过 LAN 传输,导致无法连接上远程服务器。 虽然知道 route 命令能指定 ip 走某个网卡,但是如果不设定网关的话结果还是传不出去: 类似于: 这个不行 sudo route delete -host 119.63.197.151 dev enp2s0 但是这个行 sudo route delete -host 119.63.197.151 gw 172.16.6.5 dev enp2s0 然而 4g 模块的网关是拨号后才定了,而且由于那个模块有问题经常重启,每次重启后虽然能自动获取 ip,但是网关就变了。 请问有什么好的方法? |
2
ysc3839 2020-03-11 19:51:58 +08:00 via Android
我只知道 OpenWrt 上面有个脚本叫 mwan3,可以配置不同目标 IP 走不同的接口,不需要手动指定网关地址,接口断开再连接也能工作。
还有个办法是修改程序 A 的代码,绑定某个网络接口。 |
3
SGTeam 2021-03-22 23:28:43 +08:00
试试? ForceBindIP-将任何 Windows 应用程序绑定到特定界面
ForceBindIP 是一个免费的 Windows 应用程序,它将自己注入到另一个应用程序中,并更改某些 Windows 套接字调用的方式,从而允许您强制另一个应用程序使用特定的网络接口 / IP 地址。如果您在具有多个接口的环境中,并且您的应用程序没有用于绑定到特定接口的此类选项,则此选项很有用。 经过测试可与 ForceBindIP 配合使用的某些程序包括 DC ++,uTorrent,Quake II,Quake III,Diablo II,StarCraft,Internet Explorer,Mozilla Firefox,Google Earth,步兵,Real Player,Unreal Tournament 2004 (需要-i ),Outlook 2000 (需要-i )。无效的程序包括 GetRight (反调试器 /分叉技术),WinCVS (分叉 cvs.exe ) 您可以简单地创建快捷方式,使用 IP 地址和程序作为参数,使用 ForceBindIP 启动应用程序: |
4
uil330 OP 解决了,给大家一个思路:
我是写了一个脚本,检测网卡是否有网线插入,如果插入后根据当前网段,在路由表里面添加指定 ip 走指定网卡的命令 虽然不是最优解,但是因为够用了所以就这样子了 如果有更好的方法欢迎共享 |