netstat - tại sao các trình tiện ích IPv4 chỉ nghe các cổng được liệt kê trong -A inet6?


22

Tôi có một máy tính với:

Linux superhost 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux

Nó chạy Apache trên cổng 80 trên tất cả các giao diện và nó không hiển thị netstat -planA inet, tuy nhiên nó có thể được tìm thấy trong netstat -planA inet6:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp6       0      0 :::5672                 :::*                    LISTEN      2402/beam.smp   
tcp6       0      0 :::111                  :::*                    LISTEN      1825/rpcbind    
tcp6       0      0 :::9200                 :::*                    LISTEN      2235/java       
tcp6       0      0 :::80                   :::*                    LISTEN      2533/apache2    
tcp6       0      0 :::34611                :::*                    LISTEN      1856/rpc.statd  
tcp6       0      0 :::9300                 :::*                    LISTEN      2235/java       
...
tcp6       0      0 10.0.176.93:80          10.0.76.98:53704        TIME_WAIT   -               
tcp6       0      0 10.0.176.93:80          10.0.76.98:53700        TIME_WAIT   -               

Tôi có thể tiếp cận nó bằng TCP4 tốt, như đã thấy ở trên. Tuy nhiên, ngay cả những kết nối này được liệt kê dưới đây tcp6. Tại sao?


1
Tất cả các địa chỉ IPv4 ánh xạ trực tiếp đến các địa chỉ IPv6 (nhưng không phải ngược lại). Xem: vi.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses
Patrick

4
làm ơn ngừng sử dụng netstat? nó đã chết - một thập kỷ trước . Sử dụng iproute2 'sss
mikeerv

Câu trả lời:


16

Theo mặc định nếu bạn không chỉ định địa chỉ cho Listentham số Apache , nó xử lý địa chỉ ipv6 bằng IPv4-mapped IPv6địa chỉ. Bạn có thể xem trong Apache ipv6

Đầu ra netstatkhông có nghĩa là Apache không nghe trên địa chỉ IPv4. Đó là một IPv4-mapped IPv6địa chỉ.


Có các dịch vụ khác nghe địa chỉ IPv4 nhưng được liệt kê là tcp6 bởi netstat, ví dụ: Tìm kiếm đàn hồi
Mischa Arefiev

Tôi đoán bạn đã đọc liên kết wikipedia được cung cấp bởi @Patrick. Tất cả các dịch vụ sử dụng địa chỉ IPv6 được ánh xạ IPv4 sẽ được hiển thị trong tcp6đầu ra của netstat.
beginer

14

Lý do cho điều này là bởi vì tất cả các địa chỉ IPv4 cũng là địa chỉ IPv6. Một phạm vi nhỏ các địa chỉ IPv6 được đặt sang một bên để sử dụng cho ánh xạ một đến một địa chỉ IPv4. Ví dụ: địa chỉ IPv4 192.0.2.128có thể truy cập thông qua địa chỉ IPv6 ::ffff:192.0.2.128. Điều này đã được thực hiện để bất kỳ ứng dụng nào chỉ hỗ trợ IPv6, vẫn có thể nghe trên các địa chỉ IPv4. Lưu ý rằng điều này không thể được sử dụng cho một địa chỉ IPv6 (không được ánh xạ) để nói chuyện với một địa chỉ IPv4 mà không có những thứ khác liên quan, vì IPv4 sẽ không biết cách xử lý địa chỉ IPv6 (bạn có thể sử dụng NAT hoặc các giải pháp khác Tuy nhiên).

Vì tất cả các địa chỉ IPv4 được thể hiện bằng IPv6, khi yêu cầu netstatliệt kê các ứng dụng bằng IPv6, bạn cũng sẽ nhận được IPv4.
Nó có thể đại diện 10.0.176.93như ::ffff:10.0.176.93, hoặc thậm chí ::ffff:a00:b05d, nhưng các nhà phát triển ứng dụng đã chọn hiển thị nó dưới dạng địa chỉ IPv4 có ký hiệu chấm chấm thông thường.


Cảm ơn bạn, nhưng điều này không trả lời tại sao họ không bật lên khi làm thường xuyên-A inet
Mischa Arefiev

Tôi đoán lý do các kết nối nghe chỉ được liệt kê là ổ cắm tcp6 là vì chúng thực sự là ổ cắm IPv6, nhưng với tính năng bổ sung mà chúng cũng chấp nhận kết nối IPv4, nếu được định cấu hình để làm như vậy. Các ổ cắm được liên kết với INADDR_ANY6 và khi kết nối IPv4 đến địa chỉ được ánh xạ tới địa chỉ IPv6 có tiền tố :: ffff: 0000/96. Đây là cách sử dụng duy nhất cho các địa chỉ được ánh xạ này; chúng không nên được sử dụng trên dây.
Johan Myréen
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.