如果成功在ubuntu上部署了openvpn,并且客户端也可以连接到vpn服务器。但无法通过vpn流量转发上网,应该是vpn服务器上的流量转发没有设置。要在Ubuntu上配置VPN服务器以允许流量转发,可以采取以下步骤:
- 启用内核 IP 转发
编辑 /etc/sysctl.conf 文件,取消注释或添加以下行以启用 IP 转发:
sudo vim /etc/sysctl.conf
确保以下行没有注释(没有 # 开头):
net.ipv4.ip_forward=1
保存并关闭文件后,执行以下命令使更改生效:
sudo sysctl -p
- 配置iptables以进行流量转发
使用 iptables 工具配置流量转发。在我的服务器中,VPN接口是 tun0,外部接口是 eth0。
sudo iptables -A FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPT sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
这里的 10.8.0.0/24 是实际使用的VPN IP 地址范围。
保存这些规则并使其在每次系统启动时都生效: sudo iptables-save | sudo tee /etc/iptables/rules.v4
-
持久保存iptables规则 确保在系统重新启动后,iptables 规则得以保留。在 Ubuntu 中,可以通过设置 iptables-persistent 包来实现。
sudo apt-get update sudo apt-get install iptables-persistent
安装过程中会询问是否保存当前的 iptables 规则,选择是。这样就会在系统启动时加载之前保存的规则。
-
重启 OpenVPN 服务 重新启动 OpenVPN 服务,以便应用所做的更改:
sudo systemctl restart openvpn@hk-vpn
完成以上步骤后,应该能够允许VPN服务器上的流量转发,并允许连接到VPN的客户端访问互联网。确保适当修改iptables规则以匹配你的网络配置。