我有两台主机: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
知识产权
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 点对点地址,因此默认情况下可能没有添加任何路由。(这可能是特定于平台的。)
如果您仅仅希望能够通过与服务器进行通信IP1
但它不能开箱即用,那么添加route IP1
就足够了。
例如,如果您希望将客户端主机的所有流量路由到隧道中,redirect-gateway
那么您可能需要使用该选项。
对于后者,您需要确保客户端主机使用可通过隧道访问的 DNS 服务器(请参阅dhcp-option DNS
)。此外,还需要在服务器上启用隧道和 NIC 之间的 IP 转发。