Nástroj socat je relé pro obousměrné datové přenosy mezi dvěma nezávislými datovými kanály.
Existuje mnoho různých typů kanálů socat
lze připojit, včetně:
- Soubory
- Potrubí
- Zařízení (sériová linka, pseudoterminál atd.)
- Zásuvky (UNIX, IP4, IP6 – raw, UDP, TCP)
- Zásuvky SSL
- Připojení proxy CONNECT
- Deskriptory souborů (stdin atd.)
- Editor řádků GNU (readline)
- Programy
- Kombinace dvou z nich
Tento nástroj je považován za pokročilou verzi netcatu. Dělají podobné věci, ale socat
má více dalších funkcí, jako je povolení více klientů naslouchat na portu nebo opětovné použití připojení.
Proč potřebujeme socat?
socate
lze použít mnoha způsoby účinně. Zde je několik příkladů:
- Předávání portů TCP (jednorázový nebo démon)
- Externí ponožka
- Nástroj pro útok na slabé firewally (zabezpečení a audit)
- Rozhraní Shell se sokety Unix
- Relé IP6
- Přesměrujte programy orientované na TCP na sériovou linku
- Logicky propojte sériové linky na různých počítačích
- Vytvořte relativně bezpečné prostředí (
su
achroot
) pro spouštění klientských nebo serverových skriptů shellu se síťovým připojením
Jak používáme socat?
Syntaxe pro socat
je poměrně jednoduchý:
socat [options] <address> <address>
Aby to fungovalo, musíte zadat zdrojovou a cílovou adresu. Syntaxe těchto adres je:
protocol:ip:port
Příklady použití socat
Začněme několika základními příklady použití socat
pro různá připojení.
1. Připojte se k portu TCP 80 na místním nebo vzdáleném systému:
# socat - TCP4:www.example.com:80
V tomto případě socat
přenáší data mezi STDIO (-) a připojením TCP4 na port 80 na hostiteli s názvem www.example.com.
2. Použijte socat
jako TCP port forwarder:
Pro jedno připojení zadejte:
# socat TCP4-LISTEN:81 TCP4:192.168.1.10:80
Pro více připojení použijte fork
možnost, jak je použita v příkladech níže:
# socat TCP4-LISTEN:81,fork,reuseaddr TCP4:TCP4:192.168.1.10:80
Tento příklad naslouchá na portu 81, přijímá připojení a předává připojení na port 80 na vzdáleném hostiteli.
# socat TCP-LISTEN:3307,reuseaddr,fork UNIX-CONNECT:/var/lib/mysql/mysql.sock
Výše uvedený příklad naslouchá na portu 3307, přijímá připojení a předává připojení do Unixového soketu na vzdáleném hostiteli.
3. Implementujte jednoduchý síťový kolektor zpráv:
# socat -u TCP4-LISTEN:3334,reuseaddr,fork OPEN:/tmp/test.log,creat,append
V tomto příkladu, když se klient připojí k portu 3334, je vygenerován nový podřízený proces. Všechna data odesílaná klienty jsou připojena do souboru /tmp/test.log
. Pokud soubor neexistuje, socat
vytváří to. Možnost reuseaddr
umožňuje okamžitý restart procesu serveru.
4. Odešlete vysílání do místní sítě:
# socat - UDP4-DATAGRAM:224.255.0.1:6666,bind=:6666,ip-add-membership=224.255.0.1:eth0
V tomto případě socat
přenáší data z stdin
na zadanou adresu vícesměrového vysílání pomocí protokolu UDP přes port 6666 pro místní i vzdálená připojení. Příkaz také říká rozhraní eth0, aby akceptovalo multicastové pakety pro danou skupinu.
Praktické využití pro socat
Socat
je skvělý nástroj pro odstraňování problémů. Je také užitečný pro snadné vytváření vzdálených připojení. Prakticky jsem použil socat
pro vzdálená připojení k MySQL. V níže uvedeném příkladu demonstruji, jak používám socat
pro připojení mé webové aplikace ke vzdálenému serveru MySQL připojením přes místní soket.
1. Na svém vzdáleném serveru MySQL zadávám:
# socat TCP-LISTEN:3307,reuseaddr,fork UNIX-CONNECT:/var/lib/mysql/mysql.sock &
Tento příkaz spustí socat
a nakonfiguruje jej tak, aby naslouchal pomocí portu 3307.
2. Na svém webovém serveru zadávám:
# socat UNIX-LISTEN:/var/lib/mysql/mysql.sock,fork,reuseaddr,unlink-early,user=mysql,group=mysql,mode=777 TCP:192.168.100.5:3307 &
Výše uvedený příkaz se připojí ke vzdálenému serveru 192.168.100.5 pomocí portu 3307.
Veškerá komunikace však bude probíhat na zásuvce Unix /var/lib/mysql/mysql.sock
, a to vypadá, že se jedná o místní server.
Sbalit
socat
je sofistikovaná utilita a skutečně vynikající nástroj pro každého správce systému k provádění věcí a odstraňování problémů. Klikněte na tento odkaz a přečtěte si další příklady použití socat.
[ Bezplatný online kurz:Technický přehled Red Hat Enterprise Linux. ]