以下是一个简单的设置,但略有不同:
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 规则,它就应该可以工作。
我希望这有帮助。