2013-01-08 07:34:55 +0000 2013-01-08 07:34:55 +0000
202
202

Pobierz listę otwartych portów w Linuksie

Potrzebuję komendy Linuksa, aby wyświetlić listę wszystkich wolnych otwartych portów do użycia w aplikacji

lsof -i TCP| fgrep LISTEN

Nie jest to uważane za pomocne, ponieważ porty, których lista nie musi być wolna do użycia. Jak mogę umieścić na liście wolne otwarte porty, które nie są używane?

Odpowiedzi (7)

268
268
268
2013-01-08 11:51:03 +0000
netstat -lntu

as replied by @askmish will give you list of services running on your system on tcp and udp ports where

  • -l = only services which are listening on some port
  • -n = show port number, don’t try to resolve the service name
  • -t = porty tcp
  • -u = porty udp
  • -p = nazwa programu

You don’t need the ‘p’ parameter as you’re only interested in getting which ports are free and not which program is running on it.

To tylko pokazuje, które porty w twoim systemie są zużyte. Nie mówi ci to o stanie twojej sieci, np. jeśli jesteś za NAT-em i chcesz aby niektóre usługi były dostępne z zewnątrz. Albo jeśli firewall blokuje port dla gości z zewnątrz. W takim przypadku na ratunek przychodzi nmap. OSTRZEŻENIE: Mapy nmap należy używać tylko w sieciach, które są pod Twoją kontrolą. Istnieją również reguły firewall'a, które mogą blokować ping'y nmap, będziesz musiał manipulować opcjami, aby uzyskać poprawne wyniki.

93
93
93
2016-06-08 20:19:05 +0000

Ponieważ net-tools jest przestarzałe , możesz użyć komendy ss zamiast netstat, jeśli netstat nie jest obecne na Twojej maszynie:

ss -lntu

powinien działać podobnie do

netstat -lntu

zgodnie z wbudowaną pomocą:

-n, --numeric don't resolve service names
-l, --listening display listening sockets
-t, --tcp display only TCP sockets
-u, --udp display only UDP sockets
21
21
21
2013-01-08 07:45:50 +0000

Ta komenda wyświetli listę otwartych portów sieciowych i procesów, które są ich właścicielami:

netstat -lnptu

możesz następnie filtrować wyniki do swoich dokładnych specyfikacji.

Możesz również użyć nmap do uzyskania bardziej ziarnistych wyników dotyczących portów.

5
5
5
2014-11-03 04:33:36 +0000

Wszystkie otwarte porty, w tym ruch odpowiedzi:

netstat -tuwanp 2>/dev/null | awk '{print $4}' | sort | uniq -c | wc -l
1
1
1
2019-01-16 23:21:34 +0000

Moje pierwotne pytanie było takie, że pytał o niewykorzystane porty, a nie porty obecnie podłączone do usług. Jeśli tak jest, nie ma konkretnego sposobu na ich wymienienie, poza wymienieniem używanych portów i założeniem, że pozostałe są nieużywane.

Jeden dodatkowy punkt, o którym należy pamiętać: jako użytkownik, nie będziesz mógł otworzyć portu mniejszego niż 1024 (będziesz potrzebował do tego uprawnienia roota).

0
0
0
2019-01-16 19:51:05 +0000

Spróbuj

sudo netstat -plnt | grep -E '(0.0.0.0:|:::|127.0.0.1:|::1:)' | awk 'NR>2{print $7}' | sort -n | uniq

i spójrz na to.

0
0
0
2016-04-04 06:29:27 +0000

Następująca komenda będzie działać na każdym Uniksie, który wychodzi w tym samym formacie co Ubuntu / Debian - gdzie lokalny adres znajduje się w kolumnie 4, a wyjście zawiera nagłówek 2 liniowy na górze. Jeśli któryś z tych numerów jest inny, dostosuj poniższą komendę awk.

Jeśli chcesz tylko IPv4:

netstat -lnt | awk 'NR>2{print $4}' | grep -E '0.0.0.0:' | sed 's/.*://' | sort -n | uniq

Jeśli chcesz tylko IPv6:

netstat -lnt | awk 'NR>2{print $4}' | grep -E ':::' | sed 's/.*://' | sort -n | uniq

Jeśli chcesz oba razem:

netstat -lnt | awk 'NR>2{print $4}' | grep -E '(0.0.0.0:|:::)' | sed 's/.*://' | sort -n | uniq

Komenda wyświetla listę numerów portów, które są słuchane na wszystkich interfejsach. Jeśli chcesz wypisać listę wszystkich portów, które są słuchane na interfejsie localhost, użyj czegoś takiego:

netstat -lnt | awk 'NR>2{print $4}' | grep -E '(127.0.0.1:|::1:)' | sed 's/.*://' | sort -n | uniq