Hai đường hầm OpenVPN trên một máy chủ Linux: đường đi thuộc về ai?
Hai hồ sơ máy khách có thể cùng tồn tại sau khi các nhóm địa chỉ, tuyến đường được đẩy và yêu cầu tuyến mặc định được gán. Hãy quyết định quyền sở hữu trước, rồi dùng dấu cho đường về.
Hai hồ sơ đã kết nối, và một trong số đó đang âm thầm mang lưu lượng dành cho hồ sơ kia. Một máy chủ Linux có thể chạy cả hai OpenVPN máy khách cùng lúc mà không gặp khó khăn. Điều nó không thể làm là quyết định thay bạn tiến trình nào được phép yêu cầu tiền tố nào. Quyết định đó phải được đưa ra trước khi đường hầm thứ hai dựng lên, không phải sau khi một tài nguyên ngừng phản hồi.
Bắt đầu từ công việc mà liên kết thứ hai phải làm
Một văn phòng truy cập được qua một hồ sơ và một phòng thí nghiệm truy cập được qua hồ sơ khác cần cả hai đường hầm hoạt động và không bên nào yêu cầu mọi thứ. Một ứng dụng cố chấp phải ra ngoài qua hồ sơ thứ hai cần một quy tắc chính sách chứ không phải một tuyến mặc định thứ hai. Một liên kết dự phòng chỉ cần một đường hầm chạy tại một thời điểm, nên bản dự phòng không nên khởi động cùng máy.
Đó là ba cấu hình khác nhau, và chúng bị nhầm lẫn vì cả ba đều bắt đầu giống nhau: một hồ sơ thứ hai và một kết nối thành công. Hãy viết ra cách sắp xếp dự định trước, rồi cấu hình theo hướng đó. Một câu về ý định tiết kiệm một giờ bắt gói.
systemctl list-units --type=service 'openvpn-client@*' ip -4 route show default
Lệnh đầu tiên liệt kê các phiên bản đang chạy, kể cả những phiên bản được khởi động thủ công bên ngoài trình quản lý. Lệnh thứ hai in yêu cầu tuyến mặc định hiện tại, và đó là trạng thái bạn sẽ phải giải thích sau này.
Các nhóm chồng lấn hỏng trước khi định tuyến hỏng
Hai máy chủ sẽ vui vẻ cấp địa chỉ từ cùng một 10.8.0.0/24. Khi đó máy khách giữ hai giao diện trong một tiền tố mà không có gì nói đích nào thuộc về giao diện nào, và hành vi kết quả trông như lỗi định tuyến nhưng thực ra là lỗi đánh số. Đánh số lại một nhóm tốn một lần sửa cấu hình; mỗi cách xử lý định tuyến sau đó tốn một ngày cuối tuần. Kiểm tra nhóm trước khi thêm tuyến cho nó.
Cũng nên xem LAN cục bộ. Một LAN gia đình mang số 192.168.1.0/24 mà một đường hầm cũng mở ra tạo ra cùng sự mơ hồ, và triệu chứng là tên máy chủ phân giải được trong khi kết nối không bao giờ hoàn tất. Điều đó trông như lỗi phân giải tên cho đến khi bạn in các tuyến.
ip -4 addr show ip route show table all | grep -E '10\.|192\.168\.'
So sánh cả hai đầu ra với cả hai cấu hình máy chủ trước khi chạm vào máy khách. Nếu các tiền tố chồng lên nhau, hãy dừng lại và đánh số lại, vì không lượng khởi động lại nào tách được chúng.
Cho mỗi hồ sơ đơn vị riêng và mỗi tiền tố một chủ sở hữu
Mỗi hồ sơ có tên phiên bản riêng và tệp cấu hình riêng, nên phiên bản tên office nạp office.conf trong khi phiên bản tên lab nạp lab.conf. Xác nhận ánh xạ đó qua trình quản lý dịch vụ thay vì tin vào danh sách thư mục, vì một drop-in có thể thay đổi tệp nào được nạp. Ánh xạ sai nghĩa là bạn đang chỉnh hồ sơ không chạy.
Sau đó quyết định ai cài đặt tuyến. Khi máy chủ đẩy các bộ không tương thích, hoặc từ chối việc đẩy và tự liệt kê các tiền tố, hoặc để một hồ sơ giữ mặc định và điều hướng hồ sơ kia bằng quy tắc chính sách. Hai tiến trình cùng cài một tuyến mặc định kết thúc với một người thắng im lặng và không có bản ghi bằng văn bản về quyết định.
systemctl cat [email protected] grep -E 'route-nopull|pull-filter|redirect-gateway' /etc/openvpn/client/lab.conf
Cái đầu tiên hiển thị đơn vị cùng mọi ghi đè thay đổi đối số của nó. Cái thứ hai cho biết hồ sơ có chấp nhận tuyến được đẩy hay không, và đó là công tắc quyết định mọi thứ phía sau.
Dấu giữ phản hồi trên giao diện mà chúng đến
Khi mỗi đường hầm phục vụ các nguồn khác nhau, một phản hồi có thể đi ra theo liên kết sai và kết nối chết sau gói đầu tiên. Mẫu bền vững là đánh dấu các gói đến theo giao diện vào, khôi phục dấu đó trên phản hồi, và cho mỗi dấu một bảng có cổng mặc định riêng.
Lọc đường ngược lỏng thường phải được nới cho các giao diện bị ảnh hưởng, vì phản hồi đến một cách hợp lệ qua liên kết mà bảng chính sẽ không bao giờ chọn. Giữ các dấu hẹp để chúng không bao giờ bắt lưu lượng mã hóa của chính các đường hầm, điều đó sẽ gửi đường hầm xuyên qua chính nó.
ip rule show ip route show table 101 sysctl net.ipv4.conf.all.rp_filter
Đọc các quy tắc hiện có trước khi thêm một cái khác. Ưu tiên trùng lặp và bảng bị lãng quên là lý do thông thường khiến một chính sách dấu dường như không có tác dụng gì.
Chứng minh cách ly bằng cách dừng một liên kết
Khi cả hai đường hầm hoạt động, ghi lại địa chỉ của từng giao diện, tuyến đến một máy chủ phía sau mỗi đường hầm, và đường đi của một đích không liên quan. Hỏi nhân về tra cứu thay vì đọc một bảng, vì một bảng không bao giờ cho thấy quyết định cuối cùng.
Sau đó dừng một phiên bản và xem giao diện cùng các tuyến của nó biến mất trong khi cái kia tiếp tục. Một đứt gãy ở bên sống sót nghĩa là hai bên vẫn chia sẻ tên thiết bị, tuyến hoặc quy tắc tường lửa mà không ai tách ra.
Đưa hồ sơ đã dừng trở lại và lặp lại các kiểm tra tương tự. Khi một đường hầm chỉ sống sót ở lần khởi động đầu tiên sau khi khởi động lại, bạn đang nhìn thấy khiếm khuyết vòng đời chứ không phải thiết kế định tuyến.