我有兩台主機:CentOS 7,它是 Docker 主機和 OpenVPN 伺服器,Ubuntu 作為客戶端。我正在使用 OpenVPN 將客戶端連接到主機,但問題是 VPN 伺服器不會發回回复,即它不會發回封包。客戶端位於 NAT 後方。我已經檢查了雙方的防火牆 - 允許所有類型的流量。我還應該檢查什麼? MTU 並不是確定的原因。作為路由器,我們使用 Mikrotik。
客戶端的配置:
remote <Server IP>
dev tun
rport 18999
lport 18999
proto udp
ifconfig IP1 IP2
secret /etc/openvpn/static.key 1
persist-tun
persist-key
keepalive 10 60
ping-timer-rem
verb 3
daemon
log-append /var/log/openvpn.log
伺服器端配置:
ev tun.yasha
proto udp
local <someip>
lport 18999
rport 18999
secret /etc/openvpn/.keys/secret.key 0
ifconfig <IP2> <IP1>
user nobody # On CentOS
group nobody # On CentOS
persist-tun
persist-key
keepalive 10 60
ping-timer-rem
verb 6
daemon
log-append /var/log/openvpn.log
隧道處於活動狀態時的輸出: 客戶:IP位址
default via 192.168.88.1 dev wlp3s0 proto dhcp metric 600
10.8.0.1 dev tun0 proto kernel scope link src 10.8.0.2
169.254.0.0/16 dev wlp3s0 scope link metric 1000
192.168.88.0/24 dev wlp3s0 proto kernel scope link src 192.168.88.34 metric 600
ip 一個
tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
link/none
inet 10.8.0.2 peer 10.8.0.1/32 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::9b45:4bf5:f2d7:5375/64 scope link stable-privacy
valid_lft forever preferred_lft forever
伺服器:
智慧財產
default via 217.12.XXX.X dev eno1
10.8.0.2 dev tun.yasha proto kernel scope link src 10.8.0.1
ip a(我們機器上有很多接口,所以就省略了)
tun.yasha: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun.yasha
valid_lft forever preferred_lft forever
inet6 fe80::4815:ef11:3756:faea/64 scope link flags 800
valid_lft forever preferred_lft forever
答案1
透過您的配置,您僅在用戶端上配置了隧道的 IP 位址。
由於該位址是/32點對點位址,因此預設情況下可能不會新增任何路由。 (這可能是特定於平台的。)
如果您只想透過 via 與伺服器進行通信,IP1
但它不能開箱即用,那麼添加route IP1
應該就足夠了。
例如,如果您希望將用戶端主機的所有流量路由到隧道中,redirect-gateway
則您可能需要使用該選項。
對於後者,您需要確保用戶端主機使用可透過隧道存取的 DNS 伺服器(請參閱 參考資料dhcp-option DNS
)。此外,還需要在伺服器上啟用隧道和 NIC 之間的 IP 轉送。