You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ArchLinux搭建OpenConnect服务器后客户端无法访问互联网问题求助

ArchLinux搭建OpenConnect服务器后客户端无法访问互联网问题求助

大家好,我在ArchLinux VPS上搭建了OpenConnect服务器,现在Windows客户端能成功连接,但连上后没法访问互联网——ping 8.8.8.8失败,但能正常ping通VPS本身。以下是我已经做的配置和系统状态,麻烦帮忙排查下问题:

已执行的配置命令

首先是创建tun设备并配置IP:

ip tuntap add mode tun dev vpn0
ip addr add 192.168.2.2/24 dev vpn0

重启ocserv服务:

systemctl restart ocserv

配置的iptables规则:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 8443 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

网络接口状态(ip a输出)

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq state UP group default qlen 1000
    link/ether 56:00:04:c4:b9:c3 brd ff:ff:ff:ff:ff:ff
    inet 66.42.108.48/23 brd 66.42.109.255 scope global dynamic noprefixroute enp1s0
       valid_lft 85512sec preferred_lft 85512sec
    inet6 2001:19f0:6001:5689:5400:4ff:fec4:b9c3/64 scope global dynamic noprefixroute
       valid_lft 2591893sec preferred_lft 604693sec
    inet6 fe80::5400:4ff:fec4:b9c3/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: vpn0: <NO-CARRIER,POINTOPOINT,MULTICAST,NOARP,UP> mtu 1500 qdisc fq state DOWN group default qlen 500
    link/none
    inet 192.168.2.2/24 scope global vpn0
       valid_lft forever preferred_lft forever

IP转发状态

已经成功开启IPv4转发:

sysctl net.ipv4.ip_forward
# 输出:net.ipv4.ip_forward = 1

sysctl -a | grep forwarding | grep ipv4
# 输出:
net.ipv4.conf.all.bc_forwarding = 0
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.default.bc_forwarding = 0
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.enp1s0.bc_forwarding = 0
net.ipv4.conf.enp1s0.forwarding = 1
net.ipv4.conf.enp1s0.mc_forwarding = 0
net.ipv4.conf.lo.bc_forwarding = 0
net.ipv4.conf.lo.forwarding = 1
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.conf.vpn0.bc_forwarding = 0
net.ipv4.conf.vpn0.forwarding = 1
net.ipv4.conf.vpn0.mc_forwarding = 0

OpenConnect客户端配置

device = vpns0
tcp-port = 8443
ipv4-network = 192.168.2.0/24
route = default

当前问题

  • 客户端连接成功,但无法访问互联网
  • ping 8.8.8.8失败,但能ping通VPS的公网IP

可能的问题排查方向&解决方案

1. 缺少NAT转发规则(核心问题)

目前你的iptables只配置了INPUT和OUTPUT链,但没有配置POSTROUTING链的NAT规则——这是让VPN客户端流量通过VPS公网接口转发出去的关键。

执行以下命令添加NAT规则(enp1s0是你的公网接口,从ip a输出可确认):

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o enp1s0 -j MASQUERADE

这条规则会把VPN子网(192.168.2.0/24)的流量在通过公网接口转发时,替换成VPS的公网IP,确保外网能正确返回流量。

2. 补充FORWARD链规则

你的iptables当前未配置FORWARD链,而转发流量需要该链允许相关数据包通过。添加以下规则:

iptables -A FORWARD -s 192.168.2.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.2.0/24 -m state --state RELATED,ESTABLISHED -j ACCEPT

第一条允许VPN客户端的流量转发出去,第二条允许外网返回的关联流量回到VPN子网。

3. 激活vpn0接口

从ip a输出看vpn0接口处于state DOWN状态,虽然ocserv可能在连接时自动激活它,但可以手动启动试试:

ip link set vpn0 up

4. 保存iptables规则(避免重启丢失)

如果上述配置生效,记得保存iptables规则:

iptables-save > /etc/iptables/iptables.rules

然后启用iptables.service确保开机自动加载规则:

systemctl enable --now iptables.service

完成以上配置后,重启ocserv服务,重新连接客户端再测试互联网访问。


备注:内容来源于stack exchange,提问作者Dmitry Bubnenkov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 07:18:09