因此,我建立了一个相当基本的tun
OpenVPN 服务器,但在使该服务器能够与所有连接的客户端进行通信方面遇到了麻烦。
我目前有两组客户端,一些不使用 VPN 连接到互联网(仅与其他客户端通信),一些使用redirect-gateway
VPN 发送所有流量。
根据我的设置,所有连接的客户端都可以与服务器和其他客户端通信。但是,从服务器,我只能访问(例如 ping)那些redirect-gateway
通过 VPN 发送所有流量的客户端。不使用该配置的客户端可以 ping 服务器,但服务器无法 ping 回(它们不响应并且超时)。
如何设置路由,以便即使客户端不使用 VPN 作为默认网关,服务器仍然可以与客户端通信?
以下是相关的服务器配置:
port 1194
proto udp
dev tun
topology subnet
push "topology subnet"
server 10.7.0.0 255.255.255.0
ifconfig-pool-persist /etc/openvpn/ipp.txt
client-config-dir /etc/openvpn/ccd
client-to-client
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nobody
persist-key
persist-tun
explicit-exit-notify 1
在服务器上的客户端配置目录中,每个客户端都有一个这样的文件(只是为了给每个客户端一个静态 IP):
ifconfig-push 10.7.0.10 255.255.255.0
本地客户端配置的相关部分:
client
dev tun
proto udp
remote {server's public ip} 1194
float
keepalive 15 60
ns-cert-type server
key-direction 1
tun-mtu 1500
cipher AES-256-CBC
keysize 256
comp-lzo yes
nobind
使用 VPN 访问互联网的客户端添加redirect-gateway def1 bypass-dhcp
到他们的配置中。
我正在使用ufw
我的服务器的防火墙 - 这是相关配置(在 /etc/ufw/before.rules 中):
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.7.0.0/8 -j SNAT --to-source {server's public ip}
由于这是在 OpenVZ VPS 上运行的,我无法使用MASQUERADE
,但上述操作似乎同样有效。
关于如何正确设置,您有什么想法吗?提前致谢。如果重要的话,服务器正在运行 CentOS。