ppp0 hay ppp1? Cách đặt tên một phiên VPN PPP cho script
pppd cấp cho mỗi phiên một tên giao diện và một dấu hồ sơ. Hãy đọc cả hai từ hook, không phải từ ppp0. Chỉ dành một tên cố định khi việc từ chối là có chủ đích.
Script hook kích hoạt, đọc ppp0 và áp dụng tuyến cho bất kỳ giao diện nào đang mang tên đó tại thời điểm ấy. Đôi khi đó là đường hầm bạn định dùng; đôi khi đó là một phiên kết nối từ một phút trước. Lần kết nối lại tiếp theo sẽ dịch chuyển con số, và chính script đó lặng lẽ cấu hình nhầm liên kết. Cách khắc phục là lấy giao diện từ lần gọi vừa chạy và mang theo hồ sơ dự định bên cạnh nó.
Theo dõi một phiên từ tùy chọn đến hook
Hãy bắt đầu ở nơi phiên được tạo. xl2tpd khởi chạy pppd với tệp tùy chọn do pppoptfile của đường hầm đó đặt tên, nên plugin, số đơn vị và mọi dấu hồ sơ được quyết định ở đó chứ không phải trong một tệp toàn cục. Trình quản lý kết nối có thể tự sinh tùy chọn, nghĩa là việc sửa /etc/ppp/options không phải bằng chứng rằng đường hầm bạn quan tâm đã thay đổi. Khi liên kết lên, pppd chạy các script thông báo từ bộ gửi của bản phân phối. Các script đó nhận tên giao diện làm đối số thứ nhất và dấu hồ sơ làm đối số thứ sáu.
Môi trường mang cùng những dữ kiện dưới các tên như IFNAME và PPP_IPPARAM, nhưng tính khả dụng của chúng phụ thuộc vào bộ gửi đã cài đặt. Hãy đọc bộ gửi trước khi tin vào một biến: một số bản phân phối giữ thứ tự đối số upstream, số khác lọc môi trường trước khi gọi script của bạn. Script chỉ dùng $1 và đối số thứ sáu hoạt động trong cả hai cách bố trí.
Đọc giao diện từ lần gọi
Hook truyền thống nhận giao diện trước tiên. Giá trị vị trí đó là định danh giao diện mô tả phiên đã kích hoạt script. Lưu nó vào một biến ở đầu, rồi dùng biến đó cho tuyến, quy tắc tường lửa và tháo gỡ.
ipparam office-vpn
Gắn dấu hồ sơ ở nơi các tùy chọn được định nghĩa, không phải trong script. Với dòng đó trong tệp tùy chọn của đường hầm, mọi phiên tạo từ tệp ấy đều mang office-vpn làm đối số thứ sáu. Script có thể rẽ nhánh theo dấu hồ sơ trong khi vẫn tác động lên giao diện thật. Hãy tách hai thứ đó trong mã, vì dấu hồ sơ ổn định còn giao diện được cấp theo từng phiên.
Chỉ yêu cầu tên khi việc từ chối là đúng
Một tên cố định trông đơn giản hơn đọc đối số, nhưng nó thay đổi hành vi khi thất bại. Tùy chọn unit yêu cầu một số cho kết nối đi ra, và pppd quay về cấp phát động khi đơn vị đó đã bận. Không có gì trong kết quả đó dành ppp0 cho hồ sơ của bạn.
ifname ppp-office
Tùy chọn ifname hành xử khác: nếu tên được yêu cầu đã được dùng hoặc không thể gán, pppd thoát thay vì chọn tên khác. Đó là lựa chọn chính sách, không phải đổi tên cho đẹp. Hãy dùng nó khi phiên bản thứ hai đồng thời của cùng hồ sơ cần bị từ chối, và xác nhận rằng pppd đã cài đặt cùng trình quản lý kết nối của bạn chuyển tiếp tùy chọn này.
Dù thế nào, tên mà script nhìn thấy chính là thứ cần xử lý. Một tên đã cấu hình không loại bỏ nhu cầu đọc lần gọi, vì một phiên khởi động lại vẫn có thể trình ra tên khác với lần trước.
Làm cho việc tháo gỡ khớp với phiên bạn đã cấu hình
Tuyến và quy tắc tường lửa sống lâu hơn script đã tạo ra chúng, nên việc tháo gỡ phải xóa đúng những đối tượng mà phiên sở hữu. Gắn thẻ cho quy tắc bằng dấu hồ sơ cũng như bằng giao diện, và xóa theo thẻ đó. Nếu hai đường hầm có thể cùng lên, xóa mọi thứ có nhắc đến ppp là cách một lần ngắt kết nối làm hỏng kết nối kia.
Hãy thử trường hợp phơi bày lỗi: dựng phiên PPP thứ hai trong khi phiên thứ nhất vẫn kết nối, rồi kết nối lại phiên thứ nhất và xem hook báo giao diện nào. Một lần chạy thành công với một phiên không chứng minh được gì về việc cấp tên. Lặp lại khi VPN đã dừng để xác nhận việc tháo gỡ không để lại tuyến cũ.
Hãy giữ dấu hồ sơ, giao diện và đường dẫn hook trong ghi chú triển khai. Khi con số thay đổi sau khi khởi động lại, ba giá trị đó giải thích vì sao script hành xử khác đi mà không cần chỉnh sửa cấu hình nào.