GNU/Linux >> Znalost Linux >  >> Linux

Může TCP poskytnout více než 65535 portů?

Při pohledu na RFC pro TCP:RFC 793 - Transmission Control Protocol se zdá, že odpověď není ne, protože TCP hlavička je omezena na 16 bitů pro pole zdrojového/cílového portu.

Zlepšuje IPv6 věci?

Ne. I když nám protokol IPv6 poskytne mnohem větší prostor adres IP, 32bitový vs. 128bitový, nesnaží se zlepšit omezení paketů TCP na 16bitů pro čísla portů. Zajímavé je, že RFC pro IPv6:Internet Protocol, specifikace verze 6 (IPv6), pole IP bylo potřeba rozšířit.

Když TCP běží přes IPv6, změní se metoda použitá k výpočtu kontrolního součtu podle RFC 2460:

Jakýkoli transportní nebo jiný protokol vyšší vrstvy, který do výpočtu kontrolního součtu zahrnuje adresy z hlavičky IP, musí být upraven pro použití přes IPv6 tak, aby zahrnoval 128bitové adresy IPv6 namísto 32bitových adres IPv4.

Jak tedy můžete získat více portů?

Jedním přístupem by bylo skládat další IP adresy pomocí více rozhraní. Pokud má váš systém více síťových karet, je to jednodušší, ale i s jedinou síťovou kartou lze v případě potřeby využít virtuální rozhraní (aka. aliasy) k přidělení více IP adres.

POZNÁMKA: Používání aliasů bylo nahrazeno iproute2 které můžete použít ke skládání IP adres na jednom rozhraní (tj. eth0 ).

Příklad

$ sudo ip link set eth0 up
$ sudo ip addr add 192.0.2.1/24 dev eth0
$ sudo ip addr add 192.0.2.2/24 dev eth0
$ ip addr show dev eth0
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc
      pfifo_fast state DOWN qlen 1000
    link/ether 00:d0:b7:2d:ce:cf brd ff:ff:ff:ff:ff:ff
    inet 192.0.2.1/24 brd 192.0.2.255 scope global eth1
    inet 192.0.2.2/24 scope global secondary eth1

Zdroj:iproute2:Life after ifconfig

Odkazy

  • OpenWrt Wiki » Dokumentace » Sítě » Síťová rozhraní Linux
  • Některé užitečné příkazy s iproute2
  • Jak na to Linux Advanced Routing &Traffic Control
  • Více výchozích tras / IP adres veřejné brány v systému Linux
  • iproute2 cheat sheet – web Daniila Baturina

Je možné nastavit systém Linux tak, aby poskytoval více než 65 535 portů?

Ne.

Záměrem by bylo, aby na daném systému naslouchalo více než 65 000 démonů.

Pak potřebujete:

  • iptables konfigurace, která přesměrovává na obsah návštěvnosti nebo

  • „služba zprostředkovatele služeb“ nebo „multiplexorová služba“, která bude přijímat příchozí připojení na jediném portu a směrovat je k příslušnému démonovi „za ním“. Pokud chcete, aby standardní protokoly procházely beze změn, možná budete muset implementovat sniffování/rozpoznávání protokolu v této službě multiplexoru způsobem, který by IDS nebo firewall vrstvy 7 analyzoval; naprosto možné s velkou většinou protokolů.

Podle druhé položky můžete tuto službu navrhnout tak, aby zvládla více než 2^16 "portů", pokud byste opravdu chtěli. Jsem si jistý, že dopad na výkon bude minimální ve srovnání se zátěží 2^16+ běžících posluchačů.

Démoni v Linuxu mohou naslouchat na unixových soketech, které existují v souborovém systému, takže vaše "multiplexorová služba" může udržovat interní mapování externího portu <-> interní unixové sokety. Pravděpodobně narazíte na limit procesu jádra (procesy 32 kB?), než vám dojde inody na jakémkoli moderním souborovém systému.


Jen proto, že neexistuje žádná dobrá odpověď, chtěl jsem se k tomu přidat.

Jedním ze způsobů, jak toho dosáhnout, by bylo přidat možnost IP, která specifikuje rozšíření portu. Volba musí být navržena tak, aby se vešla do volitelné části hlavičky IP a byla by přeskočena neznámými skoky.

Tuto možnost a její informační informace byste použili k rozšíření čísla zdroje, cíle nebo obou portů.

Omezení nebudou automaticky fungovat ve stávajícím softwaru pouhým přidáním možnosti, stejně bude muset být přepsána, aby bylo možné tuto možnost využít bez ohledu na to, jak je implementována, stávající software a firewally buď budou paket ignorovat, nebo jej zpracují jako obvykle. pomocí hodnoty v polích zdrojového a cílového portu.

Stručně řečeno, není to snadné a bylo by lepší to provést pomocí jediného opakovaně použitelného posluchače a dat obsažených v užitečné zátěži paketu.

Můžete také snadněji povolit opětovné použití portů v softwaru, což může pomoci překonat toto omezení opětovným použitím portů serveru pro připojení více klientů.

Rtsp může například použít hlavičku SessionId ve spojení s různými jinými hlavičkami v užitečné zátěži IP paketu k určení, pro jaké připojení byl požadavek vydán, a podle toho jednat, např. pokud soket, ze kterého byla zpráva doručena, není stejný jako vzdálená adresa soketu, které relace odpovídá, pak lze buď povolit aktualizaci relace novým soketem pro zpracování, odmítnout zprávu nebo řadu dalších akcí v závislosti na aplikaci.

Http server může také dělat tento nebo jakýkoli jiný typ serveru.

Klíčová věc, kterou je třeba pamatovat při povolení opětovného použití portů, je, že musíte vzít v úvahu také zdrojovou IP adresu.


Linux
  1. Jak mohu zkontrolovat, které porty jsou na mém počítači se systémem Linux obsazené a které volné?

  2. Monitorujte provoz TCP na konkrétním portu

  3. Příkaz Linuxu získat nepoužívaný port

  1. Ukončit proces běžící na portu 80

  2. Jak mohu přenést přes iptables?

  3. Můžete mít více než jeden soubor ~/.ssh/config?

  1. 14 běžných síťových portů, které byste měli znát

  2. CentOS / RHEL :Jak nakonfigurovat vsftpd pro použití jiných portů než výchozích portů 20 a 21

  3. Jak mohu zabít TCP port 16969 v Bash?