DD-WRT - 根据源子网重定向互联网流量

DD-WRT - 根据源子网重定向互联网流量

以下问题的描述很长。希望有类似情况的人会觉得它有用。请耐心等待。我的问题在最后。

首先,我在家里有以下设置:

--MODEM (ADSL) - ISP INTERNET : 192.168.0.1
  |
  -- WIRELESS ROUTER (DDWRT) : 192.168.1.1

我有一个 L2TP VPN 服务,我需要经常使用它来访问互联网。由于 DD-WRT 不支持 L2TP 作为 VPN 客户端,我最终将其设置为主要 WAN 连接。工作正常,我的流量通过 VPN 连接从所有无线客户端和以太网端口传输。这正是我想要的。

在此处输入图片描述

现在,在极少数情况下,我不想使用 VPN 连接。例如当它断线时。到目前为止,我必须转到路由器控制面板并将 WAN 设置设置为“DHCP”才能直接访问互联网。然后,当 VPN 上线时,再将设置恢复原样。

我发现这很困难(特别是因为没有人知道如何做到这一点),所以我决定创建一个虚拟无线接口,使用调制解调器 IP 地址作为网关,这样连接到它的任何设备都可以直接连接到互联网。所以我创建了一个虚拟无线接口并将其添加到新网桥,然后配置 DHCP 以在 192.168.3.x IP 空间中为连接到它的任何客户端分配一个 IP。以下屏幕截图可帮助您了解设置:

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

到目前为止,一切都按预期运行。现在我必须找到一种方法,将流量从该子网 (192.168.3.x) 发送到 192.168.0.1(即 ADSL 调制解调器),从而绕过路由器的 PPP 连接。

利用我对 IP 表的有限知识和互联网的一些帮助,我编写了以下脚本:

ip rule add from 192.168.3.0/24 table 200
ip route add default via 192.168.0.1 dev vlan2 table 200
ip route flush cache

执行上述命令之前,IP 表包含以下规则:

root@router:~# ip route
default via 192.168.100.198 dev ppp0  scope link
50.105.xxx.xxx via 192.168.0.1 dev vlan2
127.0.0.0/8 dev lo  scope link
169.254.0.0/16 dev br0  proto kernel  scope link  src 169.254.255.1
192.168.0.0/24 dev vlan2  proto kernel  scope link  src 192.168.0.100
192.168.1.0/24 dev br0  proto kernel  scope link  src 192.168.1.1
192.168.1.1 via 192.168.0.1 dev vlan2
192.168.3.0/24 dev br1  proto kernel  scope link  src 192.168.3.1
192.168.100.198 dev ppp0  scope link

在表200中执行后:

root@router:~# ip route list table 200
default via 192.168.0.1 dev vlan2

如您所见,上述命令运行良好,但我有两个问题:

  1. 我找不到每次重启时执行它的可靠方法

  2. VPN 连接断开后不会再次连接。事实上,断开连接后,除 IP 地址为 192.168.3.x 的客户端外,任何客户端都将失去互联网访问权限。

看一下断线之后的IP表规则:

root@router:~# ip route list table 200
default via 192.168.0.1 dev vlan2
root@router:~# ip route
127.0.0.0/8 dev lo  scope link
169.254.0.0/16 dev br0  proto kernel  scope link  src 169.254.255.1
192.168.0.0/24 dev vlan2  proto kernel  scope link  src 192.168.0.100
192.168.1.0/24 dev br0  proto kernel  scope link  src 192.168.1.1
192.168.1.1 via 192.168.0.1 dev vlan2
192.168.3.0/24 dev br1  proto kernel  scope link  src 192.168.3.1

根据以上结果,我猜测这是因为没有默认规则,但为什么会出现这种情况?我该如何解决?重要的是要知道,即使不执行我的自定义命令,一切都会正常工作。

我已经尝试过的:

  1. 启动脚本:

我使用下面的命令创建一个脚本,在 wan 连接时执行。没有任何成功。

mkdir -p '/tmp/etc/config/'
echo "ip rule add from 192.168.3.0/24 table 200
ip route add default via 192.168.0.1 dev vlan2 table 200
ip route flush cache" > '/tmp/etc/config/direct.wanup'
chmod +x '/tmp/etc/config/direct.wanup'

有人可以帮忙吗?

答案1

将以下规则添加到防火墙脚本彻底解决了我的问题:

ip route add default via 192.168.0.1 dev vlan2
ip route delete 8.8.8.8 via 192.168.0.1 dev vlan2
ip rule add from 192.168.3.0/24 table 200
ip route add default via 192.168.0.1 dev vlan2 table 200
ip route flush cache

防火墙

相关内容