优先使用 WIFI 访问某些域名

优先使用 WIFI 访问某些域名

我有两个网络接口,一个用于以太网,一个用于 wifi。我想让我的电脑优先使用 wifi 连接(无论何时连接)来访问某些域,其余的都使用以太网电缆连接。

有什么方法可以设置这个/etc/hostsresolv.conf或者其他什么?

答案1

好的,看来我找到了解决方案。

检查已设置了哪些路线:

$ ìp route show

在我的例子中,结果如下:

default via 192.168.0.1 dev enp0s31f6 proto dhcp metric 100 
default via 192.168.200.68 dev wlp4s0 proto dhcp metric 600 
169.254.0.0/16 dev enp0s31f6 scope link metric 1000 
192.168.0.0/24 dev enp0s31f6 proto kernel scope link src 192.168.0.151 metric 100 
192.168.200.0/24 dev wlp4s0 proto kernel scope link src 192.168.200.78 metric 600 

这里的前两行分别显示了我的以太网(enp0s31f6)和 wifi(wlp4s0)的默认网关。

现在,为了找到我总是被禁止的域名的 IP,我使用dig以下命令:

$ dig +short a discord.com
162.159.137.232
162.159.135.232
162.159.128.233
162.159.136.232
162.159.138.232
$ dig +short a discord.gg
162.159.136.234
162.159.135.234
162.159.133.234
162.159.134.234
162.159.130.234

然后通过 Wifi 接口为每个目标 IP 添加一条路由(使用我们从第一个命令获得的 Wifi 接口的默认网关):

sudo route add -host 162.159.137.232 gw 192.168.200.68

ETC。

要在 WiFi 连接时自动执行所有这些操作,如果您使用 NetworkManager,则可以将脚本添加到目录中/etc/NetworkManager/dispatcher.d。例如:

sudo nano /etc/NetworkManager/dispatcher.d/10-bloody-routes

10-文件名开头的“这里”表示优先级。目录中的脚本在dispatcher.d网络事件(接口连接、断开连接等)上按字典顺序运行。

我在这里输入了这个 bash 脚本来自动执行上述过程:

#!/bin/bash

if [ "$1" == "wlp4s0" ] && [ "$2" == "up" ]; then
  gateway=`ip route | awk '/default/ { print $3 " " $5 }' | awk '/wlp4s0/ { print $1 }'`;
  echo "What's up, $gateway: "`date` >> /home/trollkotze/smackmybitch.up;
  echo discord.com >> /home/trollkotze/smackmybitch.up;
  for x in `dig +short a discord.com`; do
    echo route add -host $x gw $gateway >> /home/trollkotze/smackmybitch.up;
    route add -host $x gw $gateway >> /home/trollkotze/smackmybitch.up;
  done;
  echo discord.gg >> /home/trollkotze/smackmybitch.up;
  for x in `dig +short a discord.gg`; do
    echo route add -host $x gw $gateway >> /home/trollkotze/smackmybitch.up;
    route add -host $x gw $gateway >> /home/trollkotze/smackmybitch.up;
  done;
fi;

从脚本中可以看出,第一个和第二个参数是接口名称(在我的情况下,我正在寻找wlp4s0)和事件(我正在寻找up接口上线时的事件)。我在这里向主目录中的文件添加了一些日志记录,以验证一切是否正常。

每当我连接我的 wifi 时,这个脚本就会运行并通过 wifi 的默认网关将适当的路由添加到 Discord。

相关内容