« freebsd 下的 traceroute | 返回首页 | 推荐一款游戏《卡牌对决》 »

利用 ssh 和 vtund 接入别人的局域网

最近在帮另一办公室的同事调试程序,有些东西远程弄起来比较麻烦,征得同意后,我希望直接连入对方的局域网来弄。但是申请 VPN 权限以及修改对方路由的程序比较繁琐,所以我想找个简单的方法。

首先我在我们办公室的网关上做了个 NAT ,让对方可以 ssh 到我的机器。

阅读 ssh 的手册我发现 openssh 支持一个 -w 参数,用来连接两端的 tun 设备。不过试了半天没有搞定 :( 所以又想了其它办法。

后来,我安装了 vtund 。对方在本机上以 server 模式启动 vtund ,监听本地端口。然后再通过 ssh -R 把本地端口映射到我的机器上。

我的机器以 client 方式启动 vtund ,连接上映射过来的 vtund 服务端口即可。

这个时候,两边使用 ifconfig 均可以查到 tun0 设备。用 ifconfig 设置一下点对点路由。由于两边系统不太一样,分别是 freebsd 和 linux ,语法有细微不同。感觉上 linux 的语法繁琐一些。

接下来,对方机器上设置好 ip 转发,作为网关。我的机器删除原有默认网关,并添加默认网关为对方的 vtun 的 ip 。 另外记得增加一条路由规则,由原网关连入对方 ip 。

一切搞定 :D 我的机器可以自由访问对方的局域网了。

ps. 为了安全,用来接收对方 ssh 登陆的用户特别设置了一下。在 .ssh/authorized_keys 里设置上 permitopen 只允许映射 vtund 的端口,并加上 command 强制允许一个死循环脚本。

这个方法反过来用的话,挺适合在外面不安全的环境上网的。在不安全的环境里,先通过 ssh 连接到自己信任的网络上,建立一个 VPN ,然后再访问其它网络资源。

Comments

如果不能修改网关的NAT,怎么从一个局域网PC,ssh到另一个局域网的PC呢?
看来网易内部大量使用FreeBSD和Linux
看起来好像很复杂啊,学习了
ssh 的 -R 参数就可以了,对方用 ssh -R 登录到你的机器上,然后你就可以用本地的一个端口登录回去。

Post a comment

非这个主题相关的留言请到:留言本