Jak sprawdzić, czy port UDP jest otwarty? [Zamknięte]


13

Mam tu dylemat. Mam urządzenie, które komunikuje się z innym urządzeniem zdalnym, ale między nimi jest zapora ogniowa. Jest to połączenie UDP, więc narzędzia TCP nie działają, aby sprawdzić, czy określony port jest otwarty. Wiem, że moglibyśmy to uzyskać z zapory ogniowej, ale nie mam dostępu, więc muszę udowodnić, że port nie jest otwarty.

System źródłowy to system Windows 7, a system docelowy to urządzenie z systemem Linux.


1
Bez dostępu do zapory naprawdę nie możesz powiedzieć (chyba, że ​​twoje systemy działają).
Ron Trunk

Pytania dotyczące sieci, nad którymi nie masz kontroli, są tutaj wyraźnie nie na temat.
Ron Maupin

2
Głosowałbym za pozostawieniem go otwartym. Myślę, że to wpada w szarą strefę i jest to przydatne pytanie teoretyczne / dotyczące rozwiązywania problemów.
Ron Trunk

1
... masz kontrolę nad zaporą i sieciami? Jeśli nie, to nie jest tutaj temat.
Craig Constantine

Jest to obecnie środowisko laboratoryjne, staramy się symulować przyszłą sytuację produkcyjną. Chciałbym uzyskać sposób rozwiązywania problemów z sesjami UDP bez konieczności analizowania dzienników po stronie serwera. Ale dzięki, wierzę, że nie jest to możliwe ze względu na rodzaj komunikacji.
JoeliNNaBit

Odpowiedzi:


10

UDP jest oczywiście protokołem wysyłania i zapominania. Na przykład podczas skanowania UDP NMap jedynym sposobem, aby ostatecznie udowodnić, że port UDP jest otwarty, jest otrzymanie odpowiedzi z tego portu. Należy pamiętać, że wiele usług może nie odpowiadać na dowolne dane i wymagać żądań dotyczących protokołu lub aplikacji w celu uzasadnienia odpowiedzi. Niektóre kody ICMP mogą jednak gwarantować zamknięcie portu. RFC 792 i RFC 1122 dostarczają nam dobrych informacji, czego możemy się spodziewać po zamknięciu portu.

Na przykład, kod 3 ICMP typu 3 „Port docelowy nieosiągalny” jest, prawie we wszystkich celach i celach, prawie zamknięty.

Pełna lista kodów znajduje się tutaj:

http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml


1
Dziękuję za odpowiedź. Zbadam więcej o żądaniach ICMP typu 3.
JoeliNNaBit

7

To jest szybki przepis:

1) Uruchom sniffer pakietów:

sudo tcpdump -n -i eth2 icmp &
[1] 1409
$ tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth2, link-type EN10MB (Ethernet), capture size 262144 bytes

2) Wyślij pakiet UDP:

$ echo reply-me | nc -u 1.0.0.2 1000

3) Jeśli pojawi się komunikat „Port ICMP nieosiągalny”, ten port UDP jest zamknięty:

20:54:15.475211 IP 1.0.0.2 > 1.0.0.1: ICMP 1.0.0.2 udp port 1000 unreachable, length 45

4) W przeciwnym razie zazwyczaj port jest otwarty lub coś blokuje ICMP.


1
Ponieważ systemem źródłowym jest Windows 7, polecenia Linuksa nie będą działać.
Ron Maupin

1
Tak, to prawda, ale spróbuję uruchomić maszynę wirtualną i sprawdzić, czy działa.
JoeliNNaBit

4

"nc -uvz ip port"nie jest w jakiś sposób dokładny, prawdopodobnie powinieneś użyć "nmap -sU -p port ip", jeśli wynik pokazuje „otwarty”, to prawdopodobnie port udp jest otwarty, jeśli pokazuje „otwarty | filtrowany”, to prawdopodobnie jest zamknięty lub przefiltrowany.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.