我在 CentOS 6 上运行 OpenVPN 2.3.7。我使用路由 (tun) 并有两个 OpenVPN 实例。在第二个实例上有两个客户端,我希望它们彼此可见,即 ping、访问端口等。它们都在同一个子网内,因此应该相当简单,它们通过 ccd 配置了静态地址。
我希望两个客户端能够通过他们的 OpenVPN LAN IP 地址互相看到对方,而无需client-to-client
在 server.conf 中启用。
我很确定它可以用 iptables 来完成,我将其用作我的防火墙,虽然我使用 CSF,但它是 iptables 的包装器。
这些是客户端的 IPv4 地址:
OpenVPN Client #1: 10.8.2.14
OpenVPN Client #2: 10.8.2.17
我需要客户端#1能够访问在客户端#2上运行的服务,并且我猜想为了兼容性,客户端#2应该能够看到客户端#1是否需要响应。
我在 OpenVPN 服务器上尝试了几个 FORWARD 链规则,但两个客户端之间无法进行任何通信。OpenVPN 服务器显然可以 ping 通两个客户端,客户端可以 ping 通 OpenVPN 服务器网关,但客户端显然无法看到彼此。
我已经尝试过一些规则,但是没有起到作用:
iptables -A FORWARD -s 10.8.2.14 -d 10.8.2.17 -j ACCEPT
iptables -A FORWARD -s 10.8.2.17 -d 10.8.2.14 -j ACCEPT
我正在寻求 iptables 的帮助,以使两个客户端彼此可见,而无需启用客户端到客户端,因为这是两个客户端的特殊要求,其他地方不需要。
另一种方法是通过 NAT 在 VPN 客户端上公开服务,但为了安全起见,我宁愿避免这样做。
任何见解都会有帮助!
谢谢,
詹姆士
答案1
我建议您执行相反的操作:启用client-to-client
然后使用 iptables 来阻止所有客户端,但保留您想要允许互相通信的两个客户端。
答案2
我知道这个问题已经很老了,但只是为了向可能仍在访问此页面的新用户澄清一下:
如果您使用client-to-client
防火墙,您实际上不能使用防火墙,服务器甚至根本看不到这些数据包,因为它们从未从 OpenVPN 服务器返回,所以,由于它们没有到达主机层,您将无法使用防火墙,因为它不会被到达,而您的规则将毫无用处。
答案3
在客户端配置中设置通过 VPN 路由特定 IP(甚至是 VPN IP)很容易,网络掩码为 255.255.255.255。但是,如果 OpenVPN 服务器在没有客户端到客户端选项的情况下路由客户端到客户端的请求,那么困难仍然存在。
有一个选项“iroute”,允许服务器将数据包转发给客户端,而不是响应其请求。如果您确定两个客户端的静态 IP,它将起作用。否则,请尝试使用具有 ipp 或 ccd 设置的 tap 设备,以确保两个客户端具有静态 VPN IP,并在其上设置了 iroute。