×

Linux 让路由固定走特定网卡(以Debian12为例)

Falcon 2025-05-20 views:
自动摘要

正在生成中……

要让所有访问 1.2.3.4 的流量固定走 enp1s0 接口(即 192.168.6.0/24 的网段),你可以通过 静态路由规则 完成,不影响系统默认路由设置。


✅ 添加静态路由

使用 ip route add 命令指定目的地址的路由走 enp1s0

sudo ip route add 1.2.3.4 via 192.168.6.10 dev enp1s0

这条命令的含义是:

  • 所有发往 1.2.3.4 的数据包:

    • 通过网关 192.168.6.10
    • 使用网卡 enp1s0

🧪 验证方式

  1. 查看路由是否生效

    ip route get 1.2.3.4
    

    输出应类似:

    1.2.3.4 via 192.168.6.10 dev enp1s0 ...
    
  2. 抓包验证(可选):

    sudo tcpdump -i enp1s0 host 1.2.3.4
    

这是一个 抓包命令,用于监听你网卡上的数据包,具体解释如下:

sudo	以管理员权限运行(抓包需要 root 权限)
tcpdump	抓取网络数据包的工具
-i enp1s0	指定监听的网络接口为 enp1s0(即你连接 192.168.6.0/24 网段的接口)
host 1.2.3.4	仅抓取和 IP 为 1.2.3.4 的通信数据(包括出站和入站)

📦 用途:可以用来验证某个流量(如访问 1.2.3.4)是否通过 enp1s0 接口发出或收到。

如何固定当前路由规则(重启后依然生效)

如果你使用的是 NetworkManager 来管理网卡连接,可用如下命令添加永久路由(以 enp1s0 为例):

你可以用 nmcli connection show 查看连接名称。

比如输出为:

Wired01          11a43f4c-2cb6-3802-ab2e-e7f62ffe5352  ethernet  enp1s0

当前连接名是 Wired01,设备是 enp1s0,下面是使用 nmcli 为这个连接添加 静态路由 的完整操作步骤:


✅ 添加静态路由(固定走 enp1s0 到 1.2.3.4)

sudo nmcli connection modify "Wired01" +ipv4.routes "1.2.3.4/32 192.168.6.10"
  • 1.2.3.4/32:表示目标是单一 IP。
  • 192.168.6.10:为 enp1s0 接口的默认网关。

🔄 重启该连接使配置生效

sudo nmcli connection down "Wired01" && sudo nmcli connection up "Wired01"

或者(不影响现有连接)直接执行:

sudo nmcli connection reload

🧪 验证路由已添加

ip route get 1.2.3.4

预期输出类似:

1.2.3.4 via 192.168.6.10 dev enp1s0 ...

📌 说明:该设置是永久的

此路由会保存到 NetworkManager 的配置中,系统重启或断网重连后依然生效


如你希望同时移除该规则,可以使用:

sudo nmcli connection modify "Wired01" -ipv4.routes "1.2.3.4/32 192.168.6.10"
sudo nmcli connection up "Wired01"
本文收录于