linux如何向向局域网内的其他路由器广播特定路由条目?

linux如何向向局域网内的其他路由器广播特定路由条目

遇到一个问题,主路由是一个普通的家庭路由器,无法配置静态路由,但是旁路由是可以任意操作的开放的linux系统路由器.如图所示,旁路由连接另一个局域网.现在想要让主路由 可以转发数据包的旁路由所主导的局域网.

注:由于一些原因,旁路由的主导的局域网的相关路由条目无法被其他路由器自动学习(具体原因是旁路由所连接的局域网是用vpn连接的,具体软件是使用tailscale)

阅读 780
avatarAI BotBETA

在 Linux 系统上,你通常不能直接通过广播的方式向局域网内的其他路由器添加静态路由条目,因为路由器通常不会接受来自其他设备的动态路由更新(除非它们配置为使用某种动态路由协议,如 BGP、OSPF 等)。然而,你可以采取一些其他方法来实现你的需求。

在这种情况下,由于主路由是一个普通的家庭路由器且不支持静态路由配置,而旁路由是一个可以任意操作的 Linux 系统,你可以考虑以下解决方案:

解决方案:使用 IP 转发和策略路由

  1. 启用 IP 转发
    在旁路由上启用 IP 转发,以便它能够转发来自主路由的数据包到 VPN 连接的局域网。

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

或者,永久启用 IP 转发,可以编辑 /etc/sysctl.conf 文件并添加以下行:

net.ipv4.ip_forward = 1

然后运行 sudo sysctl -p 以应用更改。

  1. 配置静态路由
    虽然你不能直接在其他路由器上添加静态路由,但你可以通过调整旁路由上的路由表来实现类似的效果。

    假设你的网络配置如下:

    • 主路由的 IP 地址为 192.168.1.1
    • 旁路由的 IP 地址为 192.168.1.2
    • VPN 连接的局域网网段为 10.0.0.0/8

    在旁路由上,你可以添加一条静态路由,将所有发往 10.0.0.0/8 的流量通过 VPN 接口转发。

    ip route add 10.0.0.0/8 via <VPN_GATEWAY_IP> dev <VPN_INTERFACE>

替换 <VPN_GATEWAY_IP> 为 VPN 网关的 IP 地址,<VPN_INTERFACE> 为 VPN 连接的网络接口名。

  1. 配置策略路由(可选)
    如果主路由和旁路由之间有其他复杂的流量转发需求,你可能需要使用策略路由(也称为基于源或目标的路由)。

    例如,你可以使用 ip ruleip route 命令来创建更复杂的路由规则。

  2. 确保防火墙规则允许转发
    确保旁路由的防火墙规则允许数据包转发。你可能需要调整 iptablesfirewalld 规则来允许相关的流量通过。

注意:

  • 由于你提到 VPN 是通过 Tailscale 建立的,确保 Tailscale 的配置允许从旁路由转发流量到 VPN 网络。
  • 这种方法依赖于旁路由作为数据包转发的中间点,因此旁路由的性能和稳定性将直接影响整个网络的性能。

通过上述步骤,你可以在一定程度上实现主路由向旁路由所主导的 VPN 连接的局域网转发数据包的需求。然而,这并不是通过广播静态路由条目来实现的,而是通过配置旁路由的路由表和 IP 转发功能来实现的。

2 个回答

这个取决于你的家用路由器是不是能配置DHCP。

DHCP可以配置下发静态路由,具体可以查询 option 121

家用路由器大概率是不支持直接配置的,我用过openwrt这样配置是没问题的。

如果没有配置的话,看看能不能关闭路由器上的dhcp服务,然后在旁路由上装个dnsmasq,自己来做DHCP地址下发。

直接去咸鱼捡一台有管理功能的千兆企业级路由器不就行了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏