Puncte:0

Serverul Linux ignoră pachetele de la gateway

drapel ke
ENM

Am un server Proxmox Linux, care este capabil să trimită și să primească pachete către gazdele din rețeaua locală, dar nu va procesa pachete de la gateway. Acest lucru face ca traficul de internet să eșueze, așa că nu pot rula apt pentru a actualiza pachetele. Toate protocoalele par a fi afectate.

VM-uri care rulează pe server poate sa accesează bine gateway-ul.

Fișierul meu /etc/network/interfaces conține:

auto lo
iface lo inet loopback

iface enp10s0 inet manual

auto vmbr0
iface vmbr0 inet static
    adresa 10.0.1.200/24
    gateway 10.0.1.1
    bridge_ports enp10s0
    bridge_stp off
    bridge_fd 0

auto wlp7s0
iface wlp7s0 inet static
    hostapd /etc/hostapd/hostapd.conf
    adresa 10.0.2.1
    mască de rețea 255.255.255.0

auto vmbr1
iface vmbr1 inet static
    adresa 10.1.2.1
    mască de rețea 255.255.255.0
    bridge_ports niciunul
    bridge-stp off
    punte-fd 0

    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up iptables -t nat -A POSTROUTING -s '10.1.2.0/24' -o wlp7s0 -j ​​MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '10.1.2.0/24' -o wlp7s0 -j ​​MASQUERADE

wlp7s0 și vmbr1 sunt NAT pentru a permite unei VM să acceseze dispozitive IOT fără fir care nu ar trebui să aibă acces la rețeaua generală/internet.

Tabelul meu de rute:

$ traseu ip
implicit prin 10.0.1.200 dev vmbr0 metric 100 
10.0.1.0/24 dev vmbr0 proto kernel scope link src 10.0.1.200 
10.0.2.0/24 dev wlp7s0 proto kernel scope link src 10.0.2.1 
10.1.2.0/24 dev vmbr1 proto kernel scope link src 10.1.2.1

După câteva citite, am încercat să schimb rp_filter, dar schimbarea valorii de la 2 la 0 nu a ajutat. Setările implicite (cu interfețele VM eliminate):

$ sysctl -a | grep \.rp_filter
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.enp10s0.rp_filter = 0
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.vmbr0.rp_filter = 0
net.ipv4.conf.vmbr1.rp_filter = 0
net.ipv4.conf.wlp7s0.rp_filter = 0

ip_forward este setat:

$ cat /proc/sys/net/ipv4/ip_forward
1

Am verificat prin tcpdump că sunt primite pachete de la gateway atunci când încerc să fac ping de la server la gateway sau de la server la gateway. Acest exemplu folosește ping:

# tcpdump -n -i vmbr0 gazdă 10.0.1.1 și icmp
tcpdump: ieșirea verbosă a fost suprimată, utilizați -v sau -vv pentru decodarea completă a protocolului
ascultare pe vmbr0, tip link EN10MB (Ethernet), dimensiunea capturii 262144 octeți
22:42:37.136341 IP 10.0.1.200 > 10.0.1.1: Solicitare ecou ICMP, id 22073, secv 1, lungime 64
22:42:37.136478 IP 10.0.1.1 > 10.0.1.200: răspuns ecou ICMP, id 22073, seq 1, lungime 64
22:42:38.142240 IP 10.0.1.200 > 10.0.1.1: Solicitare ecou ICMP, id 22073, secv. 2, lungime 64
22:42:38.142429 IP 10.0.1.1 > 10.0.1.200: răspuns ecou ICMP, id 22073, secv 2, lungime 64

Ieșirea lui ping -v este pur și simplu goală:

$ ping -v 10.0.1.1
PING 10.0.1.1 (10.0.1.1) 56(84) octeți de date.
^C
--- 10.0.1.1 statistici ping ---
22 de pachete transmise, 0 primite, 100% pierdere de pachete, timp 511 ms

Singura intrare în tabelele ip este NAT:

# iptables-save -c
# Generat de iptables-save v1.8.2 pe sâmb. 29 ianuarie 22:45:46 2022
*brut
:ACCEPTAREA PRE-ROUTARE [1828405583:1847667077335]
: ACCEPT IEȘIRE [10762322:981310704]
COMMIT
# Finalizat sâmb. 29 ianuarie 22:45:46 2022
# Generat de iptables-save v1.8.2 pe sâmb. 29 ianuarie 22:45:46 2022
*filtru
:INPUT ACCEPT [10597558:1212589593]
:ACCEPTAȚI înainte [1782904005:1841102268241]
: ACCEPT IEȘIRE [10762351:981313827]
COMMIT
# Finalizat sâmb. 29 ianuarie 22:45:46 2022
# Generat de iptables-save v1.8.2 pe sâmb. 29 ianuarie 22:45:46 2022
*nat
:ACCEPTAREA PREROUTARE [29808561:4940456833]
:INPUT ACCEPT [2456738:231340403]
: ACCEPT IEȘIRE [1168080:75403202]
: POSTROUTING ACCEPT [2829337:181352732]
[190:11400] -A POSTROUTING -s 10.1.2.0/24 -o wlp7s0 -j ​​MASQUERADE
COMMIT
# Finalizat sâmb. 29 ianuarie 22:45:46 2022
Nikita Kipriyanov avatar
drapel za
Ciudat. Probabil este scăpat sau deviat la nivelul mai jos de 3, de pod? Adăugați `ip neigh`, `ip link`, `bridge fdb show`. Sunteți sigur că nu există alt sistem (de exemplu, un VM) cu adresa 10.0.1.200? Încercați să rulați `tcpdump -e` pentru a vedea adresele MAC și a compara adresele MAC cu informațiile obținute cu alte comenzi.
drapel ke
ENM
Mulțumesc pentru comentariul tău @NikitaKipriyanov, m-a dus la cauza problemei! Am postat detalii într-un răspuns de mai jos pentru a ajuta dacă alții se confruntă vreodată cu așa ceva.
Puncte:0
drapel ke
ENM

Cu mulțumiri lui Nikita Kipriyanov pentru că m-a îndreptat în direcția corectă, am rezolvat problema.

La alergare

tcpdump -en gazdă 10.0.1.1

Am observat că au venit răspunsuri ping pe o interfață care nu exista pe sistem:

# tcpdump -en gazdă 10.0.1.1
tcpdump: ieșirea verbosă a fost suprimată, utilizați -v sau -vv pentru decodarea completă a protocolului
ascultare pe enp10s0, tip link EN10MB (Ethernet), dimensiunea capturii 262144 octeți
10:01:49.233889 24:4b:fe:4a:11:96 > 02:29:9a:f3:0a:00, ethertype IPv4 (0x0800), lungime 98: 10.0.1.200 > 10.0.1.1: cerere ICMP echo id 5544, secv 1, lungime 64
10:01:49.234053 02:29:9a:f3:0a:00 > 00:26:18:e2:68:f9, ethertype IPv4 (0x0800), lungime 98: 10.0.1.1 > 10.0.1.200 rep. echo: IC id 5544, secv 1, lungime 64

Aceasta înseamnă că sistemul vedea pachetele primite cu adresa IP corectă sub tcpdump, dar le ignora corect pentru procesare pe baza adresei MAC.

Am verificat configurația de pe routerul gateway și am observat că avea o intrare ARP fixă ​​cu acea adresă proastă (probabil o configurație veche). Schimbarea setării gateway-ului la adresa MAC a lui enp10s0 a rezolvat problema.

Nikita Kipriyanov avatar
drapel za
Vă rugăm să acceptați propriul răspuns dacă a rezolvat problema. Nu numai că acest lucru îi ajută pe viitorii cititori să identifice sufletul, ci și împiedică întrebarea să plutească ca fără răspuns.

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.