Ho un server CentOS 7 con due interfacce di rete. Uno punta alla nostra LAN (ens32) e l'altro alla nostra DMZ (ens33).
Sebbene l'interfaccia LAN funzioni correttamente, ho notato che sembra che il traffico attraversi l'interfaccia DMZ solo se effettuato l'accesso come root e non sono sicuro di cosa significhi o se abbia un effetto netto su altri problemi che sto riscontrando .
Ad esempio, se eseguo:
curl --interface ens32 ipecho.net/plain
come utente non root, otterrò l'IP pubblico per quell'interfaccia.
Se corro:
curl --interface ens33 ipecho.net/plain
come utente non root, il comando sembra bloccarsi e sarò costretto a terminare il processo.
Se eseguo il comando precedente come root, otterrò l'output previsto che è l'IP pubblico per quell'interfaccia.
Qualcuno può spiegare cosa potrebbe succedere qui?
Risposta accettata:
Come si può vedere nel curl
ufficiale pagina, per specificare/associare un'interfaccia specifica, è necessario avere CAP_NET_RAW o eseguire come root
.
Quindi quindi root
essere in grado di eseguire il binding/routing e non funziona con un utente normale per te.
Quando un utente normale usa curl
, senza che non sia consentito utilizzare l'--interface
opzione, le regole di instradamento predefinite del server verranno invece applicate a tale operazione.
Dalla pagina ufficiale curl curl.1 la pagina man:
–interfaccia
Eseguire un'operazione utilizzando un'interfaccia specificata. È possibile inserire
nome dell'interfaccia, indirizzo IP o nome host. Un esempio potrebbe essere:
curl – interfaccia eth0:1 https://www.example.com/
Se questa opzione viene utilizzata più volte, verrà utilizzata l'ultima.
Su Linux può essere utilizzato per specificare un VRF, ma il file binario deve
avere CAP_NET_RAW o essere eseguito come root.
Maggiori informazioni su
Linux VRF:https://www.kernel.org/doc/Documentation/networking/vrf.txt