linux – OpenVPN客户端到客户端
|
当使用禁用客户端到客户端的TUN(第3层)OpenVPN服务器时,我的客户端仍然可以相互通信. 客户端到客户端配置应该根据文档来防止这种情况:
当禁用此选项时,为什么客户端可以继续相互通信? 这是我的服务器配置: port 443 proto tcp dev tun ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/server.crt key /etc/openvpn/keys/server.key dh /etc/openvpn/keys/dh4096.pem topology subnet server 10.10.201.0 255.255.255.128 ifconfig-pool-persist ipp.txt crl-verify /etc/openvpn/keys/crl.pem push "route [omitted]" push "dhcp-option DNS [omitted]" keepalive 10 120 comp-lzo user nobody group nogroup persist-key persist-tun plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so login cipher AES-256-CBC tls-auth /etc/openvpn/keys/pfs.key 0 verb 4 解决方法如果启用了客户端到客户端,则VPN服务器在内部转发客户端到客户端数据包,而不将它们发送到主机的IP层(即发送到内核).主机网络堆栈根本看不到这些数据包..-------------------.
| IP Layer |
'-------------------'
.-------------------.
| TUN device (tun0) |
'-------------------'
.-------------------.
| OpenVPN server |
'-------------------'
^ |
1 | | 2
| v
.----------------. .----------------.
| Client a | | Client b |
'----------------' '----------------'
如果禁用客户端到客户端,则从客户端到另一个客户端的数据包将通过托管VPN服务器的计算机的主机IP层(iptables,路由表等):如果启用了IP转发,主机可能会转发数据包(使用其路由表)再次进入TUN接口,VPN守护进程将数据包转发到隧道内的正确客户端. .-------------------.
| IP Layer | (4) routing,firewall,NAT,etc.
'-------------------' (iptables,nftables,conntrack,tc,etc.)
^ |
3 | | 5
| v
.-------------------.
| TUN device (tun0) |
'-------------------'
^ |
2 | | 6
| v
.-------------------.
| OpenVPN server |
'-------------------'
^ |
1 | | 7
| v
.----------------. .----------------.
| Client a | | Client b |
'----------------' '----------------'
在这种情况下(客户端到客户端禁用),您可以使用iptables阻止客户端到客户端的数据包: iptables -A FORWARD -i tun0 -o tun0 -j DROP 其中tun0是您的VPN接口. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
