In quali circostanze Linux ignorerà la tabella di path quando si sceglie l'indirizzo MAC per un frame in output?

Durante il debug di un problema con la configuration di networking per un insieme di macchine virtuali in esecuzione sotto KVM, ho scoperto una circostanza in cui il kernel dell'ospite VM ha deciso di timbrare il frame Ethernet in output con un indirizzo di destinazione in conflitto con l'indirizzo che avrebbe scegliere se rispetta la tabella del path del kernel IP.

Quindi, in questo esempio, mi aspettavo che il frame in output venisse consegnato a: ad: be: 3b: 24: 48 che corrisponde all'host che possiede l'indirizzo IP 10.11.11.2 e che possiede un path a 10.8.0.0/24 .

  • Come fissare il tempo sul server NTP con un sacco di macchine sincronizzate da esso
  • vantaggi nella chiusura di un porto in cui non sono in esecuzione servizi
  • Linux: process di background collegato alla window terminal
  • La crescita di net.core.somaxconn farà la differenza?
  • Come ridurre al minimo il riavvio del server Linux
  • OpenSSH come server SFTP: Trigger i cambiamenti riusciti e difettosi
  • Quello che è accaduto è che il kernel ha deciso di timbrare il fotogramma con una destinazione di 00: 10: db: ff: 70: 01 che ha inviato il fotogramma in direzione di 10.11.11.1 che non sa come fare per 10.8.0.0 / 24 e di conseguenza il pacchetto è stato abbandonato.

    Questa decisione era in contraddizione con la tabella di instradamento locale che specificava chiaramente che il path verso 10.8.0.0/24 era tramite il 10.11.11.2. Vedere il rapporto problema originale per i dettagli.

    [L'indirizzo errato di destinazione è stato visibile eseguendo tcpdump nel guest VM che stava inviando il frame nella direzione errata].

    Infatti, scollegando la tabella arp locale per rendere l'indirizzo MAC apparente di 10.11.11.1 identico all'indirizzo MAC effettivo di 10.11.11.2, ho potuto get il frame che scorre nella direzione corretta.

    Quindi la mia domanda è: quale meccanismo, sia nel guest VM che nell'host KVM, potrebbe causare il kernel guest ignorare la tabella di path locale e submit il pacchetto in un frame verso l'host (errato) a 10.11.11.1, anche se 10.11 .11.1 non è stato elencato come gateway per la networking di destinazione (10.8.0.0/24)?

    Nota: iptables è stato distriggersto all'ospite all'epoca. Non so se ebtables è abilitato nell'host KVM, ma anche se fosse, come potrebbe causare il kernel nell'ospite VM di voler submit il pacchetto in direzione di 10.11.11.1?

    Un comportmento che ho notato è che se spurgo le tabelle ARP dell'host interessato e invia una richiesta ping all'host interessato dalla networking 10.8.0.0/24, riceve la richiesta, quindi invia una trasmissione arp per 10.11.11.1 immediatamente prima di submit la risposta ping nella direzione di 10.11.11.1 anziché 10.11.11.2 e quindi 10.8.0.0/24. Cosa provoca 10.11.11.1 che non è specificato come gateway?

    One Solution collect form web for “In quali circostanze Linux ignorerà la tabella di path quando si sceglie l'indirizzo MAC per un frame in output?”

    Forse o per il path basato su policy? Linux può avere diverse tabelle di routing e scegliere quale da utilizzare in base a diverse condizioni. Controllare la documentazione di OpenVZ sul routing basato su Source

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.