Khớp máy khách VPN Linux với giao thức của thiết bị cũ
Đọc các cổng được công bố của thiết bị, rồi cài máy khách phù hợp: pppd trên GRE, strongSwan cho IKEv1 XAuth hoặc openconnect cho cổng thông tin.
Bốn họ giao thức bao phủ gần như mọi thiết bị còn nằm trong tủ rack, và mỗi họ hỏng theo một kiểu khác nhau trên Linux. Cổng được công bố và đề xuất đã cấu hình của đầu xa quyết định gói bạn cần, chứ không phải bản phân phối bạn tình cờ chạy. Cài thứ mà một bài đăng diễn đàn nhắc đến rồi sửa cho đến khi có gì đó kết nối là cách một buổi chiều biến mất. Đọc thiết bị trước, cài đặt thứ hai, xác minh thứ ba.
Ghi lại những gì đầu xa công bố
Viết ra giao thức, cổng và xác thực mà thiết bị mong đợi trước khi mở trình quản lý gói. Bốn họ bao phủ phần lớn thiết bị cũ, và bảng bên dưới là toàn bộ quyết định trên một màn hình.
| Family | Ports | Linux side |
|---|---|---|
| PPTP | TCP 1723 plus GRE, IP protocol 47 | pppd with a peer file |
| L2TP/IPsec | UDP 500, 4500, 1701 | NetworkManager plugin over strongSwan |
| IKEv1 aggressive with XAuth | UDP 500 | native strongSwan connection |
| AnyConnect-style portal | TCP 443 | openconnect with a TUN device |
Tài liệu hướng dẫn và chính các quy tắc tường lửa của thiết bị đáng tin hơn tên giao thức trên trang đăng nhập của nó. Một thiết bị quảng cáo IPsec có thể chỉ nói IKEv1, và một bản firmware không ai áp dụng có thể là thứ cuối cùng thêm IKEv2. Xác nhận cả đường dữ liệu lẫn cổng cấu hình, vì đây chính là chỗ thiết bị cũ và mạng hiện đại khác nhau. Sai ở bước này nghĩa là gỡ lỗi máy khách của bạn với một tính năng mà đầu bên kia chưa từng có.
PPTP: chứng minh GRE trước khi sửa pppd
PPTP trên Linux không phải một daemon bạn khởi động mà là một lời gọi pppd, và các tham số kết nối sống trong một tệp peer có tên mà pppd đọc khi được gọi. Các bản phân phối vẫn đóng gói nó, dù những điểm yếu đã biết của giao thức khiến nó không phù hợp cho bất cứ thứ gì nhạy cảm, nên hãy giữ nó thật nghiêm ngặt cho một thiết bị không cung cấp gì khác. Theo dõi GRE trong khi máy khách thương lượng, bằng một lần bắt gói ngắn thay vì phỏng đoán. Thất bại tốn nhiều thời gian nhất không phải xác thực mà là đường dữ liệu bị thiếu.
pppd call branch-office
tcpdump -ni any proto gre -c 5
Nếu cấu hình xong mà liên kết không bao giờ mang lưu lượng, hãy nghi đường GRE trước khi chạm vào thông tin đăng nhập. Nhóm bảo mật trên đám mây cần một quy tắc rõ ràng cho giao thức 47, và một số mạng chặn hoàn toàn nó mà không có lỗi hiển thị. Kiểm tra từ mạng bạn thực sự sẽ dùng, không phải từ phòng thí nghiệm cho phép mọi thứ.
L2TP/IPsec: một đề xuất khớp đúng thắng mười lần thử
Đọc nhật ký daemon thay vì hộp thoại trên màn hình, vì hộp thoại gộp vài lỗi khác nhau vào một thông báo. Lỗi NO_PROPOSAL_CHOSEN thuộc giai đoạn một: máy khách đã đề nghị một mã hóa, hàm băm hoặc nhóm Diffie-Hellman mà máy chủ sẽ không chấp nhận. Liệt kê những gì thiết bị hỗ trợ và viết một đề xuất khớp với nó, vì các tổ hợp ngẫu nhiên thường cho cùng lỗi đó chậm hơn. Trên máy tính để bàn, máy khách thực dụng là plugin NetworkManager L2TP với strongSwan hoặc Libreswan bên dưới.
Một chuỗi đề xuất có nghĩa một đằng với plugin trên máy tính để bàn có thể có nghĩa khác với daemon mà nó giao việc, nên hãy giữ cú pháp phù hợp với tầng bạn đang sửa. Nếu thiết bị cũng đòi một bí mật đường hầm, đó là giai đoạn riêng so với khóa IPsec. Xác nhận giao diện đang hỏi cái nào trong hai trước khi gõ gì vào đó.
IKEv1 tấn công với XAuth, và trường hợp cổng thông tin
Một đầu cuối kiểu FortiGate thường muốn chế độ tấn công với XAuth và địa chỉ ở chế độ đã cấu hình, điều mà một plugin đồ họa có thể không hiển thị chút nào. Daemon gốc xử lý được, và khối bên dưới là hình dạng của cấu hình đó chứ không phải một tệp đầy đủ. Xem tài liệu hiện hành của nhà cung cấp cho các giá trị đề xuất.
conn branch
keyexchange=ikev1
aggressive=yes
leftauth=psk
leftauth2=xauth
leftsourceip=%config
right=203.0.113.10
Các bản strongSwan cũ dùng xauth=client ở nơi phiên bản 5 dùng leftauth2=xauth, nên một đoạn sao chép có thể hỏng chỉ vì cú pháp. Với cổng TLS, openconnect nói giao thức AnyConnect xử lý Cisco và phần lớn thương hiệu đổi tên, và nó cần một thiết bị TUN cùng quyền cấu hình thiết bị đó. Truyền địa chỉ cổng đúng như trình duyệt hiển thị, kể cả bất kỳ đường dẫn nào thiết bị mong đợi, rồi kiểm tra địa chỉ được cấp trước khi thử bất cứ thứ gì phía sau. Tạo sẵn giao diện loại bỏ một loại bất ngờ trong lúc cấu hình.
sudo ip tuntap add dev tun0 mode tun
sudo openconnect --protocol=anyconnect vpn.example.com
Kết nối, rồi xác minh theo thứ tự cố định
Chỉ chạy đúng một trình quản lý VPN một lúc, vì một hồ sơ NetworkManager và một daemon khởi động bằng tay sẽ tranh nhau tuyến và DNS. Hạ hồ sơ xuống trước khi thử kết nối thủ công, và xác nhận không còn giao diện đường hầm cũ nào sống sót. Sau đó xác minh theo thứ tự này: địa chỉ đường hầm, tuyến tới máy chủ nội bộ duy nhất bạn cần, phân giải tên, và cuối cùng là một yêu cầu thật. Một biểu tượng xanh chỉ chứng minh xác thực và không gì khác.
ip -4 addr show tun0
ip route get 10.20.30.10
getent hosts app.internal
Nếu một bước hỏng, dừng ở đó thay vì thử bước tiếp theo, vì lỗi DNS ở hạ nguồn một tuyến đứt không dạy bạn điều gì. Lưu một bản sao hồ sơ đang chạy trước khi thử nghiệm, vì một tệp kết nối bị xóa rất dễ mất và khó dựng lại. Giữ các giá trị đề xuất trong cùng ghi chú với mẫu thiết bị và phiên bản firmware, vì ghi chú đó là khác biệt giữa một lần di trú và một dự án khảo cổ khi chiếc hộp được thay.