[Risolto] Rete WiFi + Rete ETH e decidere dove inoltrare le richieste

Un piccolo problema che mi costringe sempre a disabilitare una rete per poter usare l’altra.

Ho un PC portatile (F23 KDE) con WIFI collegata alla mia rete locale (ip dato da dhcp) e una scheda ethernet collegata ad altro router (sempre dhcp) che esce all’esterno via ADSL.

In soldoni la rete wifi è quella a cui è collegata la mia stampante di rete, la rete eth è quella invece che uso per internet.
Ogni volta che devo stampare un file sono costretto a scollegarmi dalla ETH, stampare e poi ricollegarmi perché sembra che alla scheda eth siano indirizzate tutte le chiamate di rete…

Esiste un modo per poter stabilire una politica d’uso per le due reti???
Per esempio dire… tutto ciò che riguarda internet dirigilo su ETH e la stampante su WIFI…

Potresti impostare una rotta statica per “forzare” il pc ad utilizzare la rete della wi-fi quando devi stampare o configuare delle regole tramite iptables.

Nelle impostazioni della tua rete wifi, sotto IPv4, puoi spuntare “Usare questa connessione solo per risorse nella tua rete”.

Sembrava troppo facile…
nella mia wifi Sotto ipv4 ho il metodo automatica (ho provato anche collegamento locale ma non stampa)
cliccando su “rotte” ho spuntato “utilizza solo per le risorse su questa connessione”
NIENTE
ho puntato anche “ignora le rotte ottenute automaticamente”
NIENTE
ho inserito anche l’indirizzo della stampante e il netmask (gateway e metrica lasciati bianchi)
NIENTE

Per NIENTE intendo che con entrambe le reti attive il processo di stampa non va sulla wifi tant’è che dice “stampante non raggiungibile”

Per sicurezza ho rimesso la wifi come in originale…

Hai provato poi a riattivare entrambe le connessioni? Sennò le modifiche non vengono applicate.

yes
… sempre la stessa cosa
se può essere d’aiuto anche il ping fa così… funziona solo quando sconnetto ETH e rimane solo la wifi

La politica di utilizzo delle rete viene determinata dalla priorità dei link stessi. Senza approfondire molto, perché il routing non può essere spiegato in 4 righe, ogni link ha un punteggio (piú é basso, meglio é) e il sistema decide sempre di usare il link con punteggio piú basso.

Se esegui

ip route

puoi vedere in fondo a (quasi) ogni riga “metric X”.
Sintentizzando come risolvere il problema, bisogna “forzare” per la rete locale una metric piú bassa sulla wireless che non sulla wired. Se ci posti i valori del tuo ip route, possiamo aiutarti in modo specifico a risolvere il problema :slight_smile:

Eccolo

ip route
default via 192.168.0.1 dev enp0s20u2u4  proto static  metric 100 
192.168.0.0/24 dev enp0s20u2u4  proto kernel  scope link  src 192.168.0.4  metric 100 
192.168.0.0/24 dev wlp1s0  proto kernel  scope link  src 192.168.0.2  metric 600 
192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1 

in effetti la mia wlp1s0 ha un metric 600 contro 100 dell’altra
non è che però poi quando devo andare su internet forziamo pure ad usare la wifi ? perché poi il problema s’inverte!!!

Puoi provare aggiungendo una rotta statica da terminale:

route add <ip_stampante> mask <ip_scheda_wifi>

Penso che tu debba aggiungere sulla wireless una regola IPv4 (su NM per gnome io lo trovo in IPv4 -> Routes) impostando come address 192.168.0.0, come netmast 255.255.255.0, gateway lascialo vuoto e metric metti 1.
Riavviando la connessione wireless, dovresti vedere una cosa tipo:

ip route default via 192.168.0.1 dev enp0s20u2u4 proto static metric 100 192.168.0.0/24 dev wlp1s0 proto kernel scope link src 192.168.0.2 metric 1 192.168.0.0/24 dev enp0s20u2u4 proto kernel scope link src 192.168.0.4 metric 100 192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1

e il tutto dovrebbe andare correttamente come ti aspetti!

qualcosa non va…

# route add 192.168.0.33 mask 255.255.255.0 192.168.0.2
Syntaxe: inet_route -vF] del {-host|-net} Cible[/prefix] [gw Gw] [metric M] [dev] If]
       inet_route -vF] add {-host|-net} Cible[/prefix] [gw Gw] [metric M]
                              [netmask N] [mss Mss] [window W] [irtt I]
                              [mod] [dyn] [reinstate] [dev] If]
       inet_route -vF] add {-host|-net} Cible[/prefix] [metric M] reject
       inet_route -FC] flush      PAS supporté

oppure

# route add 192.168.0.33 netmask 255.255.255.0 192.168.0.2
route: netmask 000000ff n'a pas de sens pour une route vers un hôte
Syntaxe: inet_route -vF] del {-host|-net} Cible[/prefix] [gw Gw] [metric M] [dev] If]
       inet_route -vF] add {-host|-net} Cible[/prefix] [gw Gw] [metric M]
                              [netmask N] [mss Mss] [window W] [irtt I]
                              [mod] [dyn] [reinstate] [dev] If]
       inet_route -vF] add {-host|-net} Cible[/prefix] [metric M] reject

chissà perché poi da i messaggi in francese!!!

Una nota che forse può essere importante:
nella rete locale ci sono solo io e la stampante. Lei ha un ip statico (192.168.0.33) ma la rete ha un dhcp e mi assegna 192.168.0.2
Il Router è configurato per gli indirizzi 192.168.0.XXX

Dall’altra parte la ETH è collegata ad altro router con DHCP che ha il medesimo range (192.168.0.xxx) e mi assegna l’indirizzo 192.168.0.4 con il quale navigo.

Forse può esserci un po’ di casino ma per ora non ho nessun conflitto…

prova così:

route add 192.168.0.0 netmask 255.255.255.0 192.168.0.1

In questo modo forzi la stampante ad utilizzare come gateway quello della scheda wifi

beh fa uguale

# route add 192.168.0.0 netmask 255.255.255.0 192.168.0.1
route: netmask 000000ff n'a pas de sens pour une route vers un hôte
Syntaxe: inet_route -vF] del {-host|-net} Cible[/prefix] [gw Gw] [metric M] [dev] If]
       inet_route -vF] add {-host|-net} Cible[/prefix] [gw Gw] [metric M]
                              [netmask N] [mss Mss] [window W] [irtt I]
                              [mod] [dyn] [reinstate] [dev] If]
       inet_route -vF] add {-host|-net} Cible[/prefix] [metric M] reject
       inet_route -FC] flush      PAS supporté

Per fale… io su KDE ho il pulsante rotte e ho inserito appunto 192.168.0.0 netmast 255.255.255.0, gateway vuoto e metric metti 1
Riavviata la connessione ma…

ip route
default via 192.168.0.1 dev enp0s20u2u4  proto static  metric 100 
default via 192.168.0.1 dev wlp1s0  proto static  metric 600 
192.168.0.0/24 dev enp0s20u2u4  proto kernel  scope link  src 192.168.0.4  metric 100 
192.168.0.0/24 dev wlp1s0  proto kernel  scope link  src 192.168.0.2  metric 600 
192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1

prova a metter come netmast 255.255.255.255 e come ip quello della stampante (gateway e metric come prima) e riavvia la connessione

niente da fare…
ho provato con
192.168.0.33 (stampante)
192.168.0.0
192.168.0.1
netmask 255.255.255.255

provato pure a spuntare e non i riquadri
“utilizza solo per le risorse su questa connessione”
“ignora le rotte ottenute automaticamente”

niente da fare… la metrica della wifi rimane a 600

non è che la gestione di rete qui in kde ha qualche problemino???

e agire da konsole??

Scusa l’output di:

netstat -nr

E comunque così dovrebbe essere giusto:

route add -host <ip_stampante> netmask 255.255.255.0 gw <ip_gw> dev <nome_scheda_wifi>
# netstat -nr
Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic   MSS Fenêtre irtt Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG        0 0          0 enp0s20u2u4
0.0.0.0         192.168.0.1     0.0.0.0         UG        0 0          0 wlp1s0
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 enp0s20u2u4
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 wlp1s0
192.168.122.0   0.0.0.0         255.255.255.0   U         0 0          0 virbr0

risultato

# route add -host 192.168.0.33  netmask 255.255.255.0 gw 192.168.0.1 dev wlp1s0
route: netmask 000000ff n'a pas de sens pour une route vers un hôte
Syntaxe: inet_route -vF] del {-host|-net} Cible[/prefix] [gw Gw] [metric M] [dev] If]
       inet_route -vF] add {-host|-net} Cible[/prefix] [gw Gw] [metric M]
                              [netmask N] [mss Mss] [window W] [irtt I]
                              [mod] [dyn] [reinstate] [dev] If]
       inet_route -vF] add {-host|-net} Cible[/prefix] [metric M] reject
       inet_route -FC] flush      PAS supporté

Scusa hai detto che sei collegato sia con la scheda fisica che con quella wifi, giusto?

Puoi inviare anche l’output del comando:

ifconfig

poi chissà perché ho le segnalazioni in francese!!!

$ ifconfig
enp0s20u2u4: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.4  netmask 255.255.255.0  broadcast 192.168.0.255
        ether 12:f2:f1:a9:17:7e  txqueuelen 1000  (Ethernet)
        RX packets 51439  bytes 30440255 (29.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 53320  bytes 14067005 (13.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Boucle locale)
        RX packets 167  bytes 14296 (13.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 167  bytes 14296 (13.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:b8:f4:a7  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.2  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::3e77:e6ff:fe18:b5cb  prefixlen 64  scopeid 0x20<link>
        ether 3c:77:e6:18:b5:cb  txqueuelen 1000  (Ethernet)
        RX packets 14200  bytes 1293721 (1.2 MiB)
        RX errors 0  dropped 34  overruns 0  frame 0
        TX packets 8515  bytes 10165360 (9.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0