为什么我的 3G 密钥会阻塞我的 eth0 接口以及如何解决此问题?

为什么我的 3G 密钥会阻塞我的 eth0 接口以及如何解决此问题?

我有一台 Linux PC (Debian Squeeze),它位于另一个城镇的一个房间里(我无法从我所在的地方物理访问这台 PC)

这台电脑使用互联网盒连接到互联网。我可以使用 ssh 通过端口 22 连接到这台 PC(实际上我有一个从远程盒子端口 XXXX 到 PC 端口 22 的 NAT)。

我的一位同事连接了 3G 密钥。然后我用萨基斯脚本将这台电脑连接到 3G 网络,然后我的 ssh 连接被挂起(管道损坏)。我的同事仍然可以使用 ssh 从他的本地网络访问 PC;我不能。

3G 连接停止外部 ssh 连接的原因是什么?如何解决此问题(在建立 3G 连接时保持 ssh 连接打开)?

编辑:附加信息

我在 3G 脚本启动之前使用 NAT 连接

eth0 的 IP 没有改变(我用来连接的接口)

3G连接后添加新接口:ppp0 Link encap:Point-to-Point Protocol

ip 路由(3G 连接之前)

172.16.210.0/24 dev br0  proto kernel  scope link  src 172.16.210.254 
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.50 
default via 192.168.0.254 dev eth0 

ip 路由(3G 连接后)

10.64.64.64 dev ppp0  proto kernel  scope link  src 10.99.122.183 
172.16.210.0/24 dev br0  proto kernel  scope link  src 172.16.210.254 
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.50 
default via 10.64.64.64 dev ppp0 

答案1

运行该脚本后,您的默认路由指向另一个接口。你的 ssh 连接的数据被发送到那里,但被丢弃,因为它们有错误的地址,被 3G 网络 NAT 到一些不相关的地址,和/或其他什么。

解决方案:添加显式路由。变量 $SSH_CLIENT 告诉您连接来自哪里。

# set $SSH_CLIENT
# ip route replace $1 via 192.168.0.254 dev eth0

应该可以解决你的问题。

相关内容