zl程序教程

您现在的位置是:首页 >  其他

当前栏目

低成本用L2TP把物理服务器放到了公网,省了几万块

2023-03-14 22:59:16 时间

距离惠普服务器到手(2020年3月17日)已经过去一年多了,当时幻想着有一台裸金属服务器,能在公网上供自己使用,但是拉专线配公网IP是不可能的,成本太高。因为联通宽带到公网不知道过了几次NAT,导致DDNS也无法成功。很早之前就考虑过VPN的方案,不过一直拖到最近,才验证成功。


如此一来,我就实现了从公网直接访问服务器iLO管理页面,用于远程给服务器开机,之前都是长期开着一台内网电脑来实现;还实现了从公网直接访问VMWare ESXi管理页面,就像公有云一样,服务器整体上云成功!

首先看一眼我的网络架构:

1677215729773.jpg

在此之前,服务器是直接接在联通网关下面的,为了降低360路由器压力,同时尽量保证无线终端安全。但是联通网关和360路由器都不支持配置静态路由(这点不如H3C的家用路由器),导致云主机只能反向访问到L2TP VPN的客户端360路由器,无法跨设备访问。将服务器网关下移到360路由器之后,服务器和腾讯云主机对于360路由器来说都是直连,无需再配置静态路由。


首先在腾讯云主机安装xl2tpd服务,安装完成之后在360路由器扩展功能中选择L2TP客户端,配置好账号信息,并连接到云主机,获取到一个172.2.113.2的地址。

1677215751074.jpg

腾讯云服务器IP地址:

1677215755971.jpg

从服务器ping一下360路由器的地址。

1677215760862.jpg

然后添加一下到内网服务器的路由,为安全起见,仅添加服务器iLO口地址、VMWare ESXi管理地址、路由器网关地址。

1677215773438.jpg

测试一下连通性。

1677215777948.jpg

连通性正常,接下来就是在云主机配置NAT映射,将iLO口管理页面(192.168.1.12,TCP端口443)、VMWare ESXi管理页面(192.168.1.13,TCP端口443)映射到云主机端口。


CentOS上NAT映射是通过iptables来实现的,配置时要注意同时在云主机控制台和系统内部防火墙操作放开防火墙策略,否则无法在公网访问。


在iptables服务中,默认在INPUT表和FORWARD表中配置了匹配规则,拒绝所有不符合配置文件中规则的数据包。所以要先调整/etc/sysconfig/iptables配置文件,注释掉转发的拒绝流量,然后重启iptables服务。

1677215789230.jpg

因为NAT映射这种场景,相当于云主机代理公网流量向L2TP VPN主机发起访问,所以首先要对请求流量的源地址做SNAT,使服务器回包正常返回到云主机上。


操作命令如下,其中使用MASQUERADE是不限制请求发起方的IP,匹配所有流量:


iptables -t nat -A POSTROUTING -j MASQUERADE


对请求云主机的流量再做DNAT,将报文转发到服务器。


iptables -t nat -A PREROUTING -p tcp -m tcp --dport 12443 -j DNAT --to-destination 192.168.1.12:443


iptables -t nat -A PREROUTING -p tcp -m tcp --dport 13443 -j DNAT --to-destination 192.168.1.13:443


见证奇迹的时刻,从公网PC使用域名访问iLO管理页面:

1677215804486.jpg

访问VMWare ESXi管理页面:

1677215820908.jpg

服务器上云成功!可把我牛逼坏了,叉会腰!

在云主机上测试下载速度,从内网下载文件,基本能跑满100M宽带的上行带宽;经过云主机的映射从公网下载文件,能跑满云主机的5M带宽。

1677215826330.jpg