Puncte:0

Rutare între două plăci de rețea

drapel ua
Adi

Încerc să direcționez traficul între diferite rețele și am urmat un ghid pe care l-am găsit aici: https://devconnected.com/how-to-add-route-on-linux/

Iată o diagramă care sper să descrie în mod adecvat aranjamentul cu care lucrez:

Windows 10 Ubuntu Linux
172.31.0.X <----------> 172.31.0.33 (eno1)
                        10.0.40.1 (enp2s0f0) <----------> 10.0.40.10

Am o rută permanentă setată pe PC-ul Windows pentru a direcționa orice trafic pentru 10.0.40.0/24 prin 172.31.0.33.

Route Print output

Mașina Ubuntu este configurată să direcționeze traficul destinat 10.0.40.0/24 prin 10.0.40.1.

ieșire ip r

Pingul 10.0.40.10 de pe mașina Ubuntu funcționează conform așteptărilor.

Dacă dau ping la 10.0.40.10 de pe computerul Windows, pot vedea că mesajele ICMP ajung la interfața 172.31.0.33 de pe mașina Ubuntu folosind tcpdump. Nu văd trafic pe interfața 10.0.40.1 pe mașina respectivă. Se pare că mașina Ubuntu nu direcționează traficul așa cum m-aș aștepta. Poate cineva să facă lumină asupra a ceea ce am ratat?

Adăugarea rezultatelor:

iptables -S

pentru mașina Ubuntu:

sudo iptables -S
# Avertisment: tabele iptables-legacy sunt prezente, utilizați iptables-legacy pentru a le vedea
-P ACCEPT INTRARE
-P ACCEPTĂ ÎN ÎNTÂMPRE
-P ACCEPT IEȘIRE
-A FORWARD -i eno1 -j ACCEPT
-A FORWARD -i enp2s0f0 -j ACCEPT
adi@LabBuildServer:~$ sudo iptables-legacy -S
[sudo] parola pentru adi:
-P ACCEPT INTRARE
-P PĂDURA ÎNTÂMPRE
-P ACCEPT IEȘIRE
-N DOCKER
-N DOCKER-IZOLARE-ETAPA-1
-N DOCKER-ETAPA DE IZOLARE-2
-N DOCKER-UTILIZATOR
-UN FORWARD -j DOCKER-UTILIZATOR
-A ÎNAINTE -j DOCKER-ETAPA DE IZOLARE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,STABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A ÎNTÂMPRE -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -o br-e925d11be2da -m conntrack --ctstate RELATED,ESTABLISHED -j ACCE PT
-A FORWARD -o br-e925d11be2da -j DOCKER
-A ÎNTÂMPRE -i br-e925d11be2da ! -o br-e925d11be2da -j ACCEPT
-A FORWARD -i br-e925d11be2da -o br-e925d11be2da -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-e925d11be2da ! -o br-e925d11be2da -j DOCKER-IS OLATION-STAGE-2
-A DOCKER-IZOLARE-ETAPA-1 -j RETURNARE
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-e925d11be2da -j DROP
-A DOCKER-IZOLARE-ETAPA-2 -j RETURNARE
-UN DOCKER-USER -j RETURN

Ieșire din:

ruta ip

pe gazda Linux:

ruta ip
implicit prin 10.0.40.1 dev br-POE proto static
10.0.40.0/24 dev br-POE proto kernel scope link src 10.0.40.10

Mașină Ubuntu:

adi@LabBuildServer:~$ sudo iptables -t nat -L
[sudo] parola pentru adi:
# Avertisment: tabele iptables-legacy sunt prezente, utilizați iptables-legacy pentru a le vedea
PRERUUTARE în lanț (politica ACCEPTĂ)
target prot opt ​​sursă destinație

INTRARE în lanț (politica ACCEPTĂ)
target prot opt ​​sursă destinație

POSTOUTING în lanț (politica ACCEPT)
target prot opt ​​sursă destinație
MASQUERADE toate -- oriunde oriunde
MASQUERADE toate -- oriunde oriunde

Ieșire în lanț (politica ACCEPT)
target prot opt ​​sursă destinație
drapel in
Este `/proc/sys/net/ipv4/ip_forward` setat la `1`? Știu, lucruri de bază, dar am pierdut socoteala de câte ori mi-am îngreunat viața uitând-o.
Adi avatar
drapel ua
Adi
Bună @Lacek. Da, este setat la 1. Merită întotdeauna verificat! Mulțumiri.
4snok avatar
drapel es
aveți reguli în lanțul de direct iptables pe mașina Ubuntu? Mașina Linux cunoaște rețeaua 172.31.0.x?
Adi avatar
drapel ua
Adi
Bună @4snok, nu am adăugat nicio regulă pentru iptables. Urmând ghidul pe care l-am legat, nu se menționează asta pentru ca ping-ul să funcționeze. Este ceva de care am nevoie?
A.B avatar
drapel cl
A.B
De ce nu pui întrebarea aici la serverfault ce ai făcut (în text, nu în capturi de ecran)? Nu vrem să fim nevoiți să navigăm în altă parte la un tutorial pentru a încerca să vedem ce ați făcut sau nu.
4snok avatar
drapel es
Vă rugăm să adăugați la întrebările rezultatul `iptables -S` de la gazda Ubuntu și `ruta ip` de la gazda Linux
Adi avatar
drapel ua
Adi
Bună @4snok, am adăugat ieșirile așa cum a fost solicitat. Asta iti spune ceva?
4snok avatar
drapel es
nu chiar :(, ați putea verifica dacă există reguli fw cu `iptables-legacy -S` așa cum a sugerat iptables?
4snok avatar
drapel es
încercați să faceți ping linux din Ubuntu 172.31. interfață, `ping -S 172.31.0.33 10.0.40.10` asigurați-vă că funcționează. De asemenea, am găsit tabelul de rutare pe mașina Windows destul de confuz, de ex. în ruta dvs. persistentă specificați gw `172.31.0.33`, dar conform tabelului de rutare 172.31.0.33 este accesibil prin 10.255.255.0, nu există nicio regulă on-link
djdomi avatar
drapel za
Practic, se folosește nat?
Adi avatar
drapel ua
Adi
Ați vrut să spuneți `ping -S` sau `ping -I`? `ping -I 172.31.0.33 10.0.40.10` funcționează conform așteptărilor.
Puncte:1
drapel kz

Soluția este chiar acolo:

-P PĂDURA ÎNTÂMPRE

În dumneavoastră iptables-legacy set de reguli, politica implicită pentru redirecționarea pachetelor este setată la DROP și nu există nicio regulă în acel set de reguli care să permită redirecționarea pachetelor de la eno1 la enp2s0f0, doar redirecționarea de la/la o interfață bridge...

Este întotdeauna o idee foarte proastă să amestecați diferite iptables, ar trebui să vă decideți singur dacă doriți să utilizați iptables sau iptables-legacy - fiecare pachet de rețea va trece prin ambele seturi de reguli, provocând destul de multă confuzie.

Actualizați:
Răspunsul meu nu ar trebui să însemne că trebuie să instalați politica implicită ca accept, doar am arătat motivul. Desigur, puteți adăuga reguli pentru a permite redirecționarea traficului numai către aceste IP-uri specifice, de exemplu, astfel:

-A FORWARD -i eno1 -s 172.31.0.0/24 -o enp2s0f0 -d 10.0.40.0/24 -j ACCEPT
-A FORWARD -i enp2s0f0 -s 10.0.40.0/24 -o eno1 -d 172.31.0.0/24 -j ACCEPT
Adi avatar
drapel ua
Adi
Mulțumiri. Da, pare evident când știi unde să cauți! În loc să o schimbi doar în „-P FORWARD ACCEPT”, ar fi posibil să o lași ca DROP și apoi să adaugi o anumită regulă doar pentru a redirecționa traficul de la 172.31.0.0/24 la 10.0.40.0/24?
Martin avatar
drapel kz
Bineînțeles că este posibil! Am adăugat un exemplu, cum ar putea arăta regulile, la răspuns...
A.B avatar
drapel cl
A.B
Nu uitați că totul se datorează interacțiunii Docker cu setările de rețea: https://docs.docker.com/network/iptables/ . Când depanați ceva care nu depinde de Docker pe un sistem în care rulează Docker, primul lucru de făcut ar trebui să fie să dezactivați Docker și să reporniți, apoi să încercați din nou. Oprirea Docker (și nu repornirea) nu va elimina totul (de exemplu: modulul încărcat `br_netfilter` poate face orice altă configurare care ar folosi propria sa punte pentru a eșua fără un motiv aparent).

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.