Lọc Địa Chỉ IPv6 Công Cộng Đúng Qua Chỉ Dẫn (Ký Ức Về Việc Tối Ưu IPv6 DDNS)
HowieHz
2024-02-06
Triển Khai & Vận Hành > Nâng Cao Hiệu Suất > Kỹ Thuật Script
Hệ Thống - Linux
Máy chủ có nhiều địa chỉ IPv6, nhưng dịch vụ DDNSGo không thể nhận đúng địa chỉ.
Quá Trình Nghiên Cứu
- Lựa chọn qua giao diện mạng: Cách này quá chậm và không đảm bảo luôn khả dụng.
- Lựa chọn qua tên card mạng: Không đảm bảo chính xác mỗi lần khởi động lại thiết bị mạng (tác giả đã phát hiện rằng địa chỉ thứ hai thường là hợp lệ, nhưng sau khi khởi động lại modem quang thì cách này không còn hiệu quả nữa).
- Sử dụng lệnh từ hệ thống: Lệnh mặc định cung cấp bởi dự án DDNSGo không hoạt động như mong muốn.
Cách Tạo Một Chỉ Dẫn Chính Xác
Dự án DDNSGo cung cấp lệnh sau:
|
|
Chúng ta có thể tùy chỉnh lệnh này để phù hợp với tình huống cụ thể.
Bước 1: Sử dụng ip -6 addr
để kiểm tra địa chỉ IPv6 của card mạng.
Tác giả sử dụng mạng dây kết nối qua eth0
, và chỉ có eth0
nhận được địa chỉ IPv6 bắt đầu bằng “24”. Vì vậy, eth0
là card mạng cần lọc.
Đây là đầu ra mẫu của máy chủ tác giả (đã xử lý thông tin nhạy cảm):
|
|
Do đó, đoạn lệnh đầu tiên có thể được thay đổi thành ip -6 addr show eth0
.
Tiếp theo, thử nghiệm lệnh ip -6 addr show eth0 | grep inet6
sẽ cho kết quả sau:
|
|
Như chúng ta biết, các địa chỉ có nhãn deprecated
là những địa chỉ bị khai tử hoặc hết hạn. Chúng không thể sử dụng được trong thực tế. Để kiểm tra sự ổn định, bạn có thể dùng công cụ ping trực tuyến hoặc kết nối laptop qua điểm nóng di động để đảm bảo rằng tất cả các thiết lập mạng (bộ định tuyến, modem quang, v.v.) đều đang hoạt động bình thường.
Qua nhiều lần thử nghiệm, tác giả nhận thấy rằng địa chỉ /128
có thể bị đánh dấu là deprecated
hoặc không, nhưng dù thế nào nó cũng không thể liên lạc được. Do đó, đoạn lệnh grep inet6
đã được sửa thành grep 'inet6 240[a-f:A-F 0-9]*/64'
.
Sau một tuần vận hành ổn định, mạng bị ngừng do thiếu phí thanh toán. Sau khi nạp tiền và yêu cầu bộ định tuyến tái cấu hình địa chỉ IP, dịch vụ trở nên không khả dụng.
Đầu ra của lệnh ip -6 addr show eth0 | grep inet6
lúc này trông như sau:
|
|
Rõ ràng, có rất nhiều địa chỉ với prefixlen 64
nhưng bị đánh dấu là deprecated
. Đây là lý do tại sao việc cố định lấy địa chỉ thứ hai qua card mạng sẽ dẫn đến lỗi sau lần đầu tiên. Vì vậy, tác giả đã thêm lệnh grep -v 'deprecated'
giữa hai bước để loại bỏ các địa chỉ không cần thiết.
Cập nhật ngày 25 tháng 2 năm 2024:
Một người dùng trên GitHub phản hồi rằng nếu đường truyền internet thường xuyên thay đổi, lệnh trên vẫn có thể trả về hai địa chỉ, và địa chỉ mới ở vị trí thứ hai mới là chính xác. Do đó, thêm lệnh tail -1
vào cuối cùng để chọn địa chỉ cuối cùng.
Lệnh Cuối Cùng
(Lưu ý: Thay eth0
bằng tên card mạng của bạn hoặc giữ nguyên ip -6 addr
nếu không chắc chắn.)
|
|
Bài Viết Liên Quan
- 2025-03-19: Chia Sẻ Script CDN Tự Động Chuyển Sang Cloudflare Khi Đạt Giới Hạn Lưu Lượng
- 2024-12-23: Script Gửi Tin Nhắn Hàng Loạt Cho Các Nhóm QQ Dựa Trên OneBot API
Trang Chủ | Lưu Trữ | Nhật Ký | Liên Kết Hữu Ích | Về Tác Giả