Sobes.tech
Junior

Kā pārbaudīt, vai ports ir atvērts attālā vai vietējā hostā?

sobes.tech AI

Atbilde no AI

Lai pārbaudītu atvērtu portu attālinātajā vai vietējā hostā, var izmantot šādus veidus:

  1. netcat (nc): Universāls rīks tīkla savienojumiem.

    • Vietējai hostei:
      nc -zv localhost <ports>
      
    • Attālajai hostei:
      nc -zv <attālais_host> <ports>
      

    Opcijas -z (nulle-I/O režīms) un -v (sīkāka informācija) tiek izmantotas skenēšanai bez datu sūtīšanas un detalizētai informācijai.

  2. telnet: Attālas vadības protokols, ko var izmantot savienojuma pārbaudei ar norādīto portu:

    • Vietējai hostei:
      telnet localhost <ports>
      
    • Attālajai hostei:
      telnet <attālais_host> <ports>
      

    Ja savienojums tiek izveidots (parasti parādās pieprasījums vai tukša rinda), ports ir atvērts. Aizvērt var ar Ctrl+], tad quit un Enter.

  3. nmap: Jaudīgs portu skeneris. Prasa instalēšanu:

    • Vietējai hostei:
      nmap -p <ports> localhost
      
    • Attālajai hostei:
      nmap -p <ports> <attālais_host>
      

    Izvade parādīs portu statusu: open, closed vai filtered.

  4. < /dev/tcp vai < /dev/udp (Bash): Bash var izmantot failu deskriptorus TCP vai UDP savienojumu izveidei:

    • Vietējai hostei (TCP):
      timeout 1 bash -c "cat < /dev/tcp/localhost/<ports>" 2>/dev/null && echo "Port <ports> ir atvērts" || echo "Port <ports> ir aizvērts"
      
    • Attālajai hostei (TCP):
      timeout 1 bash -c "cat < /dev/tcp/<attālais_host>/<ports>" 2>/dev/null && echo "Port <ports> ir atvērts" || echo "Port <ports> ir aizvērts"
      

    timeout tiek izmantots, lai novērstu iestrēgšanu, ja ports ir aizvērts. 2>/dev/null slēpj kļūdu izvadus. Šī metode nedarbojas UDP.

  5. Python: Izmantojot soketus pārbaudei:

    import socket
    
    def check_port(host, port):
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(1)  # Laika ierobežojuma iestatīšana
        try:
            s.connect((host, port))
            print(f"Port {port} on {host} ir atvērts")
        except (socket.timeout, ConnectionRefusedError):
            print(f"Port {port} on {host} ir aizvērts vai filtrēts")
        finally:
            s.close()
    
    # Piemērs lietošanai
    check_port("localhost", 80)       # Vietējā hosta pārbaude
    check_port("google.com", 443)  # Attālā hosta pārbaude
    

Izvēle ir atkarīga no pieejamiem rīkiem, operētājsistēmas un uzdevuma specifikas. netcat un nmap ir viens no elastīgākajiem un informatīvākajiem rīkiem.