Điểm:0

Liên kết với IP ngẫu nhiên từ mạng con IPv6 (/64) không hoạt động

lá cờ cn

Tôi có một máy chủ scaleway.com (DEV1-S) cung cấp cho tôi một mạng con /64 IPv6. Tôi muốn sử dụng IP từ mạng con này để thực hiện yêu cầu HTTP (sẽ sử dụng wget trong các ví dụ) nhưng tôi không thể làm cho nó hoạt động. Yêu cầu (với wget cũng như với các chương trình và ngôn ngữ lập trình khác) sẽ bị treo.

Địa chỉ IPv6 là 2001:bc8:1830:1b18::1, cổng là 2001:bc8:1830:1b18:: và mặt nạ mạng là 64.

Đang chạy địa chỉ ip -6, trên máy chủ sạch/vừa tạo, sẽ xuất ra như sau:

root@test:~# ip -6 addr
1: lo: <LOOPBACK,UP,LOWER_UP> trạng thái mtu 65536 UNKNOWN qlen 1000
    inet6 ::1/128 máy chủ phạm vi 
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
2: ens2: <BROADCAST,MULTICAST,UP,LOWER_UP> trạng thái mtu 1500 UP qlen 1000
    inet6 2001:bc8:1830:1b18::1/64 phạm vi toàn cầu 
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
    liên kết phạm vi inet6 fe80::dc2e:4cff:fe57:a019/64 
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi

Tôi đã đọc trên các diễn đàn và các câu hỏi/câu trả lời khác để bạn có thể liên kết với một địa chỉ từ mạng con, bạn cần chạy các lệnh sau:

ip add add local 2001:bc8:1830:1b18::/64 dev lo
tuyến ip thêm cục bộ 2001:bc8:1830:1b18::/64 dev ens2
sysctl -w net.ipv6.ip_nonlocal_bind=1

Sau các lệnh này, đầu ra của địa chỉ ip -6 là như sau:

root@test:~# ip -6 addr
1: lo: <LOOPBACK,UP,LOWER_UP> trạng thái mtu 65536 UNKNOWN qlen 1000
    inet6 2001:bc8:1830:1b18::/64 phạm vi toàn cầu 
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
    inet6 ::1/128 máy chủ phạm vi 
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
2: ens2: <BROADCAST,MULTICAST,UP,LOWER_UP> trạng thái mtu 1500 UP qlen 1000
    inet6 2001:bc8:1830:1b18::1/64 phạm vi toàn cầu 
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
    liên kết phạm vi inet6 fe80::dc2e:4cff:fe57:a019/64 
       hợp lệ_lft mãi mãi ưa thích_lft mãi mãi

Bây giờ tôi có thể ping6, ví dụ: 2001:bc8:1830:1b18::9 thay vì chỉ 2001:bc8:1830:1b18::1, nhưng chỉ từ máy chủ của riêng tôi. Không phải từ các máy chủ/mạng khác.

không có sysctl -w net.ipv6.ip_nonlocal_bind=1, wget sẽ trả về cái này:

root@test:~# wget --bind-address=2001:bc8:1830:1b18::2 -v google.com
--2021-08-13 00:29:45-- http://google.com/
Đang phân giải google.com (google.com)... 2a00:1450:400e:802::200e, 142.250.179.174
Kết nối với google.com (google.com)|2a00:1450:400e:802::200e|:80... không thành công: Không thể chỉ định địa chỉ được yêu cầu.
Kết nối với google.com (google.com)|142.250.179.174|:80... không thành công: Họ địa chỉ không được giao thức hỗ trợ.

Bây giờ sau 3 lệnh, khi tôi chạy wget với cờ --bind-address được đặt thành một địa chỉ trong mạng con khác với 2001:bc8:1830:1b18::1, yêu cầu sẽ bị treo vĩnh viễn:

root@test:~# wget --bind-address=2001:bc8:1830:1b18::1 google.com
--2021-08-12 23:55:48-- http://google.com/
Đang phân giải google.com (google.com)... 2a00:1450:400e:802::200e, 142.250.179.174
Đang kết nối với google.com (google.com)|2a00:1450:400e:802::200e|:80... đã kết nối.
Đã gửi yêu cầu HTTP, đang chờ phản hồi... 301 Đã di chuyển vĩnh viễn
Vị trí: http://www.google.com/ [theo sau]
--2021-08-12 23:55:48-- http://www.google.com/
Đang giải quyết www.google.com (www.google.com)... 2a00:1450:400e:80f::2004, 142.251.36.4
Đang kết nối với www.google.com (www.google.com)|2a00:1450:400e:80f::2004|:80... được kết nối.
Đã gửi yêu cầu HTTP, đang chờ phản hồi... 200 OK
Độ dài: không xác định [text/html]
Đang lưu vào: âindex.htmlâ

index.html [ <=> ] 13,03K --.-KB/s trong 0,009 giây  

2021-08-12 23:55:48 (1,44 MB/s) - âindex.htmlâ đã lưu [13342]

root@test:~# wget --bind-address=2001:bc8:1830:1b18::2 google.com
--2021-08-12 23:55:52-- http://google.com/
Đang phân giải google.com (google.com)... 2a00:1450:400e:802::200e, 142.250.179.174
Đang kết nối với google.com (google.com)|2a00:1450:400e:802::200e|:80... 

lsof đối với quá trình wget nói như sau: quên 3413 root 3u IPv6 58660 0t0 TCP [2001:bc8:1830:1b18::2]:56623->ams15s41-in-x0e.1e100.net:http (SYN_SENT)

Tôi đang làm gì sai? Cảm ơn rất nhiều trước!

Michael Hampton avatar
lá cờ cz
Quá trình này chỉ cho phép chấp nhận các kết nối đến trên mạng được chỉ định. Nó không hỗ trợ các kết nối gửi đi. Thêm trực tiếp các địa chỉ IPv6 đó vào giao diện mạng.
003random avatar
lá cờ cn
@MichaelHampton cảm ơn vì câu trả lời của bạn. Tôi có thể xác nhận rằng nó hoạt động khi tôi thêm các IP mà tôi muốn sử dụng trực tiếp vào giao diện, nhưng điều này sẽ không mở rộng đúng không? Có rất nhiều địa chỉ trong mạng con và tôi cá là việc thêm tất cả chúng vào giao diện sẽ không suôn sẻ. Tôi đã đọc điều gì đó về freebind và anyIP. những điều đó cũng chỉ áp dụng cho các kết nối sắp tới?
Michael Hampton avatar
lá cờ cz
Có, FreeBind và AnyIP áp dụng cho các kết nối đến và có, nó không mở rộng quy mô tốt để thêm các địa chỉ riêng lẻ vào giao diện. Việc thêm số lượng lớn địa chỉ cho các kết nối gửi đi không phải là điều mà người ta thường làm hoặc thậm chí không nghĩ tới. Bạn _thực sự_ cần phải làm điều đó? Tôi đoán rằng bạn không.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.