我为子网 10.8.0.0/24 设置了一个 OpenVPN 服务器,它对内部网络的访问受到限制。此外,我想使用静态 IP 为选定的客户端手动配置 10.8.1.0/24,以赋予它们额外的权限(例如 SSH 访问)。
访问控制通过 iptables 完成并按预期工作。
现在,我将路由推送到外部 IP(在本例中为 10.10.10.10),并在端口 80 和 443 上运行网络服务器。
在没有客户端特定配置的情况下连接到 VPN 并因此获得 10.8.0.0/24 IP 时,我访问 10.10.10.10 上的网络服务器没有问题。我可以看到包进入 tun0 并将服务器留在 p4p1(外部接口)上。当使用客户端特定配置连接到 VPN 并因此获得 10.8.1.0/24 IP 时,我能够 ping 所有内部服务器,但指定为 10.10.10.10 的包不会中继到 VPN 服务器上的任何物理接口(检查 TCP 转储)。
关于这一点,摘自 OpenVPN 服务器配置:
server 10.8.0.0 255.255.255.0
push "route 10.10.10.10 255.255.255.255"
client-config-dir /etc/openvpn/ccd
route 10.8.1.0 255.255.255.0
client-to-client
comp-lzo
persist-key
persist-tun
客户端配置 /etc/openvpn/ccd/some-client:
ifconfig-push 10.8.1.133 10.8.1.134
由于流量通过列出到内部接口 (p1p1) 的任何特定路由工作,我猜 OpenVPN 没有正确地将流量重定向到进入接口 p4p1 的默认路由,但我不知道它为什么会这样做以及它是如何做到的固定的。
有什么建议么?
正如 Diamant 所说,网络服务器也需要通过 VPN 服务器返回到 10.8.1.0/24 的路由。或者,需要将 VPN 服务器配置为对网络服务器的请求执行 NAT。此外,我不确定这一点,但您可能需要添加push "route 10.8.0.0 255.255.0.0"
到您的服务器配置中。编辑:服务器配置中的网络掩码困扰着我。而不是上面的建议,尝试删除
server 10.8.0.0 255.255.255.0
服务器配置中的行并添加它:EDIT2:添加了缺少的配置行