![OpenVPN 2.1.4 在 CentOS VPS 服务器上运行存在的问题](https://linux22.com/image/545717/OpenVPN%202.1.4%20%E5%9C%A8%20CentOS%20VPS%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E8%BF%90%E8%A1%8C%E5%AD%98%E5%9C%A8%E7%9A%84%E9%97%AE%E9%A2%98.png)
我有一台装有 Media Temple 的 VPS 服务器,运行 CentOS 并安装了 Plesk Parallels。它有一个 VPN 模块,我最终想配置它以允许多个客户端连接到 VPN 服务器,并能够通过 VPN 服务器路由所有 Web 和本地流量。这是服务器配置:
#
# Automatically generated by Plesk VPN module
#
lport 1194
ifconfig 10.yy.xx.1 255.255.255.252
daemon
secret /usr/local/psa/var/modules/vpn/vpn-key
writepid /usr/local/psa/var/modules/vpn/openvpn.pid
mtu-disc yes
comp-lzo
dev tap
float
keepalive 10 60
ping-timer-rem
resolv-retry infinite
push "dhcp-option DNS 10.yy.xx.1"
在客户端我有以下配置:
#
# Automatically generated by Plesk VPN module
#
remote xcxcxcx.com
nobind
rport 1194
ifconfig 10.xx.yy.2 255.255.255.252
secret vpn-key
comp-lzo
dev tap
float
keepalive 10 60
ping-timer-rem
resolv-retry infinite
route-gateway 10.xx.yy.1
redirect-gateway
我应该提到,虽然评论说这些文件是自动生成的,但它们自创建以来就被手动修改过。目前我可以连接到 VPN 服务器,甚至可以 ping 网关 10.xx.yy.1,但当我 ping google.com 时,它超时了。它正确地将域解析为 IP,但似乎没有数据流。我完全不知所措。有什么建议吗?
答案1
您是否在 VPN 服务器上开启了 IP 转发?
echo 1 > /proc/sys/net/ipv4/ip_forward
答案2
server.conf 注释说明了有关重定向网关指令的内容,可能会有所帮助:
如果启用,此指令将配置所有客户端通过 VPN 重定向其默认网络网关,导致所有 IP 流量(例如 Web 浏览和 DNS 查找)都通过 VPN(OpenVPN 服务器机器可能需要将 TUN/TAP 接口 NAT 到互联网以使其正常工作)。
警告:如果客户端的本地 DHCP 服务器数据包通过隧道路由,可能会破坏客户端的网络配置。解决方案:确保客户端的本地 DHCP 服务器可以通过比默认路由 0.0.0.0/0.0.0.0 更具体的路由访问。
答案3
好的,以下是有效的方法:
iptables -A INPUT -i tap+ -j ACCEPT
iptables -A FORWARD -i tap+ -j ACCEPT
RETURN all -- 0.0.0.0/0 10.66.77.0/30
SNAT all -- 10.66.77.0/30 0.0.0.0/0 to:72.10.36.151
第二部分用于替代 MASQUERADING,因为 MASQUERADING 在虚拟化容器环境中不可用。可以使用 lsmod 找到的 iptables 模块根本没有被主机加载。使用的两条规则确保流量在 VPN 子网和互联网之间流动。感谢 Irosa 提供的帮助,提出了一些新想法。