一、前序工作介绍
上周我们分享了一篇 没有公网IP?来试试异地组网和端口映射的这种方式吧,我们使用 ZeroTier 完成了虚拟局域网的组网以及通过 Nginx 动态反向代理来暴露本地的一些 Web 服务到公网上,但我们的需求还不止如此。
今天我们要实现的需求是,加入了 虚拟局域网的节点 都能随时随地的访问 公司内部 的服务器资源。
二、网络环境说明
我们使用 zerotier 组网之后,当前的网络拓扑如下:
如上图所示,目前我们需要访问办公网络中的 其他服务 有几个办法:
- 先远程桌面连接办公网络中的
Mac-Mini(10.0.0.4),再连接公司网络中的其他服务; - 在办公网络中搭建
VPN,然后通过VPN访问其他网络; - 在
CentOS7或者Mac-Mini上做NAT路由到公司网络,然后再访问; - ....
这里我们选择了第三种,因为:
- 方法1 过于麻烦,需要远程桌面的支持,手机支持不够友好;
- 方法2 在
iPhone上有问题,无法同时连接多个VPN服务;
三、开始实施
我们决定拿
CentOS7(10.0.0.8)来做NAT路由,因为24小时开机,也不想拿 Mac 来瞎搞。
首先,我们需要在 zerotier 中为公司网络做一跳路由,即访问 10.149.0.0/21 的流量,都跳到 10.0.0.8 上:
10.149.0.0/21 -> 10.0.0.8
然后开启 10.0.0.8 的网络桥接:
然后,在 10.0.0.8 上使用 iptables 做 NAT 路由,即是网络拓扑中红色虚线的部分。
1. 开启 IPv4 转发功能:
# 编辑配置文件
vi /etc/sysctl.conf
# 修改或添加
net.ipv4.ip_forward=1
# 应用
sudo sysctl -p
2. 配置 iptables 规则
ztmjfpapwa是zerotier虚拟网卡,ens192是CentOS7的网卡名称。
# 添加转发规则
sudo iptables -A FORWARD -i ztmjfpapwa -o ens192 -d 10.149.0.0/21 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o ens192 -d 10.149.0.0/21 -j MASQUERADE
# 保存规则
sudo service iptables save
# 查看生效状态
sudo iptables -L -v -n
sudo iptables -t nat -L -v -n
3. 搞掂~
接下来,我们就可以使用 10.0.0.0/24 段的任何虚拟组网的设备直接访问公司内部的 10.149.0.0/21 段内的服务器资源了。
四、总结
经过本次的改造,可以实现了随时随地访问公司内网资源,全程不涉及任何的 账号密码、跳板机 什么的,只要拉进虚拟局域网里即可,而且还可以远程使用公司的 打印机 扫描仪 监控 等设备。
本篇文章又水完了,如果对你有帮助,欢迎给我们三连,也可以关注我们的其他专栏和文章。
Bye.