在 openvpn 中禁用 NAT

Han*_*ans 5 networking routing openvpn nat

我遇到了类似的问题: OpenVPN without NAT

好像还没有回答。

我的情况描述:我在网络 A 上有一个 openvpn 服务器,另一个管理员在他离开公司之前安装了它,现在有几个用户和服务器连接到那个 openvpn 服务器以访问网络 A 并获得 NAT,因此来自 vpn 用户/服务器的所有请求都有来自 openvpn 服务器的源地址。

现在我需要网络 A 上的服务器来访问 openvpn 客户端/服务器之一,并希望在 openvpn 中禁用 NAT 以公开这些客户端和服务器的“vpn 内部”IP 地址。

我知道我需要在网络 A 上添加一条路由来访问 vpn 网络,这对我来说很清楚,但我看不到如何在 openvpn 中禁用 NAT,也没有 IPtables 规则存在,所以一些 openvpn 内部 NAT 机制似乎在用。

我需要检查哪些选项才能禁用 NAT?

Mar*_*iae 4

在 OpenVPN 服务器上必须有这样的规则

        iptables -t nat -A POSTROUTING -i tun0 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)

你可以找到它

      iptables-t nat -L -n -v
Run Code Online (Sandbox Code Playgroud)

你必须禁止这条规则。

如果,正如你所说(但你跑了

      iptables -t nat -L -n -v
Run Code Online (Sandbox Code Playgroud)

仔细检查是否有 iptables 规则在起作用?),唯一的其他可能性是 natting 是通过套件完成的iproute2。做

    cat /etc/iproute2/rt_tables
Run Code Online (Sandbox Code Playgroud)

记下您拥有的表的名称,然后发出

     ip route table TABLE_NAME | grep ^nat
Run Code Online (Sandbox Code Playgroud)

看看是否能找到一些输出。如果这样做,则意味着数据包标头被iproute2命令重写ip route add nat ..。您所需要做的就是删除有问题的路由表。

这是两种可能性,tertium non datur

现在,您需要向路由器添加一条规则,以通过 OpenVPN 服务器路由 OpenVPN 子网 10.0.0.0/24 的数据包(假设它的 IP 地址为 192.168.0.127)。如果路由器是 Linux 机器,则执行以下命令:

       ip route add 10.0.0.0/24 via 192.168.0.127
Run Code Online (Sandbox Code Playgroud)

大多数路由器(例如 Cisco 的路由器)都具有Advanced routing可以在其 GUI 中找到的功能。您应该使用它来指定上面的路线。