我正在尝试设置我的 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
如果我理解了您的需求,那么您的客户端的 IP 数据包应该被发送到客户端路由器,然后通过隧道中的互联网,到达服务器路由器,然后再返回到互联网。
redirect-gateway def1
看起来已经足够了,但为了保险起见,最好能显示route ip
所有节点(客户端 PC、客户端路由器、服务器路由器)上的输出。这些输出将让我们确信不同的路由表是正确的。https://openvpn.net/community-resources/how-to/local
根据您的具体配置提出一个标志。
伪装命令应放在 VPN 服务器上,通常在服务器路由器上:iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
其中 eth0 是外部设备(最靠近互联网)。请参阅https://linuxhacks.org/what-is-ip-masquerade-and-how-to-rule-it-with-iptables/或者https://bobcares.com/blog/iptables-nat-masquerade/您还必须启用转发(参见这些文章)。