在家庭或实验室网络环境中,旁路由经常用于科学上网、广告过滤或策略分流。如果希望本地 Linux 设备的所有流量通过旁路由转发,可以通过修改网关和 DNS 来实现。


一、检查当前网络配置

首先查看本机的路由表:

ip route

示例输出:

default via 192.168.3.221 dev ens18
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
192.168.3.0/24 dev ens18 proto kernel scope link src 192.168.3.238 metric 100
192.168.3.1 dev ens18 proto dhcp scope link src 192.168.3.238 metric 100

解释:

  • 192.168.3.238 → 本机 IP。

  • 192.168.3.221 → 默认网关,已经指向旁路由。

  • 192.168.3.1 → 主路由(ISP 网关),目前只是直连,不再作为默认出口。

从结果可以看到,本机的 默认网关已经成功切换到旁路由


二、临时修改默认网关

如果当前默认网关不是旁路由,可以通过以下命令修改:

# 删除原默认网关
sudo ip route del default

# 添加新的默认网关为旁路由(假设 IP 是 192.168.3.221)
sudo ip route add default via 192.168.3.221

此方法临时生效,重启网络或系统后会恢复原状。


三、永久修改网关

不同发行版使用的网络管理方式不同,可以通过以下几种方式永久修改。

1. Netplan(Ubuntu 18.04+,Debian 11+ 常见)

编辑 /etc/netplan/01-netcfg.yaml

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - 192.168.3.238/24
      gateway4: 192.168.3.221
      nameservers:
        addresses: [192.168.3.221, 8.8.8.8]

应用配置:

sudo netplan apply

2. NetworkManager(桌面版 Linux 常用)

nm-connection-editor
  • 编辑当前连接 → IPv4 → 手动设置网关为旁路由 IP。

  • DNS 同样设置为旁路由或其他公共 DNS。


3. /etc/network/interfaces(老式 Debian 系统)

编辑文件:

auto eth0
iface eth0 inet static
  address 192.168.3.238
  netmask 255.255.255.0
  gateway 192.168.3.221
  dns-nameservers 192.168.3.221 8.8.8.8

重启网络:

sudo systemctl restart networking

四、修改 DNS 以避免泄漏

即使默认网关已切换到旁路由,DNS 仍可能指向主路由(如 192.168.3.1)。检查:

cat /etc/resolv.conf

若需要,修改为:

nameserver 192.168.3.221

这样所有 DNS 查询也会走旁路由,避免泄漏。


五、验证结果

  1. 检查默认网关:

ip route | grep default
  1. 测试出口 IP:

curl -4 ip.sb
  1. 确认 DNS 是否生效:

dig google.com

总结

通过修改默认网关和 DNS,就能让 Linux 设备的所有流量走旁路由。

  • 临时测试可用 ip route 命令修改。

  • 永久修改需配置 Netplan、NetworkManager 或 interfaces。

  • 别忘了调整 DNS,确保不发生泄漏。

这样一来,Linux 主机即可与局域网内其他设备一样,享受旁路由带来的代理、分流等功能。