我遇到了类似的问题: 无需 NAT 的 OpenVPN
好像还没有答复。
我的情况描述:我在网络 A 上有一个 openvpn 服务器,这是另一位管理员在离开公司之前安装的,现在有几个用户和服务器连接到该 openvpn 服务器来访问网络 A 并进行 NAT,因此来自 vpn 用户/服务器的所有请求都有来自 openvpn 服务器的源地址。
现在我需要网络 A 上的一个服务器来访问其中一个 openvpn 客户端/服务器,并且想要禁用 openvpn 中的 NAT 以公开这些客户端和服务器的“vpn 内部”IP 地址。
我知道我需要在网络 A 上添加一条路由才能访问 vpn 网络,这对我来说很清楚,但我看不到如何在 openvpn 中禁用 NAT,而且没有 IPtables 规则,因此似乎正在使用某些 openvpn 内部 NAT 机制。
我需要检查哪些选项来禁用 NAT?
答案1
在 OpenVPN 服务器上必须有一条规则,例如
iptables -t nat -A POSTROUTING -i tun0 -j MASQUERADE
你可以通过以下方式找到它
iptables-t nat -L -n -v
您必须取消此规则。
如果像你声称的那样(但你跑了吗?
iptables -t nat -L -n -v
再次检查是否有 iptables 规则在起作用?),唯一的另一种可能性是 natting 是通过套件完成的iproute2
。
cat /etc/iproute2/rt_tables
记下您拥有的表的名称,然后发出
ip route table TABLE_NAME | grep ^nat
看看是否能找到一些输出。如果能找到,则意味着数据包头已被该iproute2
命令重写ip route add nat ..
。您需要做的就是删除有问题的路由表。
有两种可能性,特里姆。
现在您需要向路由器添加一条规则,以便通过 OpenVPN 服务器 (假设其 IP 地址为 192.168.0.127) 为 OpenVPN 子网 10.0.0.0/24 路由数据包。如果路由器是 Linux 机器,则以下命令将执行:
ip route add 10.0.0.0/24 via 192.168.0.127
大多数路由器(如 Cisco 的)都具有一项Advanced routing
功能,可在其 GUI 中找到。您应该使用该功能来指定上述路由。