Phần lớn lưu lượng Internet toàn cầu vẫn vận hành dựa trên BGP — giao thức định tuyến ra đời từ năm 1989. Thiết kế ban đầu của BGP mặc định tin cậy lẫn nhau. Bất kỳ nhà mạng nào cũng có thể gửi thông báo định tuyến tự nhận mình sở hữu dải IP của Google hay Cloudflare.
Hệ quả là lưu lượng lập tức bị hút lệch hướng. Năm 2008, Pakistan Telecom từng vô tình làm sập YouTube trên toàn cầu suốt 2 giờ chỉ vì thông báo nhầm một prefix /24. Để ngăn chặn hiểm họa này, giải pháp RPKI kết hợp xác thực nguồn gốc tuyến (Route Origin Validation – ROV) đã ra đời.
Ba phương pháp bảo vệ định tuyến BGP trong thực tế
Các kỹ sư mạng từng áp dụng nhiều cách để ngăn chặn tình trạng mạo danh prefix:
- 1. Bộ lọc tĩnh qua Prefix-list và IRR (Internet Routing Registry)
Thiết lập danh sách prefix được phép nhận từ từng đối tác (Peer/Transit) dựa trên cơ sở dữ liệu IRR như RADb hay RIPE. - 2. Ký số đường đi định tuyến (BGPsec)
Mỗi router trên hành trình đều ký điện tử vào thuộc tính AS-Path. Router nhận sẽ giải mã để kiểm tra từng chặng di chuyển của gói tin. - 3. RPKI kết hợp xác thực nguồn gốc (RPKI – ROV)
Chủ dải IP ký số một chứng chỉ ROA (Route Origin Authorization) thông qua các cơ quan quản lý Internet như APNIC, VNNIC. Router biên nhận danh sách xác thực từ máy chủ RPKI Validator nội bộ và đối chiếu xem Autonomous System (AS) phát tuyến có hợp lệ hay không.
So sánh ưu và nhược điểm từng giải pháp
Mỗi hướng tiếp cận đều có điểm đánh đổi rõ ràng giữa tính an toàn và chi phí vận hành:
1. Prefix-list và IRR Filters
- Ưu điểm: Mọi dòng router đều hỗ trợ sẵn, không cần bổ sung phần mềm trung gian.
- Nhược điểm: Dữ liệu IRR chứa nhiều thông tin rác và chậm cập nhật. Khi đối tác mở rộng dải mạng hoặc chia nhỏ subnet, bạn phải cập nhật thủ công. Quên sửa filter là mất kết nối ngay.
2. BGPsec
- Ưu điểm: Bảo vệ toàn diện từng bước nhảy (hop) trên toàn bộ chuỗi AS-Path.
- Nhược điểm: Yêu cầu router xử lý mật mã học liên tục. CPU quá tải khiến phần lớn phần cứng mạng hiện tại không đáp ứng nổi, dẫn đến chuẩn này gần như không được đưa vào production.
3. RPKI kết hợp ROV
- Ưu điểm: Xử lý triệt để các sự cố cấu hình nhầm lẫn lẫn tấn công giả mạo Origin AS. Router không cần kết nối trực tiếp ra ngoài Internet để tải hàng trăm nghìn chứng chỉ số, mà chỉ nhận dữ liệu đã xử lý sạch sẽ từ Validator.
- Nhược điểm: Chưa chống được kiểu tấn công sửa đổi AS trung gian tinh vi (AS-Path spoofing). Dù vậy, ROV vẫn là lá chắn thực tế nhất để triển khai ngay hôm nay.
Vì sao nên dựng Routinator trên Linux?
Thay vì bắt router biên xử lý tác vụ giải mã nặng nề, mô hình chuẩn là tách riêng một máy chủ Linux làm Validator. Máy chủ này đồng bộ chứng chỉ từ các tổ chức quản lý Internet, sau đó truyền kết quả cho router Cisco, Juniper hay FRRouting qua giao thức RTR (RPKI-to-Router).
Routinator do NLnet Labs phát triển bằng Rust hiện là validator được dùng phổ biến nhất nhờ các ưu thế:
- Hiệu năng cao: Chạy tốn rất ít tài nguyên, chỉ ăn khoảng 1.5GB đến 2GB RAM cho hơn 500.000 bản ghi ROA toàn cầu.
- Tích hợp đầy đủ: Hỗ trợ giao diện web, endpoint Prometheus metrics và RTR daemon chuẩn RFC 6810/8210.
- Cài đặt thuận tiện: NLnet Labs cung cấp sẵn kho package chính thức cho Debian và Ubuntu.
Khi đăng ký ROA trên portal của APNIC hay VNNIC, bạn phải xác định đúng tiền tố (Prefix) và MaxLength. Đặt sai MaxLength sẽ khiến router của đối tác gán cờ Invalid rồi drop sạch lưu lượng hợp lệ. Để nhẩm nhanh dải IP, địa chỉ broadcast và số host khả dụng, bạn có thể kiểm tra qua toolcraft.app/vi/tools/developer/ip-subnet-calculator. Việc chia nhỏ các khối /24 thành /25 hay /26 chuẩn xác ngay từ đầu sẽ giúp bạn tránh cấu hình sai độ dài subnet trên ROA.
Hướng dẫn triển khai Routinator trên Ubuntu/Debian
Bước 1: Cài đặt Routinator
Thêm kho lưu trữ của NLnet Labs và cài gói phần mềm:
# Cài đặt công cụ phụ trợ
sudo apt update && sudo apt install -y curl gnupg lsb-release
# Thêm GPG key từ NLnet Labs
curl -fsSL https://packages.nlnetlabs.nl/aptkey.asc | sudo gpg --dearmor -o /usr/share/keyrings/nlnetlabs-archive-keyring.gpg
# Thêm repository vào danh sách nguồn
echo "deb [signed-by=/usr/share/keyrings/nlnetlabs-archive-keyring.gpg] https://packages.nlnetlabs.nl/linux/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/nlnetlabs.list
# Cập nhật và tiến hành cài đặt
sudo apt update
sudo apt install -y routinator
Bước 2: Khởi tạo dữ liệu TALs
Routinator cần nạp tệp Trust Anchor Locators (TAL) từ 5 cơ quan RIR toàn cầu (AFRINIC, APNIC, ARIN, LACNIC, RIPE NCC). Riêng ARIN yêu cầu xác nhận điều khoản dịch vụ:
# Chạy lệnh khởi tạo dưới quyền user routinator
sudo -u routinator routinator init --accept-arin-rpa
Bước 3: Cấu hình dịch vụ
Mở tệp cấu hình chính tại /etc/routinator/routinator.conf:
sudo nano /etc/routinator/routinator.conf
Thiết lập cổng RTR (3323) để router kết nối vào và cổng HTTP (8323) để theo dõi trạng thái:
# Cổng dịch vụ RTR cung cấp cho Router
rtr-listen = ["0.0.0.0:3323"]
# Cổng web UI và Prometheus metrics
http-listen = ["0.0.0.0:8323"]
# Chu kỳ cập nhật dữ liệu từ RIR (giây)
refresh = 600
Lưu tệp, sau đó kích hoạt service:
sudo systemctl enable --now routinator
sudo systemctl status routinator
Bước 4: Kiểm tra đồng bộ và xác thực prefix
Ở lần đầu tiên khởi chạy, Routinator cần khoảng 5 đến 15 phút để tải toàn bộ chứng chỉ ROA qua rsync và RRDP. Bạn có thể theo dõi tiến trình:
journalctl -u routinator -f
Sau khi dữ liệu đồng bộ xong, thử kiểm tra một cặp IP và ASN cụ thể ngay trên terminal:
# Kiểm tra tuyến 8.8.8.0/24 của Google (AS15169)
routinator validate --asn 15169 --prefix 8.8.8.0/24
Hệ thống sẽ trả về một trong ba trạng thái:
- Valid: Dải IP và Origin ASN khớp hoàn toàn với ROA hợp lệ.
- Invalid: Dải IP có ROA nhưng phát ra từ ASN khác, hoặc chiều dài subnet vượt quá MaxLength cho phép. Cần loại bỏ tuyến này ngay lập tức.
- NotFound: Dải IP chưa từng đăng ký ROA. Router vẫn cho phép định tuyến bình thường để tránh gián đoạn dịch vụ.
Bước 5: Cấu hình Router biên liên kết RTR (Ví dụ FRRouting)
Khai báo IP của máy chủ Routinator trên router chạy FRRouting để kích hoạt cơ chế ROV:
router bgp 65001
rpki
rpki polling_period 300
rpki cache 192.168.10.50 3323 preference 1
exit
!
route-map BGP-IN deny 10
match rpki invalid
!
route-map BGP-IN permit 20
Cấu hình trên giúp router tự động từ chối mọi tuyến đường bị đánh dấu invalid. Nhờ đó, hệ thống mạng của bạn không còn nguy cơ chuyển nhầm dữ liệu sang các tuyến BGP bị mạo danh.
