Apakah ada yang tahu cara menutup soket TCP atau UDP untuk satu koneksi melalui baris perintah windows?
Googling tentang ini, saya melihat beberapa orang menanyakan hal yang sama. Tetapi jawabannya tampak seperti halaman manual dari perintah netstat atau netsh yang berfokus pada bagaimana memonitor port. Saya tidak ingin jawaban tentang cara memonitor mereka (saya sudah melakukan ini). Saya ingin menutup / membunuh mereka.
EDIT, untuk klarifikasi: Katakanlah server saya mendengarkan port TCP 80. Seorang klien membuat koneksi dan port 56789 dialokasikan untuk itu. Kemudian, saya menemukan bahwa koneksi ini tidak diinginkan (misalnya pengguna ini melakukan hal-hal buruk, kami meminta mereka untuk berhenti tetapi koneksi tidak terjatuh di suatu tempat di sepanjang jalan). Biasanya, saya akan menambahkan firewall untuk melakukan pekerjaan itu, tetapi ini akan memakan waktu, dan saya berada dalam situasi darurat. Membunuh proses yang memiliki koneksi benar-benar ide yang buruk di sini karena ini akan menurunkan server (semua pengguna akan kehilangan fungsionalitas ketika kami hanya ingin secara selektif dan sementara menjatuhkan koneksi yang satu ini).
sumber
Jawaban:
Ya, ini mungkin. Anda tidak harus menjadi proses saat ini yang memiliki soket untuk menutupnya. Pertimbangkan sejenak bahwa mesin jarak jauh, kartu jaringan, kabel jaringan, dan OS Anda semua dapat menyebabkan soket menutup.
Pertimbangkan juga bahwa perangkat lunak Fiddler dan Desktop VPN dapat memasukkan diri mereka ke dalam tumpukan jaringan dan menunjukkan kepada Anda semua lalu lintas atau mengalihkan semua lalu lintas Anda.
Jadi yang Anda butuhkan hanyalah Windows untuk menyediakan API yang memungkinkan ini secara langsung, atau bagi seseorang untuk menulis program yang beroperasi seperti VPN atau Fiddler dan memberi Anda cara untuk menutup soket yang melewatinya.
Setidaknya ada satu program ( CurrPorts ) yang melakukan hal ini dan saya menggunakannya hari ini untuk tujuan menutup soket spesifik pada proses yang dimulai sebelum CurrPorts dimulai. Untuk melakukan ini, Anda harus menjalankannya sebagai administrator, tentu saja.
Perhatikan bahwa mungkin tidak mudah untuk menyebabkan program tidak mendengarkan pada port (well, itu mungkin tetapi kemampuan itu disebut sebagai firewall ...), tapi saya tidak berpikir itu ditanyakan di sini. Saya percaya pertanyaannya adalah "bagaimana cara menutup secara selektif satu koneksi aktif (soket) ke port yang didengarkan program saya?". Kata-kata dari pertanyaan ini agak tidak jelas karena nomor port untuk koneksi klien masuk yang tidak diinginkan diberikan dan itu disebut sebagai "port" tetapi cukup jelas bahwa itu adalah referensi ke satu soket dan bukan port mendengarkan.
sumber
Buka
cmd
ketik
netstat -a -n -o
find
TCP [the IP address]:[port number] .... #[target_PID]#
(ditto for UDP)(Btw,
kill [target_PID]
tidak bekerja untuk saya)CTRL + ALT + DELETE dan pilih "start task manager"
Klik pada tab "Proses"
Aktifkan kolom "PID" dengan masuk ke: Lihat> Pilih Kolom> Centang kotak untuk PID
Temukan PID yang menarik dan "AKHIR PROSES"
Sekarang Anda dapat menjalankan ulang server di [alamat IP]: [nomor port] tanpa masalah
sumber
System
proses yang menangani koneksi jaringan windows.taskkill /pid 6168 /f
6168 adalah pidMisalnya Anda ingin membebaskan port 8080 Kemudian, ikuti perintah ini.
Selesai!
sumber
Jika Anda tahu port yang ingin Anda bebaskan, Anda dapat mengurutkan daftar netstat Anda dengan mencari port spesifik seperti ini:
Kemudian pid akan muncul di rigth yang bisa Anda bunuh dengan taskkill.
Anda juga mungkin ingin melihat pertanyaan ini yang khusus untuk localhost, tapi saya pikir ini relevan:
sumber
Gunakan TCPView: http://technet.microsoft.com/en-us/sysinternals/bb897437.aspx
atau CurrPorts: https://www.nirsoft.net/utils/cports.html
Atau, jika Anda tidak ingin menggunakan PERANGKAT LUNAK EKSTERNAL (alat ini tidak memerlukan instalasi dengan cara), Anda dapat PERTAMA menjalankan perintah netstat (lebih disukai netstat -b) & kemudian mengatur Kebijakan Keamanan Lokal untuk memblokir IP. alamat mesin pengguna yang dimaksud, itulah yang telah saya lakukan dengan koneksi yang tidak diinginkan atau bahkan tidak dikenal - yang memungkinkan Anda melakukan segalanya TANPA PERANGKAT LUNAK EKSTERNAL (semuanya dilengkapi dengan Windows) ...
sumber
Coba alat TCPView (GUI) dan Tcpvcon (baris perintah) oleh Sysinternals / Microsoft.
https://docs.microsoft.com/en-us/sysinternals/downloads/tcpview
sumber
Anda tidak dapat menutup soket tanpa mematikan proses yang memiliki soket itu. Soket dimiliki oleh proses yang membukanya. Jadi untuk mengetahui ID proses (PID) untuk Unix / Linux. Gunakan netstat seperti ini:
Itu akan mencetak sesuatu seperti:
Di mana -a mencetak semua soket, -n menunjukkan nomor port, -p menunjukkan PID, -l hanya menunjukkan apa yang mendengarkan (ini opsional tergantung pada apa yang Anda cari).
Info sebenarnya yang Anda inginkan adalah PID. Sekarang kita dapat mematikan proses itu dengan melakukan:
Jika Anda mematikan layanan, lebih baik menggunakan:
Membunuh secara harfiah membunuh proses itu saja dan setiap anak yang dimilikinya. Menggunakan perintah layanan jalankan skrip shutdown yang terdaftar di direktori init.d. Jika Anda menggunakan kill pada layanan, itu mungkin tidak benar memulai kembali karena Anda tidak mematikannya dengan benar. Itu hanya tergantung pada layanan.
Sayangnya, Mac berbeda dari Linux / Unix dalam hal ini. Anda tidak dapat menggunakan netstat. Baca tutorial ini jika Anda tertarik pada Mac:
http://www.tech-recipes.com/rx/227/find-out-which-process-is-holding-which-socket-open/
Dan jika Anda menggunakan Windows gunakan TaskManager untuk mematikan proses, dan layanan UI untuk mematikan layanan. Anda dapat menggunakan netstat di Windows seperti Linux / Unix untuk mengidentifikasi PID.
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/netstat.mspx?mfr=true
sumber
Gunakan CurrPorts (gratis dan tanpa instalasi): http://www.nirsoft.net/utils/cports.html
/close <Local Address> <Local Port> <Remote Address> <Remote Port> {Process Name}
Contoh:
Ini juga memiliki GUI yang bagus dengan fitur pencarian dan filter.
Catatan: Jawaban ini adalah jawaban dan komentar huntharo dan JasonXA disatukan dan disederhanakan untuk memudahkan pembaca. Contohnya berasal dari halaman web CurrPorts.
sumber
Anda tidak dapat menutup soket di server Anda tanpa memiliki soket itu sehingga Anda tidak dapat benar-benar menutup soket tanpa kode berjalan dalam proses yang memiliki soket server.
Namun, ada opsi lain yang memberitahu klien untuk menutup soketnya. Mengirimkan paket RST TCP ke port yang disambungkan klien akan menyebabkan klien memutuskan koneksi mereka. Anda dapat melakukannya dengan pemindaian RST menggunakan nmap.
http://nmap.org/
sumber
Saya menemukan jawaban yang tepat untuk yang satu ini. Coba TCPView dari Sysinternals, yang sekarang dimiliki oleh Microsoft. Anda dapat menemukannya di http://technet.microsoft.com/en-us/sysinternals/bb897437
sumber
wkillcx adalah alat baris perintah windows yang dapat diandalkan untuk membunuh koneksi tcp dari baris perintah yang belum disebutkan. Itu memang memiliki masalah dengan server dengan sejumlah besar koneksi terkadang. Saya terkadang menggunakan tcpview untuk membunuh interaktif tetapi wkillcx dapat digunakan dalam skrip.
sumber
Untuk menutup port, Anda dapat mengidentifikasi proses yang mendengarkan pada port ini dan mematikan proses ini.
sumber
Anda dapat menggunakan program seperti tcpview dari sysinternal. Saya kira ini dapat banyak membantu Anda dalam memonitor dan membunuh koneksi yang tidak diinginkan.
sumber
CurrPorts tidak bekerja untuk kami dan kami hanya bisa mengakses server melalui ssh, jadi tidak ada TCPView juga. Kami juga tidak dapat mematikan proses, karena tidak menjatuhkan koneksi lain. Apa yang akhirnya kami lakukan dan belum disarankan adalah memblokir koneksi pada Firewall Windows. Ya, ini akan memblokir semua koneksi yang sesuai dengan aturan, tetapi dalam kasus kami ada satu koneksi (yang kami tertarik):
Ganti IP dengan yang Anda butuhkan dan tambahkan aturan lain jika diperlukan.
sumber
instan / layak / jawaban parsial : https://stackoverflow.com/a/20130959/2584794
tidak seperti dari jawaban sebelumnya di mana netstat -a -o -n digunakan daftar yang sangat panjang harus dilihat tanpa nama aplikasi menggunakan mereka port
sumber
Ya ada kemungkinan untuk menutup port TCP atau UDP ada perintah di DOS
Saya harap ini akan berhasil untuk Anda
sumber
Jika Anda menjalankan Windows 8, `Windows Server 2012 atau lebih baru dengan PowerShell v4 yang diinstal di atas, Anda dapat menggunakan skrip di bawah ini. Ini menemukan proses yang terkait dengan port & menghentikannya.
Kode
Dokumentasi:
NetStat
setaraTaskKill
Setara dengan PowerShellsumber