在一台设备上配置两台路由器

Luk*_*kas 3 firewall router gateway

我正在构建一个带有 RPi(Raspbian)的路由器。它有3个网络接口:

  • eth0 : 连接到互联网(来自 DHCP 的 IP/网关)
  • wlan0 , wlan1 : 本地 WLAN 接口(每个接口都使用自己的 SSID 作为 AP)

此外,有一个 VPN 连接tun0到远程网络,该网络连接到互联网本身。

现在我想要:

  • 来自wlan0 的所有流量都将通过tun0
  • 来自wlan1 的所有流量都将通过eth0路由

结果我想要两个 WLAN,一个可以直接访问互联网,另一个可以通过 VPN 连接访问互联网。

这很容易使用两种不同的设备,但是如何仅使用一个默认网关来做到这一点?

Goh*_*ohu 5

您需要创建第二个路由表并使用基于策略的路由。适用于您的案例,您需要:

  1. 使用主路由表设置第一个默认路由。此表将用于本地生成的流量和来自wlan1的流量:

    ip route add default via <gateway_reachable_by_eth0> table main
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建第二个路由表vpn

    echo 200 vpn >> /etc/iproute2/rt_tables
    
    Run Code Online (Sandbox Code Playgroud)
  3. 向新表添加默认路由:

    ip route add default via <gateway_reachable_by_tun0> table vpn
    
    Run Code Online (Sandbox Code Playgroud)
  4. 指示来自wlan0 的所有流量都应使用此新表:

    ip rule add from <wlan0_subnet> lookup vpn
    
    Run Code Online (Sandbox Code Playgroud)

  • @Lukas:好问题,答案在 `man ip-route` 中:“路由表:Linux-2.x 可以将路由打包到多个路由表中,这些路由表由 1 到 2^31 范围内的数字标识,或者按名称从文件 /etc/iproute2/rt_tables .[...]. 值(0、253、254 和 255)保留供内置使用。 (2认同)