Mám server CentOS 7 se dvěma síťovými rozhraními. Jeden ukazuje na naši LAN (ens32) a druhý na naši DMZ (ens33).
Zatímco rozhraní LAN funguje dobře, všiml jsem si, že se zdá, že provoz bude procházet rozhraním DMZ, pouze pokud se přihlásíte jako root, a nejsem si jistý, co to znamená nebo zda to má nějaký čistý dopad na jiné problémy, se kterými se setkávám. .
Pokud například spustím:
curl --interface ens32 ipecho.net/plain
jako uživatel bez oprávnění root získám veřejnou IP pro toto rozhraní.
Pokud spustím:
curl --interface ens33 ipecho.net/plain
jako uživatel bez oprávnění root se zdá, že se příkaz zastaví a já budu nucen proces ukončit.
Pokud spustím předchozí příkaz jako root, dostanu očekávaný výstup, což je veřejná IP pro toto rozhraní.
Může někdo vysvětlit, co se zde může odehrávat?
Přijatá odpověď:
Jak je vidět na oficiálním curl
pro specifikaci/vazbu na konkrétní rozhraní je potřeba mít buď CAP_NET_RAW, nebo spustit jako root
.
Tedy root
být schopen provést vazbu/směrování a nepracuje za vás s běžným uživatelem.
Když běžný uživatel používá curl
, aniž by bylo zakázáno používat --interface
možnost, místo toho se na tuto operaci použijí výchozí pravidla směrování serveru.
Z oficiální stránky curl.1 manuálová stránka:
–rozhraní
Proveďte operaci pomocí zadaného rozhraní. Můžete zadat
název rozhraní, IP adresu nebo název hostitele. Příklad může vypadat takto:curl –rozhraní eth0:1 https://www.example.com/
Pokud je tato možnost použita několikrát, použije se poslední.
V Linuxu jej lze použít k určení VRF, ale binární soubor musí
mít buď CAP_NET_RAW, nebo být spuštěn jako root.Další informace o
Linux VRF:https://www.kernel.org/doc/Documentation/networking/vrf.txt