在 VPN 客户端和 Samba 服务器之间转发流量

在 VPN 客户端和 Samba 服务器之间转发流量

以下是一个简单的设置,但略有不同:

192.168.1.88 上的 LAN 中有一个 Samba 服务器正在运行。VPN 客户端直接连接到该服务器,彼此无法看到,也不会路由到 LAN。

我想要重定向或转发:

  • tun0 设备(172.16.0.1)和 Samba 端口(139)传入的所有流量 --> Samba 服务器(192.168.1.88)
  • 所有响应流量从 Samba 服务器到 VPN 服务器的 LAN 地址 (192.168.1.99) --> tun0 设备 (172.16.0.1) --> VPN 客户端 (172.16.0.8)

这是我尝试用来实现重定向/转发任务的 NAT 规则集:

iptables -t nat -I PREROUTING -i tun0 -d 172.16.0.1 -p tcp --dport 139 -j DNAT --to-destination 192.168.1.88:139
iptables -I FORWARD -o tun0 -d 192.168.1.88 -p tcp --dport 139 -j ACCEPT

网络中的地址:

  • 内部 VPN 地址:172.16.0.1
  • VPN服务器LAN地址:192.168.1.99
  • 客户端地址(示例):172.16.0.8
  • Samba 服务器局域网地址:192.168.1.88

规则中缺少什么来将 VPN 流量发送到正确的路由?

提前致谢!

答案1

您还应该以另一种方式进行 NAT:

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

此外,Samba 服务器将收到来自 172.16.0.0 网络中客户端的请求(我假设它是 /24),因此它需要知道到达它的路由才能响应该请求。因此,如果您ip route show在 Samba 服务器上运行,您应该会看到一行内容,如下所示:

172.16.0.0/24 via 192.168.1.99

或者,如果没有针对 172.16.0.0 的特定规则:

default via 192.168.1.99

如果没有,你还需要添加路线

ip route add 172.16.0.0/24 via 192.168.1.99

另一件事是,您需要允许 VPN 服务器中的 IP 转发,以便 Samba 回复:

sysctl -w net.ipv4.ip_forward=1

或者

echo 1 > /proc/sys/net/ipv4/ip_forward

但要小心,因为此时您将拥有双向路线。声明:

VPN 客户端直接连接到服务器,无法互相看到,也不会被路由到 LAN。

将取决于您发送给 VPN 客户端的路由。

只要您没有任何可能过滤它的未列出的 iptables 规则,它就应该可以工作。

我希望这有帮助。

相关内容