在 Debian 上使用 IPtables 将 OpenVPN 隧道的端口转发到 LAN

在 Debian 上使用 IPtables 将 OpenVPN 隧道的端口转发到 LAN

我正在使用 OpenVPN 连接两台 Debian 9 x64 机器:

Server
(ens3 public-ip x.x.x.222)
tun0 10.8.0.1
-> Services:
   * Samba - udp137, udp138, tcp139, tcp445
   * Webserver - tcp80

Client
ens33 192.168.162.157
tun0 10.8.0.6

所以我想向前Samba 和 Web 服务器客户端 LAN-IP192.168.162.157192.168.162.x 中的其他 LAN 客户端可以访问此服务。

我尝试使用在互联网上找到的所有信息在客户端上使用 iptables 定义 NAT 规则,但没有成功:

sysctl -w net.ipv4.ip_forward=1

iptables -t nat -A PREROUTING -i ens33 -p udp --dport 137 -j DNAT --to 10.8.0.1:137
iptables -t nat -A PREROUTING -i ens33 -p udp --dport 138 -j DNAT --to 10.8.0.1:138
iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 139 -j DNAT --to 10.8.0.1:139
iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 445 -j DNAT --to 10.8.0.1:445

iptables -A FORWARD -i ens33 -p udp --dport 137 -d 10.8.0.1 -j ACCEPT
iptables -A FORWARD -i ens33 -p udp --dport 138 -d 10.8.0.1 -j ACCEPT
iptables -A FORWARD -i ens33 -p tcp --dport 139 -d 10.8.0.1 -j ACCEPT
iptables -A FORWARD -i ens33 -p tcp --dport 445 -d 10.8.0.1 -j ACCEPT

iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80 -j DNAT --to 10.8.0.1:80
iptables -A FORWARD -i ens33 -p udp --dport 80 -d 10.8.0.1 -j ACCEPT

如果我直接在客户端上连接 10.8.0.1,则 Web 服务器和 Samba 均可访问,但在 LAN 上则无法访问 192.168.162.157。

有人能帮助我解决 iptables 问题吗?:)

答案1

你的问题可能出在返回的路上。

服务器是否知道通过 VPN 客户端将数据包路由到您的客户端子网?如果不知道,您还需要 SNAT/伪装(或服务器上的匹配路由条目)。

然后,对于您的服务器,数据包将从您的 VPN 客户端发起,并找到返回的路径。

相关内容