OpenVPN 连接隧道

OpenVPN 连接隧道

几个月来,我一直在为一个特定的 OpenVPN 场景而苦苦挣扎。在 Google 上搜索,在 Serverfault 上阅读,浏览博客和其他论坛,一次又一次地弄乱我的配置。我不再确定我的要求是否合乎逻辑。

场景如下:

我有一个租用的根服务器,用于提供多种服务,如云存储、备份等。为了简单起见,我们将这些元素称为 Client1、Client2 和 Server1。

Server1 正在使用 tun-Device。

  • Client1 物理网络:192.168.1.0/24
  • Client2 物理网络:192.168.178.0/24
  • 客户端1物理IP:192.168.1.4
  • Client2 物理 IP:192.168.178.22

  • Server1虚拟网络:192.168.2.0/24

  • 服务器1 VPN IP: 192.168.2.1
  • 客户端1 VPN IP:192.168.2.6
  • 客户端2 VPN IP:192.168.2.10

两个客户端都可以连接到 VPN 服务器并使用其服务,没有任何问题。两个客户端都可以成功 ping 服务器的 VPN-IP。Server1 无法 ping 客户端的 VPN-IP。两个客户端都无法 ping 对方的 VPN-IP。

我想连接两个客户端,以便它们可以像在物理 LAN 中一样进行通信,但却无法做到。

这是我的配置。

服务器配置:

port 1195
proto tcp-server
dev tun1
ca keys/server1/ca.crt
cert keys/server1/openvpn-server.crt
key keys/server1/openvpn-server.key
dh keys/server1/dh4096.pem
server 192.168.2.0 255.255.255.0
crl-verify keys/server1/crl.pem
ifconfig-pool-persist servers/server1/logs/ipp.txt
cipher AES-256-CBC
user nobody
group nogroup
status servers/server1/logs/openvpn-status.log
log-append servers/server1/logs/openvpn.log
verb 2
mute 20
max-clients 100
local XXX.XXX.XXX.245
management 127.0.0.1 8877
keepalive 10 120
client-config-dir /etc/openvpn/servers/server1/ccd
client-to-client
comp-lzo
persist-key
persist-tun
ccd-exclusive
push "redirect-gateway def1"
push "dhcp-option DNS XXX.XXX.XXX.98"
push "route 192.168.2.0 255.255.255.0"

Client1 配置:

client
proto tcp-client
dev tun
ca ca.crt
dh dh4096.pem
cert user1.crt
key user1.key
remote XXX.XXX.XXX.245 1195
cipher AES-256-CBC
verb 2
mute 20
keepalive 10 120
comp-lzo
persist-key
persist-tun
float
resolv-retry infinite
nobind
push "route-gateway 192.168.2.1"

除证书外,Client2 的配置完全相同。

在服务器上/etc/sysctl.conf包含条目网.ipv4.ip_forward=1 客户端防火墙已调整,允许 OpenVPN 通过。每个客户端上的 IP 转发均已激活启用路由器註冊切換。

IP-Tables 只有一条特定的额外规则,用于实现互联网访问。

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.2.0/24 -j SNAT --to XXX.XXX.XXX.245

大多数常见问题解答、教程或博客文章都谈到了连接多个不同 VPN 的客户端。我希望我的客户端使用同一个 VPN。我束手无策,我甚至无法让客户端相互 ping 通。这可能吗,还是我完全误解了 VPN 的概念?

我将非常感激您能给我的任何提示,以解决这个自己造成的问题。

编辑:Traceroute Client1 -> Server1

traceroute to 192.168.2.1 (192.168.2.1), 30 hops max, 60 byte packets
1  19 ms  18 ms  18 ms  192.168.2.1

跟踪路由客户端 1 -> 客户端 2

traceroute to 192.168.2.10 (192.168.2.10), 30 hops max, 60 byte packets
 1  * * *
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

从 Server1 到 Client1 的 Traceroute 结果与从 Client1 到 Client2 的结果相同

答案1

我不知道为什么会这样,但解决方案是关闭客户端到客户端。当我启用客户端到客户端时,openVPN 忽略了我设置的网关,traceroute 甚至没有到达 VPN 服务器。在我关闭它之后,traceroute 最终通过网关路由。将防火墙调整为 openVPN,它在 2 跳上通过了。

说实话,这令人难以置信,因为客户端到客户端的定义恰恰相反。我将尝试在新环境中重现此情况,因为关闭客户端到客户端让我有点不舒服。但现在我只能接受它。

相关内容