OpenVPN 和 IPTABLES - 如何为客户端分配 lan(vpn)网关

OpenVPN 和 IPTABLES - 如何为客户端分配 lan(vpn)网关

我正在尝试设置我的 openvpn 网络,但遇到了一个问题。

我的局域网配置如下:

  • 主路由器 Zyxel 192.168.1.1 充当网关(vdsl 连接)和接入点;
  • openwrt路由器TD-W8970 192.168.1.2作为接入点和vpn服务器(10.212.79.1)

我想要做的是创建一个 VPN 网络,其中客户端必须仅通过我的 LAN 网关 (192.168.1.1) 发送互联网请求;换句话说,我希望互联网上显示的客户端公共 IP 是我的 LAN 网关 (192.168.1.1) 的 IP,而不是他们的 ISP 分配给他们的 IP。

下面是我的 openvpn 配置。

服务器配置文件

user nobody
group nogroup
dev tun
port 1194
proto udp
server 10.212.79.0
255.255.255.0
topology subnet
client-to-client
keepalive 10 60
persist-tun
persist-key
verb 3
push "persist-tun"
push "persist-key"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
push "route 192.168.1.0 255.255.255.0"
ca /etc/easy-rsa/pki/ca.crt
cert /etc/easy-rsa/pki/issued/server.crt
key /etc/easy-rsa/pki/private/server.key
dh /etc/easy-rsa/pki/dh.pem
tls-auth /etc/easy-rsa/pki/ta.key 0

客户端配置文件

dev tun
proto udp
remote myserver_xyz.com 1194 udp
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
verb 3

openvpn 网络已正确建立,客户端 10.212.79.2 可以 ping 通 vpn 服务器 10.212.79.1 并在互联网中导航。

问题在于,Internet 上显示的公共客户端 IP 是其 ISP 分配的 IP,而不是 vpn 服务器(192.168.1.2 / 10.212.79.1)所在的 LAN 网关(192.168.1.1)的 IP。

我尝试对服务器配置进行一些更改,但没有成功。

我也尝试过推送“redirect-gateway def1”或“redirect-gateway autolocal”,但在这种情况下,客户端完全停止在互联网上导航。

如果不是 openvpn 的问题,那么是否是与 IPTABLES 的正确配置有关的问题?

你能帮我么?

提前致谢 :)

答案1

没有完整的图片很难回答。 openwrt (服务器) 路由器有直接绑定到它的公共 IP 地址吗?

我发现您的配置存在一个问题:192.168.1.0/24 地址范围由两个不同的网络共享。然后当服务器看到 193.168.1.3 IP 地址时,它无法充分路由它。出于push "route…"这个原因,我有点困惑。

解决此问题的一种方法可能是在客户端:iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE。这将使来自客户端网络的所有数据包在服务器看来都是 10.212.79.0/24 地址。还请注意,应启用转发。可以使用某个地方的 192.168.2.0/24 范围来避免这种伪装。

10.212.79.0/24 地址不是公开的,那么您将需要另一个伪装,但我猜您已经为直接连接到服务器路由器和接入点的 Wifi PC 设置了一个。

redirect-gateway客户端将需要您的某个选项。(或从服务器推送)。

相关内容