加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – OpenVPN客户端到客户端

发布时间:2020-12-13 17:22:21 所属栏目:Linux 来源:网络整理
导读:当使用禁用客户端到客户端的TUN(第3层)OpenVPN服务器时,我的客户端仍然可以相互通信. 客户端到客户端配置应该根据文档来防止这种情况: Uncomment out the client-to-client directive if you would like connecting clients to be able to reach each other
当使用禁用客户端到客户端的TUN(第3层)OpenVPN服务器时,我的客户端仍然可以相互通信.

客户端到客户端配置应该根据文档来防止这种情况:

Uncomment out the client-to-client directive if you would like
connecting clients to be able to reach each other over the VPN. By
default,clients will only be able to reach the server.

当禁用此选项时,为什么客户端可以继续相互通信?

这是我的服务器配置:

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接口.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读