Предпочитать WIFI для доступа к определенным доменам

У меня есть два сетевых интерфейса для Ethernet и Wi-Fi. Я хотел бы сказать своему компьютеру, чтобы он предпочитал использовать подключение Wi-Fi (всякий раз, когда он подключен) для доступа к определенным доменам, и использовать подключение кабеля Ethernet n для всего остального.

Можно ли как-нибудь настроить эту игру с / etc / hosts , resolv.conf или чем-то еще?

0
задан 13 July 2021 в 21:00

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 

Первые две строки здесь показывают шлюзы по умолчанию для моего Ethernet (enp0s31f6) и Wi-Fi (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

Затем добавляю маршрут для каждого из этих IP-адресов назначения через интерфейс Wi-Fi (используя шлюз по умолчанию интерфейса Wi-Fi, полученный с помощью первой команды):

sudo route add -host 162.159.137.232 gw 192.168.200.68

и т. д.

Чтобы делать все это автоматически при каждом подключении Wi-Fi, если вы используете 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 ], когда интерфейс переходит в оперативный режим). Я добавил сюда запись в файл в моем домашнем каталоге, чтобы убедиться, что все работает.

Теперь, когда я подключаю свой Wi-Fi, этот скрипт запускается и добавляет соответствующие маршруты в Discord через шлюз Wi-Fi по умолчанию.

0
ответ дан 28 July 2021 в 11:19

Другие вопросы по тегам:

Похожие вопросы: