我在 10.0.1.0(客户端 1)和 192.168.0.0(客户端 2)子网上有两个 openvpn 客户端,服务器的 openvpn 连接的 IP 为 192.168.150.1
服务器已启用ip转发。
目前client1的vpn ip是192.168.150.10,PtP ip是192.168.150.9 我在client1上创建了以下静态路由:
route add -net 10.0.1.0 netmask 255.255.255.0 gw 192.168.150.9
client1 上的路由表如下所示:
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.150.9 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
192.168.150.1 192.168.150.9 255.255.255.255 UGH 0 0 0 tun0
10.0.1.0 192.168.150.9 255.255.255.0 UG 0 0 0 tun0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
我认为这是正确的,可以让来自客户端 1 的流量到达客户端 2 网络上的计算机,但实际上却行不通。192.168.150.9(PtP 地址)是否是路由的正确地址?我尝试使用 192.168.150.1,但无法创建路由。
我也尝试将其添加到服务器配置中:
push "route 192.168.0.0 255.255.255.0"
push "route 10.0.1.0 255.255.255.0"
它在客户端 1 上创建以下路由:
10.0.1.0 192.168.150.9 255.255.255.0 UG 0 0 0 tun0
但它不起作用。“推送”路由示例肯定是正确的吗?我还需要做其他事情吗?服务器上什么都不做?只需启用 IP 转发?
答案1
防火墙日志中是否有任何内容?您能使用 tcpdump 准确诊断流量中断的位置吗?您使用的是什么系统(linux、freebsd,哪个版本)?
也可以在服务器配置中尝试此操作(从 OpenVPN文档):
# Uncomment this directive to allow different
# clients to be able to "see" each other.
# By default, clients will only see the server.
# To force clients to only see the server, you
# will also need to appropriately firewall the
# server's TUN/TAP interface.
;client-to-client
答案2
为了让我的客户端通过 OpenVPN 服务器互相通信,我需要client-to-client
按照 @kyrisu 的建议在我的配置中取消注释,但我还必须topology subnet
在我的服务器配置中添加:
# Configure server mode and supply a VPN subnet
# for OpenVPN to draw client addresses from.
# The server will take 10.8.0.1 for itself,
# the rest will be made available to clients.
# Each client will be able to reach the server
# on 10.8.0.1. Comment this line out if you are
# ethernet bridging. See the man page for more info.
server 10.8.0.0 255.255.255.0
topology subnet