如何使用静态密钥认证将多个客户端连接到 OpenVPN 服务器以便它们互相看到?

如何使用静态密钥认证将多个客户端连接到 OpenVPN 服务器以便它们互相看到?

我有一个 openvpn 服务器,有三个客户端使用静态密钥授权连接到它。

我需要以客户端可以“看到”彼此的方式连接它们。例如,我可以使用设备 2 的 openvpn IP 从设备 2 ping 设备 1。

这些设备的 IP 为 10.8.0.{2,3,4},我为所有设备分配了 10.8.0.1 作为服务器 IP。

但是,当所有设备都已连接时,我无法从 10.8.0.3 ping 10.8.0.2。

以下是服务器配置:

dev tun
port 1196
ifconfig 10.8.0.1 10.8.0.4
secret secret.key
keepalive 10 60
ping-timer-rem
persist-tun
persist-key

(服务器上有三个配置,每个设备一个,每个配置监听不同的端口,每个配置都有不同的秘密)

客户端配置如下:

remote my-vpn.server 1196
dev tun
ifconfig 10.8.0.4 10.8.0.1
secret secret.key
keepalive 10 60
ping-timer-rem
persist-tun
persist-key

服务器上已启用 IP 转发。

使用静态密钥授权是否可以实现这样的设置(客户端互相看到)?

我知道有一个client-to-client选项,但它仅在使用 TLS 时可用,而我使用静态密钥。

“客户端”设备上的路由表如下所示:

从 10.8.0.3 查看路由表,似乎设备将通过默认网关而不是隧道来引导到 10.8.0.2 的流量……

default via 192.168.1.1 dev enp4s0 proto dhcp metric 100 
10.8.0.1 dev tun0 proto kernel scope link src 10.8.0.3 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
172.18.0.0/16 dev br-318f2bff6bd2 proto kernel scope link src 172.18.0.1 
192.168.1.0/24 dev enp4s0 proto kernel scope link src 192.168.1.16 metric 100 

答案1

您会想要这个client-to-client选项,因为它与 TLS 或静态密钥无关。

    --client-to-client
        Because the OpenVPN server mode handles multiple clients through a single tun or
        tap interface, it is effectively a router. The --client-to-client flag tells
        OpenVPN to internally route client-to-client traffic rather than pushing all
        client-originating traffic to the TUN/TAP interface.
    
        When this option is used, each client will "see" the other clients which are
        currently connected. Otherwise, each client will only see the server. Don't use
        this option if you want to firewall tunnel traffic using custom, per-client rules. 

此选项的作用是告诉服务器进程在进程内处理路由,而不是通过内核,从客户端的角度来看,这使其更像 LAN 交换机:如果一个客户端想要访问另一个客户端,它可以在不进行任何过滤/路由的情况下进行访问。如果您不提供此选项,您应该有一个很好的理由,即,您为什么要用客户端到客户端的流量来打扰您的服务器?

但是如果您真的想要这样做,例如,正如手册页所述,当您想要防火墙流量时,您至少必须将整个 VPN 子网推送到客户端,否则,他们将只能看到客户端到服务器的子网。不确定服务器端需要什么,即如果服务器在其路由表中有整个子网,我不确定它是否会路由,因为就路由逻辑而言,如果客户端位于同一子网上,则客户端根本不需要联系服务器。因此,无需担心防火墙规则(不应阻止转发),可能还需要将每个客户端到服务器子网添加为服务器上的单独路由。

编辑:我的工作配置:

服务器:

server 192.168.81.0 255.255.255.0
client-to-client

客户:

topology subnet

ifconfig两种配置均无选项)

相关内容