Bine, se pare că am găsit soluția.
Verificați ce rute sunt configurate:
$ ìp spectacol de traseu
care în exemplul meu dă acest rezultat:
implicit prin 192.168.0.1 dev enp0s31f6 proto dhcp metric 100
implicit prin 192.168.200.68 dev wlp4s0 proto dhcp metric 600
169.254.0.0/16 dev enp0s31f6 metric link link 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
Primele două linii de aici arată gateway-urile implicite ale ethernetului meu (enp0s31f6) și, respectiv, wifi (wlp4s0).
Acum, pentru a găsi IP-urile domeniilor în care sunt întotdeauna interzis, folosesc săpa
comandă după cum urmează:
$ dig +scurt a discord.com
162.159.137.232
162.159.135.232
162.159.128.233
162.159.136.232
162.159.138.232
$ dig +scurt a discord.gg
162.159.136.234
162.159.135.234
162.159.133.234
162.159.134.234
162.159.130.234
Apoi adăugați o rută pentru fiecare dintre aceste IP-uri de destinație prin interfața Wifi (folosind gateway-ul implicit al interfeței Wifi pe care l-am primit de la prima comandă):
sudo route add -host 162.159.137.232 gw 192.168.200.68
etc.
Pentru a face toate acestea automat ori de câte ori se conectează wifi-ul, dacă utilizați NetworkManager, puteți adăuga un script la /etc/NetworkManager/dispatcher.d
director. De exemplu:
sudo nano /etc/NetworkManager/dispatcher.d/10-bloody-routes
The 10-
aici la începutul numelui fișierului indică prioritatea. Scripturi în dispecer.d
directorul sunt rulate în ordine lexicografică pe evenimentele din rețea (interfață conectată, deconectată etc.)
Am introdus acest script bash aici pentru a automatiza procesul menționat mai sus:
#!/bin/bash
if [ "$1" == "wlp4s0" ] && [ "$2" == "sus" ]; atunci
gateway=`rută ip | awk '/default/ { print $3 " " $5 }' | awk '/wlp4s0/ { print $1 }'`;
echo "Ce mai faci, $gateway: "`date` >> /home/trollkotze/smackmybitch.up;
echo discord.com >> /home/trollkotze/smackmybitch.up;
pentru x în `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;
Terminat;
echo discord.gg >> /home/trollkotze/smackmybitch.up;
pentru x în `dig +scurt 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;
Terminat;
fi;
După cum puteți vedea din script, primul și al doilea argument sunt numele interfeței (în cazul meu, caut wlp4s0
) și evenimentul (caut sus
eveniment când interfața este online).
Am adăugat o înregistrare într-un fișier din directorul meu de acasă aici pentru a verifica dacă totul funcționează.
Ori de câte ori îmi conectez wifi-ul acum, acest script este rulat și adaugă rutele corespunzătoare la Discord prin gateway-ul implicit al wifi.