Saya mencoba untuk menguji apakah saya bisa sampai ke port tertentu pada server jarak jauh (keduanya saya memiliki akses ke) melalui UDP.
Kedua server menghadapi internet. Saya menggunakan netcat untuk mendengarkan porta tertentu.
Saya kemudian menggunakan nmap untuk memeriksa port itu untuk melihat apakah port itu terbuka, tetapi sepertinya tidak.
Iptables dimatikan.
Ada saran mengapa ini bisa terjadi? Saya akhirnya akan mengatur terowongan VPN, tetapi karena saya sangat baru di terowongan, saya ingin memastikan saya memiliki konektivitas pada port UDP 1194 sebelum melanjutkan.
centos
udp
networking
Mengunci
sumber
sumber
Jawaban:
Tidak ada yang namanya port UDP "terbuka", paling tidak dalam arti kebanyakan orang terbiasa berpikir (yang menjawab sesuatu seperti "OK, saya sudah menerima koneksi Anda"). UDP adalah sesi-kurang, jadi "port" (baca: protokol UDP dalam sistem IP stack stack) tidak akan pernah merespons "sukses" sendiri.
Port UDP hanya memiliki dua status: mendengarkan atau tidak. Itu biasanya diterjemahkan menjadi "memiliki soket terbuka di atasnya oleh suatu proses" atau "tidak memiliki soket terbuka". Kasus terakhir harus mudah dideteksi karena sistem harus merespons dengan paket ICMP Destination Unreachable dengan kode = 3 (Port unreachable). Sayangnya banyak firewall bisa menjatuhkan paket-paket itu jadi jika Anda tidak mendapatkan apa-apa kembali, Anda tidak tahu pasti apakah portnya dalam keadaan ini atau tidak. Dan jangan lupa bahwa ICMP juga kurang sesi dan tidak melakukan transmisi ulang: paket Port Unreachable bisa saja hilang di suatu tempat di internet.
Port UDP dalam keadaan "mendengarkan" mungkin tidak merespons sama sekali (proses mendengarkannya hanya menerima paket dan tidak mengirimkan apa-apa) atau ia dapat mengirim sesuatu kembali (jika prosesnya bekerja pada penerimaan dan jika bertindak oleh merespons melalui UDP ke IP pengirim asli: port). Jadi sekali lagi, Anda tidak pernah tahu pasti bagaimana keadaannya jika Anda tidak mendapatkan apa-apa kembali.
Anda mengatakan Anda dapat memiliki kontrol dari host penerima: yang membuat Anda dapat membangun protokol Anda sendiri untuk memeriksa jangkauan port UDP: cukup masukkan proses pada host penerima yang akan mendengarkan pada port UDP yang diberikan dan merespons kembali (atau mengirim Anda email, atau hanya panik dan
unlink()
semua yang ada di sistem file host ... apa pun yang akan memicu perhatian Anda akan dilakukan).sumber
Untuk menguji apakah port udp merespons, gunakan
netcat
.Contoh dari halaman manual :
Tentu saja, jika firewall sedang
DROP
menyala, yang biasanya terjadi ketika berhadapan dengan gateway berwajah internet, Anda tidak akan menerima respons ICMP.sumber
yum install nc
(for centos)nc -ul 6111
nc -u <server> 6111
Catatan: Ketika Anda menjalankan
nc -ul
perintah di server, itu hanya akan terhubung untuk koneksi pertama yang datang ke sana. Anda tidak bisa, seperti yang saya tahu, beralih di antara server yang melakukan ping tanpa berhenti dan memulai ulangnc -ul
. Bahkan, jika Anda ^ C menghentikan klien (nc -u ...
), Anda juga tidak dapat memulai ulang klien tanpa terlebih dahulu memulai ulang pendengar server.sumber
Menguji port UDP terbuka dengan nmap penuh dengan bahaya - tidak ada jabat tangan tiga arah untuk menunjukkan keterbukaan. Kecuali jika proses mendengarkan merespons apa pun yang dikirimkan nmap, tidak ada cara bagi nmap untuk membedakan antara port terbuka yang tidak merespons dan port yang difilter.
Jauh lebih mudah hanya dengan mendengarkan di satu sisi dengan netcat dan menggunakan netcat di ujung lainnya untuk mengirim paket, dan melihat mereka tiba di ujung lainnya. Lakukan keduanya dengan cara yang pasti. Anda juga
tcpdump
dapat melihat paket sampai ke tempat mereka harus pergi.sumber
Saya mengalami masalah serupa dan menemukan solusi yang baik menggunakan netcat di sini: http://en.wikipedia.org/wiki/Netcat#Test_if_UDP_port_is_open:_simple_UDP_server_and_client
nc -vzu <host> <port>
Saya dapat mengonfirmasi port UDP saya terbuka dan kemudian dapat melanjutkan untuk menguji kode saya yang sebenarnya.
sumber
Anda dapat memindai port udp dengan menggunakan perintah berikut
sumber
Anda dapat melakukan ini dengan
netcat
(nc) atauiperf
, dengan asumsi Anda memiliki mesin lain untuk menguji dengan di luar jaringan. Pilihan saya adalahnmap
pemindaian UDP dari sistem di luar lingkungan Anda. Apa baris perintah nmap Anda? Apakah ada firewall perangkat keras atau perangkat lain dalam campuran?sumber
Saya memiliki pendekatan yang berpikiran sederhana. Jika server UDP tidak mengembalikan data yang diharapkan, saya hanya berhenti mengumpulkan dgram, dengan asumsi itu turun:
sumber