Puncte:0

Puntea Linux nu răspunde la solicitările ARP după ce este adăugată o regulă IP

drapel cn

Am o mașină virtuală creată cu libvirt/qemu/kvm atașată cu un TAP la un bridge Linux (virbr1). În interior, VM-ul are un IP de 10.99.0.9. Și are următoarea configurație de rutare.

implicit prin 10.99.0.1 dev enp1s0 proto static onlink 
10.99.0.1 prin 10.99.0.1 dev enp1s0 proto static onlink 

Aici 10.99.0.1 este IP-ul podului

Am vrut ca tot traficul care vine de la acel VM să meargă la o rută VPN (wg0) pe care am configurat-o, așa că pe gazdă am făcut-o

ip route add default dev wg0 tabelul 42
Adăugarea regulii ip din 10.99.0.9 tabelul 42

Acest lucru a funcționat bine, dar am observat că în interiorul VM-ului puteam încă să dau ping la IP-ul mașinii gazdă 192.168.2.1. În cele din urmă mi-am dat seama că acest lucru se datorează faptului că căutare locală ip rule are o preferință de 0 care este mai mare decât cea a regulii pe care am adăugat-o. M-am gândit că voi schimba pur și simplu comanda și totul va fi bine.

regulă ip adăugați preferință 300 căutare locală # 300 aici este arbitrar mai mare decât 0
regulă ip de preferință 0
regulă ip adăugați din 10.99.0.9 tabelul 42 preferința 0

Cu toate acestea, după ce fac acest lucru, acum nu am conectivitate în VM. Dacă adulmec pe bridge-ul linux, văd că trimite continuu cererea ARP căutând cine are 10.99.0.1 , și nu primește niciun răspuns. Nu am crezut că aceste decizii de rutare ar trebui să afecteze deloc ARP, deoarece acționează alături de IP, așa că acest lucru a fost confuz. Am confirmat că exact acele linii cauzează problema

De ce răspunsurile ARP nu ajung înapoi la interfața VM?

drapel ph
Nu sunt chiar sigur, dar cred că ar putea fi necesar să activați modul promiscuu
Puncte:1
drapel it

Impresia mea este că răspunsul tău este oferit în întrebarea ta.

Ați schimbat preferința pentru regula IP locală de la 0 la 300, prin urmare, a împins ruta implicită să fie cea mai preferată:

ip route add default dev wg0 tabelul 42
Adăugarea regulii ip din 10.99.0.9 tabelul 42
#și în cele din urmă:
regulă ip adăugați din 10.99.0.9 tabelul 42 preferința 0

ceea ce a făcut ca nucleul să prefere această rută exclusiv.

Ai spus: „Văd că trimite continuu cererea ARP pentru a căuta cine are 10.99.0.1 și nu primește niciun răspuns.”

ceea ce este rezonabil, deoarece transmisiunile ARP sunt destinate wg0 interfață în care niciun dispozitiv nu are 10.99.0.1 Adresa IP (presupun).

solutie?

Sfatul meu este să nu vă încurcați cu prioritatea rutei și, dacă este necesar - firewall accesul care nu este necesar pentru VM de către iptables.

drapel cn
Aveam impresia că pachetele /IP/ care vin de la 10.99.0.9 vor fi direcționate către interfața wg, totuși un mesaj ARP nu este un pachet IP. Nu credeam că regulile IP nu vor face nimic până când pachetele IP reale au început să zboare, ceea ce se întâmplă doar odată ce interfața din VM știe ce MAC să-și trimită și pachetele. Acest lucru nu este corect?
Roman Spiak avatar
drapel it
Privind îndeaproape https://en.wikipedia.org/wiki/Address_Resolution_Protocol#Packet_structure, aveți dreptate să presupuneți că ARP operează pe Layer2 al OSI și rutele IP sunt Layer3, astfel încât ARP nu este afectat de rutarea IP.Cu toate acestea, vă rugăm să căutați îndeaproape ce face această comandă: `ip route add default dev wg0 table 42` prin mirosirea podului înainte și după aplicarea acesteia, deoarece bănuiesc că poate interfera și cu layer2...
Tom Yan avatar
drapel in
Cred că rutele locale sunt cele care determină dacă cererea ARP ar trebui să fie răspunsă, cum ar fi dacă sistemul este configurat să ignore toată ruta locală, atunci nu va răspunde la solicitările ARP. (Pentru detalii, ar putea fi necesar să verificați codul kernelului; rețineți că prioritatea 0 este destul de specială. Este posibil ca acesta să nu verifice tabelul local când nu există nicio regulă de prioritate 0 care să o caute.)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.