Netcat - Làm cách nào để nghe trên cổng TCP bằng địa chỉ IPv6?


13

Tôi đang sử dụng phiên bản mới nhất của netcat ( v1.10-41.1) dường như không có tùy chọn cho địa chỉ IPv6 (như -6trong các phiên bản cũ hơn nc).

Nếu tôi nhập nc -lvnp 2222và kiểm tra các cổng nghe netstat -punta, máy chủ dường như chỉ nghe trên cổng 2222cho các địa chỉ IPv4:

tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN      2839/nc  

tcp6 không hoạt động như, ví dụ: máy chủ apache2 của tôi:

tcp6       0      0 :::80                   :::*                    LISTEN      -

Câu trả lời:


17

Có ít nhất 3 hoặc 4 cách triển khai netcat khác nhau như đã thấy trên Debian:

  • netcat-truyền thống 1.10-41 bản gốc không hỗ trợ IPv6: có thể là những gì bạn đã cài đặt.
  • netcat6 được tạo ra để cung cấp IPv6 (cũ, thay thế).
  • netcat-openbsd 1.130-3. Có hỗ trợ IPv6.
  • ncat 7.70 + dfsg1-3 có lẽ mới hơn một chút vì không ổn định trong Debian, được cung cấp bởi nmap , không hỗ trợ IPv6.

Tôi sẽ đi cho một openbsd. Mỗi phiên bản có thể có cú pháp tinh tế khác nhau, vì vậy hãy cẩn thận.

Nhân tiện: socat là một công cụ tốt hơn nhiều có thể thực sự làm được nhiều hơn netcat. Bạn nên thử nó!


2
Tuyệt vời. Cảm ơn đã gợi ý socatcông cụ. Nó rõ ràng có nhiều lựa chọn hơn, và như sau: socat tcp6-listen:2222đã thực hiện công việc.
bashbin

2
@bashbin nhưng dài dòng hơn một chút trong cú pháp của nó. đó sẽ là socat tcp6-listen:2222,reuseaddr -(hoặc có thể reuseportthay vào đó) nếu bạn muốn sử dụng nó hai lần liên tiếp khi máy chủ (lệnh socat) ngắt kết nối trước.
AB

4

Tôi tin rằng chức năng của ipv4 & ipv6 trên thực tế là kết quả của sự nhầm lẫn xung quanh việc có nhiều triển khai (dĩa) hoặc các phiên bản hoàn toàn khác nhau. Nếu bạn tìm kiếm, bạn sẽ vấp ngã đề cập đến nc6. Việc triển khai này dường như nằm trong các bản phân phối dựa trên BSD.

Tôi sẽ thử cài đặt nc6trên bản phân phối cụ thể của bạn và chạy nó thay vì nchỗ trợ ipv6.

Nghiên cứu thêm

Tôi đã có thể tìm thấy cam kết này vào ngày 2018-01-11- thêm bản vá IPv6 rõ ràng là thêm chức năng IPv6 trở lại với những gì bạn đang gọi phiên bản mới hơn của netcat.

LƯU Ý: Tôi chỉ có quyền truy cập vào nc 7,50 trên các hệ thống của mình và như bạn mô tả, hỗ trợ cả -4-6.

Tôi nghi ngờ những gì bạn nghĩ là một phiên bản mới hơn của netcat thực tế là một phiên bản cũ hơn nhiều: http://nc110.sourceforge.net/ .

Nếu bạn muốn một danh sách đầy đủ các triển khai khác nhau, điều này có sẵn trong câu hỏi Wikipedia về Netcat .

Phiên bản gốc của netcat là một chương trình Unix. Phiên bản cuối cùng (1.10) được phát hành vào tháng 3 năm 1996. 1

Trên hầu hết các bản phân phối Linux, cả GNU netcat hoặc phiên bản NMAP dường như là thứ mà hầu hết đang sử dụng:

Có một số triển khai trên các hệ thống POSIX , bao gồm viết lại từ đầu như GNU netcat [5] hoặc OpenBSD netcat, 6 trong số đó hỗ trợ IPv6 và TLS . Phiên bản OpenBSD đã được chuyển sang cơ sở FreeBSD 7 và Windows / Cygwin. 8 Mac OS X đi kèm với netcat được cài đặt kể từ OSX 10.13 hoặc người dùng có thể sử dụng MacPorts để cài đặt một biến thể. [9] Ngoài ra còn có phiên bản Microsoft Windows của netcat. [10]

Ví dụ: trên CentOS 7.x:

$ nc --version
Ncat: Version 7.50 ( https://nmap.org/ncat )

$ rpm -qf /bin/nc
nmap-ncat-6.40-13.el7.x86_64
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.