我在我的 Debian 服务器上通过 openVPN 服务器在我的移动设备和 LAN 之间创建了一个个人 VPN。
假设我的 LAN 类192.168.1.0/24在界面上eth0,我的 VPN 是标准10.0.8.0/24在tun0界面。
然后在我的服务器上我有另一个 VPN,我的服务器是一个客户端,建立在 Shrewsoft VPN 上。
假设此 VPN 允许我访问10.50.0.0/24子网通过tap0界面
我只想联系到主持人10.50.0.15来自我的 openvpn 客户端。
我只能访问服务器+openVPN服务器配置,目前我有点困惑。
我尝试采用以下方法来达到该结果:
1:1 NAT 主机10.50.0.15在192.168.1.15
尝试将我服务器上的流量路由至10.50.0.0/24并来自10.0.8.0/24通过 shrewsoft gw。
我没有什么想法,如果有什么建议我将非常感激!
谢谢。
**********************编辑**************************
在尝试了所有建议的方法后,没有任何好消息,即使使用干净的 iptables 配置,我也无法正确路由流量。
我通过 tshark 看到数据包正确路由到 10.50.0.15,但响应来自 TAP0 IP(192.168.11.150),并且没有正确转发到 openvpn LAN。
有什么建议么?
答案1
- 确保您的接口的
iptables
(表filter
、链FORWARD
)中已启用 IP 转发tun0
。 - 确保在内核中启用了 IP 转发(
/sbin/sysctl -a | grep forward
——请从那里开始操作)。 - 确保你
push
的 OpenVPN 服务器配置中有指令,告知客户端10.50.0.0/24
可以通过以下方式访问网络10.0.8.1
— 即 OpenVPN 服务器的 IP;请参阅“路由 LAN”。 - 您可能还需要
iroute
在 OpenVPN 的配置中添加适当的指令;请参阅上面的指南。
理由是:
IP 客户端(我们以移动客户端为例)使用其本地路由表来决定将具有特定目标 IP 地址的数据包发送到何处。任何客户端都有一个或多个直接连接的网络和零个或多个间接连接的网络。
间接连接的网络可通过所谓的“网关”到达,其任务是转发数据包。显然,所有网关都必须可通过直接或间接连接的网络到达。
考虑最简单的情况,LAN 上的客户端有一个服务器,为该 LAN 提供到 Internet 的连接,其路由表中通常有两个条目:
- 其 LAN 地址 — 根据规范直接进行更正。
- 该 LAN 上的网关服务器的 IP 地址,标记为所谓的“默认”路由条目。
此设置使得客户端通过连接到 LAN 的网络接口直接发送发往该 LAN 上主机的所有数据包,并将其他所有流量发送到该网关服务器。
对于您的客户端来说,
10.0.8/24
这是一个直接连接的网络 — 一旦 OpenVPN 客户端成功连接到服务器。现在,要10.50.0.0/24
通过 OpenVPN 的隧道进行访问,客户端必须在其路由表中设置一条新规则,以了解该网络可通过某个网关(即您的 OpenVPN 服务器)访问。因此,您首先要在服务器上设置适当的路由和 IP 转发,然后确保客户机知道将发往主机的数据包发送到何处
10.50.0.0/24
。