如何将Azure OpenVPN服务器端口路由至本地服务器实现公网访问?
实现Azure OpenVPN端口转发到本地服务器的配置步骤
1. 开启Azure虚拟机的IP转发功能
Azure默认关闭VM的IP转发,必须开启才能让流量转发到VPN内网:
- 使用Azure CLI执行命令(替换
<nic-name>为VM的网卡名称,<rg-name>为资源组名称):az network nic update --name <nic-name> --resource-group <rg-name> --ip-forwarding true - 也可在Azure门户中找到对应VM的网卡,进入「IP配置」页面开启「IP转发」选项。
2. 配置OpenVPN服务器路由,确保能访问本地服务器
编辑OpenVPN服务器配置文件(通常路径为/etc/openvpn/server.conf):
- 添加路由规则,指向本地服务器所在的VPN网段(假设本地服务器连接VPN后分配的网段是
10.8.0.0/24):push "route 10.8.0.0 255.255.255.0" - 重启OpenVPN服务使配置生效:
systemctl restart openvpn@server
注意:本地服务器需通过OpenVPN客户端连接到Azure服务器,确保能获取到VPN内网IP,且Azure服务器能ping通该IP。
3. 配置iptables端口转发规则
3.1 开启内核IP转发
- 临时生效:
echo 1 > /proc/sys/net/ipv4/ip_forward - 永久生效:编辑
/etc/sysctl.conf,将net.ipv4.ip_forward修改为net.ipv4.ip_forward=1,然后执行:sysctl -p
3.2 添加DNAT和SNAT规则
替换<本地服务器VPN内网IP>为本地服务器连接VPN后获取的实际IP(比如10.8.0.10):
- DNAT规则:将公网IP的8080端口流量转发到本地服务器的8080端口
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination <本地服务器VPN内网IP>:8080 - SNAT规则:确保本地服务器的返回流量通过VPN回传给公网请求方
iptables -t nat -A POSTROUTING -d <本地服务器VPN内网IP> -p tcp --dport 8080 -j MASQUERADE
3.3 保存iptables规则
- Ubuntu/Debian系统:
iptables-save > /etc/iptables/rules.v4 - CentOS/RHEL系统:
service iptables save
4. 验证配置
- 从公网环境访问
Azure公网IP:8080,测试是否能正常访问本地服务器的8080端口服务 - 若访问失败,检查以下内容:
- Azure网络安全组(NSG)是否已开放8080端口的入站规则
- OpenVPN客户端是否正常连接,Azure服务器能否ping通本地服务器的VPN内网IP
- iptables规则是否生效,可执行
iptables -t nat -L查看规则列表
内容的提问来源于stack exchange,提问作者TuroTV
相关产品推荐
相关产品推荐

