我的 Openvpn 服务器出现问题,客户端无法通过服务器访问互联网。
客户端可以成功连接到 Openvpn 服务器,并且路由被正确地推送到服务器,但我对 google dns(8.8.8.8)的测试 ping 不起作用。
我知道很多用户已经发布了他们的问题并找到了解决方案,我已经尝试了所有提示/解决方案但无济于事。我甚至无法从此客户端 ping 通 10.8.0.1。我已禁用服务器上的所有 ICMP 阻止,但我设法 ping 通公共接口(面向 internet- en0)。
我的设置:
Client ----> OpenVPN Server ----> Public internet
iptables 配置:
*mangle
:PREROUTING ACCEPT [1381:181833]
:INPUT ACCEPT [1381:181833]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [670:141877]
:POSTROUTING ACCEPT [670:141877]
-A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT
*nat
:PREROUTING ACCEPT [41:3498]
:INPUT ACCEPT [41:3498]
:OUTPUT ACCEPT [1:164]
:POSTROUTING ACCEPT [1:164]
-A POSTROUTING -s 10.8.0.0/24 -o eno1 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [16:3245]
-A INPUT -p tcp -m tcp --dport 2288 -j ACCEPT
-A INPUT -s 127.0.0.1/32 -p udp -m udp --dport 111 -j ACCEPT
-A INPUT -p udp -m udp --dport 111 -j DROP
-A INPUT -i tun0 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i tun0 -p tcp -m tcp --dport 1194 -j ACCEPT
-A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -o eth0 -j ACCEPT
-A FORWARD -i tun0 -j ACCEPT
-A FORWARD -i eno0 -o tun+ -j ACCEPT
-A FORWARD -i tun+ -o eno0 -j ACCEPT
COMMIT
服务器.conf:
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
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 nobody
status openvpn-status.log
verb 3
客户端配置:
client
dev tun
proto udp
remote <server> 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
ca ca.crt
cert client.crt
key client.key
NIC 的详细信息:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 00:1e:c9:f8:e6:b4 brd ff:ff:ff:ff:ff:ff
inet - brd - scope global eno1
valid_lft forever preferred_lft forever
inet6 2001:f40:0:1::f5:a/126 scope global
valid_lft forever preferred_lft forever
inet6 fe80::7a50:f43b:ba31:ab6/64 scope link
valid_lft forever preferred_lft forever
3: eno2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
link/ether 00:1e:c9:f8:e6:b5 brd ff:ff:ff:ff:ff:ff
4: enp7s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 00:15:17:8f:f3:09 brd ff:ff:ff:ff:ff:ff
6: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
link/ether 52:54:00:a9:e6:9d brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
7: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
link/ether 52:54:00:a9:e6:9d brd ff:ff:ff:ff:ff:ff
8: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100
link/none
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
valid_lft forever preferred_lft forever
我高度怀疑问题出在我的 iptables 配置上,但我不知道除了已经做过的事情之外还能做什么。
我想我已经搞乱了 iptables,希望我们可以一起找到答案。
答案1
如果您已经安装了 Openvpn 服务器,并且 iptables 默认阻止该服务,那么请使用这些配置以使 Openvpn 正常运行。
首先,让我们允许 openvpn 端口上的 tcp 连接。如果您使用的是 udp 或其他端口号,请相应地更改此行。
iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 1194 -j ACCEPT
允许 TUN 接口连接到 OpenVPN 服务器:
iptables -A INPUT -i tun+ -j ACCEPT
允许 TUN 接口连接通过其他接口转发
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT
将 VPN 客户端流量通过 NAT 传输到 Internet。运行“ifconfig”命令时,根据 tun0 结果的信息更改 ip 地址掩码。
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
如果您的默认 iptables OUTPUT 值不是 ACCEPT,您还需要如下一行:
iptables -A OUTPUT -o tun+ -j ACCEPT
现在重新启动 iptables 服务它就可以工作了。
此外,请确保客户端的配置已配置为连接到正确的服务器地址,以防您忘记更改该<server>
行。
更多信息请见这里。
这是一个很好的文章它解释了如何正确安装 OpenVPN 服务器以及如何配置它。