如何通过VPN访问服务器内网HTTP服务?配置问题排查求助
问题排查求助
我有一台同时运行OpenVPN服务器和HTTP服务的机器,HTTP服务未暴露至公网,仅允许通过VPN访问。目前VPN可正常连接并访问互联网,但无法访问内网HTTP服务,推测可能是OpenVPN缺少相关配置,希望得到排查方向的帮助。我使用firewalld作为防火墙,当前配置如下:
server (active) target: DROP icmp-block-inversion: yes interfaces: eth0 sources: services: dhcpv6-client http https ports: 22/tcp 1194/udp protocols: forward: no masquerade: yes forward-ports: source-ports: icmp-blocks: echo-request rich rules: tunnel (active) target: ACCEPT icmp-block-inversion: no interfaces: tun0 sources: services: ports: protocols: forward: no masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
我的OpenVPN配置如下:
port 1194 proto udp dev tun user nobody group nogroup persist-key persist-tun keepalive 10 120 topology subnet server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "dhcp-option DNS 94.140.14.14" push "dhcp-option DNS 94.140.15.15" push "redirect-gateway def1 bypass-dhcp" dh none ecdh-curve prime256v1 tls-crypt tls-crypt.key crl-verify crl.pem ca ca.crt cert server_JgSbRjw5qgxxQzwc.crt key server_JgSbRjw5qgxxQzwc.key auth SHA256 cipher AES-128-GCM ncp-ciphers AES-128-GCM tls-server tls-version-min 1.2 tls-cipher TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256 client-config-dir /etc/openvpn/ccd status /var/log/openvpn/status.log verb 3
排查方向
- 确认HTTP服务监听地址:检查HTTP服务是否绑定
0.0.0.0或VPN网段(10.8.0.0/24),若仅绑定eth0内网IP或127.0.0.1,VPN客户端无法访问。执行ss -tulpn | grep 80(替换为实际HTTP端口)查看监听地址。 - 检查内核IP转发:临时开启执行
echo 1 > /proc/sys/net/ipv4/ip_forward;永久开启则编辑/etc/sysctl.conf,添加net.ipv4.ip_forward=1后执行sysctl -p。 - 调整firewalld转发规则:当前
server区域forward设为no,需允许VPN网段流量转发。可添加富规则:firewall-cmd --zone=server --add-rich-rule='rule family="ipv4" source address="10.8.0.0/24" accept' --permanent,再执行firewall-cmd --reload。 - 验证客户端路由配置:若HTTP服务在服务器本机或其他内网网段,需在OpenVPN配置中添加
push "route 内网网段 子网掩码"(比如push "route 192.168.1.0 255.255.255.0"),确保客户端有对应路由。 - 测试服务器本地连通性:在服务器上用VPN网关IP(10.8.0.1)访问HTTP服务,若不通则说明服务未监听VPN网卡;若通则排查防火墙和客户端路由。
- 添加firewalld服务允许规则:在
server区域添加允许VPN网段访问HTTP的规则:firewall-cmd --zone=server --add-rich-rule='rule family="ipv4" source address="10.8.0.0/24" service name="http" accept' --permanent,重载防火墙后测试。
内容的提问来源于stack exchange,提问作者itsu
相关产品推荐
相关产品推荐

