如何将所有流量路由到同一子网中的另一台服务器?

如何将所有流量路由到同一子网中的另一台服务器?

我想要将来自客户端的所有流量从(192.168.1.0/24)openwrt 网关转发(0.0.0.0/0)到服务器 openvpn 隧道。

服务器有一个 openvpn 隧道。它还设置了选项:

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
net.ipv4.ip_forward=1
tun0 is the default gateway

Openwrt 是 Internet 的默认网关。因此,如果我手动将客户端的默认网关更改为服务器 IP 192.168.1.2,它就可以正常工作。

                            +------------+                                       
                            |  INTERNET  |                                       
                            +------|-----+                                       
                                   |                                             
                                   |                                             
                                   |                                             
                          +--------|-------+                                     
                          |    OpenWRT     |                                     
                          |                |                                     
                          | 192.168.1.1/24 |                                     
                          +---|----|-------+                                     
                              |    |                                             
                              |    |       +-------------+                       
                              |    |       |    Server   |                       
                              |    |       |             |                       
          +---------------+   |    |--------192.168.1.2  |                       
          |    Client     |   |    |       |             |                       
          |               ----+    +-------|tun0         |                       
          | 192.168.1.101 |                |             |                       
          +---------------+                +-------------+                       

我尝试了什么?

标记除来自服务器的数据包之外的所有数据包:

iptables -t mangle -I PREROUTING -i br-lan '!' -s 192.168.1.2 -d 0.0.0.0/0 -j MARK --set-mark 1

然后通过新的路由表路由它们,该路由表有默认路由,192.168.1.2但没有成功。流量滞留在路由器中。

ip route add default via 192.168.1.2 table vpn
ip rule add fwmark 1 lookup vpn

我的解决方案

实际上,当我写这篇文章时,我意识到我可以在 dnsmasq 路由器上使用 dhcp-option=3,192.168.1.2 来向所有客户端发送首选网关。而且它有效 :) 这可能是最好的解决方案。但是,是否可以使用 iptables 和 openwrt 端的路由来路由所有流量?

相关内容