Ai đó đưa bạn địa chỉ đầu và địa chỉ cuối rồi yêu cầu một tuyến VPN. Động thái hấp dẫn là chọn tiền tố ngắn nhất chứa cả hai đầu, và động thái đó âm thầm thêm những đích mà không ai yêu cầu. Khối CIDR luôn có kích thước là lũy thừa của hai và địa chỉ bắt đầu căn theo kích thước đó, nên một khoảng tùy ý thường cần nhiều hơn một. Đi qua khoảng, chia chính xác, rồi kiểm tra các địa chỉ ngay ngoài nó.

Bắt đầu từ khoảng, không phải tiền tố

Ghi ra địa chỉ đầu và địa chỉ cuối trước khi viết bất cứ điều gì khác. Cặp này chính là yêu cầu; tiền tố chỉ là một cách diễn đạt khả dĩ của nó, và đôi khi là cách sai. Hai con số cũng dễ kiểm tra hơn nhiều so với một mặt nạ.

Một khoảng thẳng hàng thu về một khối duy nhất. Một khoảng không thẳng hàng phân rã thành nhiều khối, và sự phân rã là chính xác chứ không phải gần đúng. Điều bạn không được làm là làm tròn ra ngoài và gọi nó là đủ gần, vì các địa chỉ thừa sẽ nhận chính sách mà tuyến mang theo.

Cả hai hướng sai đều quan trọng. Với tuyến vào đường hầm, các địa chỉ thừa bị kéo vào VPN. Với ngoại lệ bỏ qua, các địa chỉ thừa bỏ qua nó. Không kết quả nào hiện ra trong bảng tuyến chỉ hiển thị tiền tố bạn đã cài.

Trường hợp một: khoảng tình cờ thẳng hàng

Lấy 198.51.100.64 đến 198.51.100.127. Địa chỉ đầu căn trên ranh giới 64 địa chỉ và khoảng đúng 64 địa chỉ, nên một /26 duy nhất mô tả nó mà không dư gì.

Đây là trường hợp dễ và đáng nhận ra, vì nó nghĩa là yêu cầu có lẽ do người đã nghĩ theo tiền tố viết. Nó cũng nghĩa là việc kiểm tra ngắn: xác nhận kích thước là lũy thừa của hai và điểm bắt đầu là bội số của kích thước đó.

Các dải tài liệu là ví dụ tốt chính vì không ai sở hữu chúng. Đừng cài những địa chỉ này trên một đường hầm thật và đừng cho rằng một dải được cấp là không gian tài liệu chỉ vì nó trông lạ.

Trường hợp hai: không thẳng hàng, nên chia nó

Giờ lấy 198.51.100.100 đến 198.51.100.107. Đó là tám địa chỉ, tức lũy thừa của hai, nhưng 100 không phải bội số của tám. Một khối duy nhất cỡ đó không thể bắt đầu ở đó, nên khoảng phải được phủ bởi nhiều hơn một.

Phủ chính xác là hai khối /30: 198.51.100.100/30 phủ 100 đến 103, và 198.51.100.104/30 phủ 104 đến 107. Tổng cộng tám địa chỉ, không gì ngoài khoảng, và cách phân rã là duy nhất cho một khoảng cho trước.

python3 -c "from ipaddress import ip_address, summarize_address_range as s; print(*s(ip_address('198.51.100.100'), ip_address('198.51.100.107')), sep='\n')"

Hàm thư viện chuẩn làm phần số học cho bạn, và tài liệu ipaddress định nghĩa nó trả về gì. Điều nó không làm là chọn cổng, quyết định ai sở hữu các địa chỉ, hay cấp quyền truy cập vào bất kỳ dịch vụ nào phía sau chúng.

Đo xem tiền tố rộng hơn sẽ bắt được gì

Trước khi chấp nhận một lối tắt, hãy tính xem nó tốn bao nhiêu. Một /28 bắt đầu tại 198.51.100.96 phủ 96 đến 111, tức mười sáu địa chỉ thay vì tám. Tám địa chỉ thừa là 96 đến 99 và 108 đến 111, và mỗi địa chỉ trong đó sẽ thừa hưởng tuyến.

python3 -c "from ipaddress import ip_network as n; w=set(n('198.51.100.96/28')); t=set(n('198.51.100.100/30'))|set(n('198.51.100.104/30')); print(len(w), len(t), sorted(w-t))"

Tám đích thừa là một con số cụ thể mà bạn có thể đưa vào yêu cầu thay đổi. Đó cũng là con số quyết định lối tắt có chấp nhận được hay không, và đó là câu hỏi chính sách chứ không phải số học.

Giữ số học và việc khám phá tách biệt. Một khoảng do nhà điều hành mạng cung cấp được chuyển đổi chính xác. Một câu trả lời DNS từ một dịch vụ thay đổi không xác lập dải đầy đủ hay vĩnh viễn của dịch vụ đó, và các tên không liên quan có thể dùng chung một địa chỉ.

Cài tập chính xác và kiểm tra các mép

Giao từng tiền tố thu được cho người sở hữu cấu hình VPN và để họ cài qua cơ chế được hỗ trợ. Nếu yêu cầu cần hai mục, hãy giữ hai mục thay vì mở rộng một mục để làm biểu mẫu ngắn hơn.

sudo ip route add 198.51.100.100/30 via 10.90.0.1 dev tun0
sudo ip route add 198.51.100.104/30 via 10.90.0.1 dev tun0
ip route get 198.51.100.101
ip route get 198.51.100.97

Hai lệnh cuối là những lệnh mọi người bỏ qua. Địa chỉ bên trong đầu tiên nên đi theo tuyến mới, và địa chỉ ngay ngoài khoảng thì không. Nếu cả hai đi cùng một đường, khoảng đã bị mở rộng ở đâu đó giữa yêu cầu và cấu hình.

Ghi lại địa chỉ đầu, địa chỉ cuối và các tiền tố diễn đạt chúng. Người tiếp theo xem lại quy tắc có thể đối chiếu yêu cầu với cấu hình mà không làm lại số học, và khác biệt giữa tuyến chính xác và tuyến tiện lợi vẫn hiển nhiên.

Bài viết liên quan