连接到 OpenVPN 后互联网无法工作。
我在 Linux 服务器上安装了 OpenVPN。并尝试从我的 Windows 10 连接到它。但连接后我无法打开任何网站。
我的客户端配置:
client
dev tun
proto udp
sndbuf 0
rcvbuf 0
remote <ip_removed> 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
comp-lzo
setenv opt block-outside-dns
key-direction 1
verb 3
auth SHA512
服务器配置:
port 1194
proto udp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-auth ta.key 0
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
#push "redirect-gateway def1 bypass-dhcp"
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem
无需连接 VPN:
>nslookup
Address: 192.168.3.1
连接到 VPN 后:
>nslookup
Address: 8.8.8.8
ping 也不起作用。
服务器上的 IP 转发已启用:
# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
我的防火墙有下一条规则:
$ sudo ufw allow 22
$ sudo ufw allow 80
$ sudo ufw allow 443
$ sudo ufw allow 1194
root@me:~# cat /etc/rc.local
#!/bin/sh -e
iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -I INPUT -p udp --dport 1194 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to <external-IP-of-my-server>
哪里有问题?
答案1
您可以尝试使用工具进行调试(在 Windows 上,我认为traceroute
它被命名为)。查看数据包被阻止的位置:如果出现服务器内部 IP(然后数据包丢失),则 IP 转发(服务器上的路由表、NAT)存在问题。如果没有出现服务器 IP,则服务器或客户端的防火墙存在问题。tracert
10.8.0.1
如果您可以提供客户端和服务器的路由表,并用它ping
来验证 VPN 内部客户端和服务器之间的可达性(iptables
在服务器上添加允许 ICMP 的规则后),那就更好了。
答案2
您能从 Windows 客户端 (可能是 10.8.0.1) ping 您的 OpenVPN 服务器吗?
您是否在服务器机箱上具有伪装(也称为 NAT),并配置了防火墙以允许传出和传入的转发数据?
sysctl 中是否启用了 IP 转发?
答案3
关于防火墙规则
$ sudo ufw allow 22
$ sudo ufw allow 80
$ sudo ufw allow 443
$ sudo ufw allow 1194
您允许从外部访问您的服务器。(SSH、HTTP(S) 和 OpenVPN)您不是允许从 vpn(可能是 tun0)转发到 Internet(可能是 eth0),并且您没有进行伪装(重写发件人地址)。
这是通过简单的 iptables 规则存档的,例如看这里: https://arashmilani.com/post?id=53
谨致问候 margau