GNU/Linux >> Znalost Linux >  >> Linux

iptables:co přesně znamená --src-type LOCAL?

Věřím, že odpověď typu addr LOCAL znamená zpětnou smyčku je špatná, protože je to pouze částečná odpověď a je extrémně zavádějící. LOCAL znamená JAKOUKOLIV IP přiřazenou na jednom z rozhraní hostitele, včetně zpětné smyčky. Pokud řeknete, že LOCAL je prostě 127.0.0.0/8 (jak uvedl sasanet), pak byste to omezili na rozhraní zpětné smyčky, což je zcela špatně.

Navíc IP může být dokonce směrovatelná a veřejná. Pro hostitele je to irelevantní, protože z jeho pohledu bude IP odkazovat na samotného hostitele. Pokud stočíte nebo pingnete na veřejnou ip přiřazenou na jednom z jeho rozhraní, paket zjevně neodešle, ale nasměruje ho lokálně. příklad:

ip adresa show dev eth0:

 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 0a:e7:8b:89:d5:f4 brd ff:ff:ff:ff:ff:ff
    inet 172.31.20.254/20 brd 172.31.31.255 scope global dynamic eth0
       valid_lft 3110sec preferred_lft 3110sec

ip route show table local:

local 172.31.20.254 dev eth0 proto kernel scope host src 172.31.20.254

(jak již bylo uvedeno, je zjevně irelevantní, zda je ip soukromá nebo veřejná, pokud je přiřazena k síťovému rozhraní)


Docela dobré vysvětlení zde:http://security.maruhn.com/iptables-tutorial/x6330.html

Další diskuze o tom:http://www.linuxquestions.org/questions/linux-networking-3/wtf-addrtype-in-iptables-manpage-746659/


Terminologie "místní cesta" znamená, že pakety budou doručeny "lokálně" vašemu hostiteli, protože cíl je přiřazen jednomu z rozhraní vašeho hostitele. není znamená pouze localhost , jako u adres zpětné smyčky (ani 169.254/16 jako v "místních odkazech" adres).

Linux používá protokol Netlink k odesílání zpráv mezi prostorem jádra a uživatelským prostorem – jedna z rodin Netlink v něm je NETLINK_ROUTE , které lze použít k přijímání aktualizací směrování, úpravě adres rozhraní, atd . Toto používá například příkaz ip-route z iproute2.

Při pohledu na addrtype zdrojový kód iptables, uvidíte odkazy na linux/rtnetlink.h , který definuje RTN_LOCAL jako typ zprávy. rtnetlink(7) manuálová stránka popisuje RTN_LOCAL jako:

rtm_type          Route type
───────────────────────────────────────────────────────────
RTN_LOCAL         a local interface route

Nic z toho není úplně jasné, když o tom čtete, a některé z nejlepších referencí, které jsem našel, jsou různé internetové zdroje, takže je pochopitelné, proč tam je zmatek.


Linux
  1. Co znamená `:-` ve skriptu Shell?

  2. Co znamená ve výstupu Ps?

  3. Co to znamená #define X X?

  1. Co znamená prázdné iptables?

  2. Co ve skutečnosti znamená standard hierarchie souborového systému lokálními daty?

  3. Co přesně init dělá?

  1. Co toto varování znamená?

  2. Co znamená schopnost ep?

  3. Co znamená %st nahoře?