已连接到 openvpn,但没有 Internet 连接

Jod*_*255 9 linux vpn openvpn arch-linux

我在远程服务器上有 openvpn,它是 Arch Linux。我能够连接到它,但连接后没有互联网,这意味着,当我打开浏览器并尝试加载网站时,它会在“查找...”中获取库存

两边都没有错误。服务器不在 NAT 后面,据我所知,我是 - 客户端 - 是。

服务器上没有防火墙。

路由相关的东西,转发我图?

Ale*_*hev 16

我检查了你的日志,没有发现任何问题。但是你说有No firewall on the server。这可能会导致问题,因为您应该为工作 NAT 启用转发。这是guide 的输出。

飞翔

为了配置 VPN 流量的 ufw 设置,首先将以下内容添加到 /etc/default/ufw:

DEFAULT_FORWARD_POLICY="ACCEPT"
Run Code Online (Sandbox Code Playgroud)

现在更改 /etc/ufw/before.rules,并在标题之后和“*filter”行之前添加以下代码。不要忘记更改 IP/子网掩码以匹配 /etc/openvpn/server/server.conf 中的 IP/子网掩码。示例中的适配器 ID 通常称为 eth0,因此请相应地为您的系统编辑它。

/etc/ufw/before.rules

# NAT (Network Address Translation) table rules
*nat
:POSTROUTING ACCEPT [0:0]

# Allow traffic from clients to eth0
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

# do not delete the "COMMIT" line or the NAT table rules above will not be processed
COMMIT
Run Code Online (Sandbox Code Playgroud)

打开 OpenVPN 端口 1194:

# ufw allow 1194
Run Code Online (Sandbox Code Playgroud)

最后,重新加载 UFW:

# ufw reload
Run Code Online (Sandbox Code Playgroud)

iptables

为了允许 VPN 流量通过您服务器的 iptables 防火墙,首先在服务器上为 NAT 转发 [3] 创建一个 iptables 规则,假设您要转发到的接口名为 eth0:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)

并且不要忘记在 sysctl 中启用转发

sysctl -w net.ipv4.ip_forward=1
Run Code Online (Sandbox Code Playgroud)


Ter*_*nen 5

当您在客户端和 VPN 服务器之间创建 VPN 连接时,两者之间会形成专用网络,地址以 192.168.xx、10.xxx 或 172.16.xx 开头

当您要将流量从 VPN 客户端路由到全球 Internet 时,必须在服务器上使用 NAT,以便将 VPN 客户端的专用网络地址转换为服务器的公共 IP 地址。

这与您的客户端连接是否位于 NAT 之后无关。

因此,除了安装VPN软件外,您还需要在服务器中添加NAT的防火墙规则。