前言
最近想直接通过打洞的方式实现公司和家里的内网可以相互访问,方便在家里可以用服务器跑一些东西。试了一些国内外的相关软件,使用的方式都差不多,这里总结下自己折腾的借助三方软件的方式,实现的windows和linux下的内网穿透。这里以国内蒲公英为例,因为是国内的,所以速度会比国外的快很多。国外的因为服务器在国外,延迟会比较高,体验不太好。
Windows端
先简化下网络图
我要实现的是家里内网和公司内网通过虚拟网络可以实现互通,其实,方法也很简单,一共也就是三步:
- 通过在内网的一台pc上安装三方软件,获取虚拟内网的ip地址,比如上面的pc1的oray_vnc就是三方软件虚拟出的网卡,它的ip地址是:172.16.0.214,同理PC3也是一样。
- 实现内网中虚拟网卡和普通网卡共享网络,这样两个网卡就可以实现互通。
- 添加路由关系,实现内网中的请求通过虚拟网口,转发到对应的地址上。
接下来,详细说下这三步具体应该如何操作,分配虚拟ip直接按照三方软件的说明来就好了,很简单。有了虚拟网卡后,进行本地网卡和虚拟网卡的网络共享。首先,打开注册表:
修改这里的地址为本地分配的虚拟网卡的地址。
本地网卡中的共享选中虚拟网卡,进行网络共享。
添加路由关系:
route add 192.168.1.0/24 172.16.1.130
两边都需要添加路由关系,才能相互通信,如果只是单方面通信,可以只添加一边的。
Linux端
linux的步骤和windows下差不多,只不过虚拟网卡和本地网卡的数据转发通过配置nat来实现:
先打开ipv4转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
这里先说下,linux我用的两个虚拟网卡的ip分别是:172.16.0.237和172.16.1.81。
配置nat转发:
iptables -t nat -A POSTROUTING -o oray_vnc -j MASQUERADE
添加路由:
route add -net 192.168.1.0/24 gw 172.16.0.237
实现内网互相通信:
最后
我是直接通过内网进行打洞的,所以延迟会高一点,我测试的延迟平均基本是70、80左右,如果公司有公网ip的话,延迟基本也就10左右,但是平时访问的话这个速度也没什么问题。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。