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?
在 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 中找到的功能。您应该使用它来指定上面的路线。