Ho letto la pagina man di ip
e ancora non capisco cosa src
sia e non sono riuscito a trovare molta documentazione.
Per favore, se puoi spiegarlo a fondo o indicare ad alcuni link una buona risposta.
Ho letto la pagina man di ip
e ancora non capisco cosa src
sia e non sono riuscito a trovare molta documentazione.
Per favore, se puoi spiegarlo a fondo o indicare ad alcuni link una buona risposta.
Risposte:
Quando si aggiunge una route a un host multihomed, è possibile che si desideri avere il controllo dell'indirizzo IP di origine da cui l'host sta inviando quando si avvia la comunicazione utilizzando questa route. Questo è lo scopo di src .
Un breve esempio: hai un host con due interfacce e gli indirizzi IP 192.168.1.123/24 e 10.45.22.12/24. Stai aggiungendo una route a 78.22.45.0/24 tramite 10.45.22.1 e vuoi assicurarti di non inviare a 78.22.45.0/24 utilizzando l'indirizzo 192.168.1.123 (forse perché la rete 78.22.45.0/24 non ha route indietro al 192.168.1.0/24 o perché non desideri che il tuo traffico segua questo percorso per un motivo o per l'altro):
ip route add 78.22.45.0/24 via 10.45.22.1 src 10.45.22.12
Nota che l' src che stai dando influenzerebbe solo il traffico proveniente dal tuo stesso host. Se un pacchetto esterno viene instradato, ovviamente avrebbe già un indirizzo IP di origine, quindi sarebbe trasmesso inalterato (a meno che tu non stia usando NAT ovviamente, ma questa è una faccenda completamente diversa). Inoltre, questa impostazione potrebbe essere sovrascritta da un processo che sceglie specificamente di associarsi a un indirizzo specifico invece di utilizzare le impostazioni predefinite quando si avviano connessioni (piuttosto rare).
L' src
attributo è un suggerimento utilizzato dall'algoritmo di selezione dell'indirizzo . È significativo quando un host ha più indirizzi IP, che di solito è, ma non sempre, quando ha più interfacce. Mentre ci sono altre regole che influenzano la selezione dell'indirizzo e un'applicazione di rete può anche sostituire l'algoritmo di selezione utilizzando chiamate di sistema come bind()
, l' src
attributo è un modo per utilizzare una ricerca nella tabella di routing per rispondere alla domanda "Se voglio avviare un connessione all'host X, quale dei miei indirizzi dovrei usare? "
Ecco un esempio per illustrare l'uso e l'effetto src
dell'attributo. Per sottolineare che ciò è correlato a indirizzi e route, non strettamente alle interfacce, questo host di esempio ha solo un'interfaccia di rete ma due indirizzi. Inoltre, entrambi gli indirizzi si trovano sulla stessa sottorete per sottolineare il fatto che non esiste un altro modo ovvio per scegliere quale utilizzare.
$ ip -4 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
inet 10.1.0.2/24 brd 10.1.0.255 scope global eth0
inet 10.1.0.16/24 scope global secondary eth0
$ ip route list dev eth0
10.1.0.32/27 scope link src 10.1.0.16
10.1.0.0/24 proto kernel scope link src 10.1.0.2
Questo host può comunicare con uno qualsiasi degli altri 252 indirizzi su questa / 24 sottorete da entrambi gli indirizzi, ma per impostazione predefinita utilizzerà 10.1.0.16 quando avvia una connessione da 10.1.0.32 a 10.1.0.63 e utilizzerà 10.1.0.2 per tutti i riposo.
Se l'host risponde, anziché avviare, risponderà dall'indirizzo di destinazione della richiesta. Ad esempio, se un altro host in 10.1.0.32 si connette a questo host in 10.1.0.2, la risposta arriverà da 10.1.0.2 anche se non corrisponde src
all'attributo della route di ritorno.