我尝试在 VPS 上设置 OpenVPN,并且能够建立与服务器的连接,但网关未分配给客户端。
这是我的配置文件:
客户端配置:
client
dev tun
proto udp
remote foo.bar 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
redirect-gateway
comp-lzo
verb 3
pull
服务器配置:
port 1194
proto udp
dev tun
ca easy-rsa/2.0/keys/ca.crt
cert easy-rsa/2.0/keys/server.crt
key easy-rsa/2.0/keys/server.key
dh easy-rsa/2.0/keys/dh2048.pem
server 172.30.90.0 255.255.255.192
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
log-append openvpn.log
verb 3
ifconfig 客户端:
tun0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 172.30.90.6 --> 172.30.90.5 netmask 0xffffffff
open (pid 42823)
服务器上的 iptables 规则:
iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT udp -- anywhere anywhere state NEW udp dpt:openvpn
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
我想通过 VPN 路由整个流量。我已经添加了重定向网关,所以它应该可以工作。我真的看不出这里出了什么问题,希望你能帮助我解决这个问题。
答案1
连接VPN后,在客户端运行命令route -n
或netstat -rn
,查看网关地址是否分配。
检查您是否已完成以下操作:
在服务器上:
推送网关至客户端:
将其添加到文件:/etc/openvpn/server.conf
push "redirect-gateway def1"
将其添加到文件:/etc/sysctl.conf
net.ipv4.ip_forward=1
或者发出以下命令来为当前会话设置此变量:
echo 1 > /proc/sys/net/ipv4/ip_forward
发出以下命令来配置 iptables 以正确通过 VPN 转发流量:
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s [vpn client subnet] -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s [vpn client subnet] -o eth0 -j MASQUERADE
答案2
尝试删除:
redirect-gateway
在客户端配置中。
您已经redirect-gateway
通过push
服务器机制推送配置,并且只有在这种情况下您才会使用正确的参数发送它(def1
)。
没有参数的行为redirect-gateway
取决于 openvpn 版本(并且您没有指定具体的版本),因此最好谨慎行事。
如果这没有帮助,我会看到不同的可能问题。
我建议进行以下故障排除:
- 检查是否可以 ping 通隧道的另一端
- 如果是,请尝试手动添加指向隧道远端的默认网关,然后尝试 ping 8.8.8.8(以消除通过隧道推送的 DNS 中可能存在的问题)
- 如果这不起作用,你的问题可能出在 nat 配置中(你没有发布结果
iptables -L -t nat
)或转发配置中 - 如果这样可行,但 ping www.google.com 却不成功,则问题可能出在 DNS 配置上