Làm cách nào tôi có thể liên kết tập lệnh với OpenVPN để nó chạy khi VPN được kết nối thành công?
network-manger-openvpn
.
Làm cách nào tôi có thể liên kết tập lệnh với OpenVPN để nó chạy khi VPN được kết nối thành công?
network-manger-openvpn
.
Câu trả lời:
network-manager-openvpn
không cung cấp chức năng như vậy, bạn phải sử dụng openvpn
trực tiếp.
Truyền --script-security 2 --up /path/to/your/script
cho nó khi kết nối. Nếu bạn đang sử dụng tệp cấu hình tại /etc/openvpn/
, hãy nối các dòng tiếp theo vào tệp cấu hình của bạn:
script-security 2
# run /etc/openvpn/up.sh when the connection is set up
up /etc/openvpn/up.sh
Từ trang web OpenVPN :
--script-mức bảo mật [phương thức] Lệnh này cung cấp kiểm soát cấp chính sách đối với việc sử dụng OpenVPN của các chương trình và kịch bản bên ngoài. Giá trị cấp thấp hơn hạn chế, giá trị cao hơn được cho phép hơn. Cài đặt cho cấp độ: 0 - Nghiêm cấm gọi các chương trình bên ngoài. 1 - (Mặc định) Chỉ gọi các tệp thực thi tích hợp như ifconfig, ip, tuyến đường, hoặc Netsh. 2 - Cho phép gọi các tệp thực thi tích hợp và do người dùng định nghĩa kịch bản. 3 - Cho phép mật khẩu được chuyển đến các tập lệnh thông qua môi trường các biến (có khả năng không an toàn). --up cmd Lệnh Shell chạy sau khi mở thiết bị TUN / TAP thành công (trước - người dùng thay đổi UID). Kịch bản lên rất hữu ích để chỉ định các lệnh tuyến đường định tuyến lưu lượng IP dành cho riêng các mạng con tồn tại ở đầu kia của kết nối VPN vào đường hầm. Tập lệnh thực thi --up Được thực thi sau khi liên kết ổ cắm TCP / UDP và TUN / TAP mở. --down Được thực thi sau khi đóng TCP / UDP và TUN / TAP.
Có nhiều sự kiện để thực thi tập lệnh, chúng có thể được tìm thấy trên trang thủ công .
Tạo /etc/openvpn/up.sh
và cung cấp cho nó quyền thực thi (giả sử, 755 hoặc 700). Nội dung ví dụ để thêm địa chỉ IPv6 và tuyến đường (hiển thị cho mục đích giáo dục, không sao chép trực tiếp):
#!/bin/sh
# add an IPv6 address to device $dev (environment variable)
ip -6 addr add 2001:db8::1:2/112 dev $dev
# and the IPv6 route for this net using gateway 2001:db8::1
ip -6 route add 2001:db8::1:0/112 via 2001:db8::1 dev $dev
Lưu ý rằng up
tập lệnh này được chạy dưới quyền root. Nếu bạn chưa chỉ định a User
và Group
cài đặt, OpenVPN cũng sẽ chạy các tập lệnh như down
root.
openvpn
trực tiếp. Khi thiết lập máy chủ, tôi nhận thấy OpenVPN sẽ cố gắng kết nối lại khi máy chủ gặp sự cố. Không chắc chắn nếu OpenVPN tiếp tục thử khi giao diện mạng của bạn bị hỏng.
Với câu hỏi: "Làm cách nào tôi có thể liên kết tập lệnh với OpenVPN để nó chạy khi VPN được kết nối thành công?" Tôi muốn chỉ ra rằng Lekensteyn cung cấp một câu trả lời tuyệt vời . Nhưng, tại thời điểm câu trả lời của anh ta được soạn thảo, nó thiếu một chút rõ ràng về cách các đối số dòng lệnh openvpn nên được cung cấp để bắt đầu openvpn trên máy ubfox, đặc biệt là nó hoạt động tương tự sau khi khởi động lại.
Đương nhiên, người ta có thể bắt đầu openvpn từ một dòng lệnh với bất kỳ tùy chọn pháp lý có sẵn nào. Nhưng, trên máy Ubuntu, nếu ai đó muốn bắt đầu openvpn với cùng các đối số dòng lệnh sau khi khởi động lại, họ nên xem xét chỉnh sửa tệp /etc/default/openvpn
. Kiểm tra các dòng sau:
# Optional arguments to openvpn's command line
OPTARGS=""
Từ trang người đàn ông openvpn trên cộng đồng--script-security
- mức độ bảo mật-mô tả Lệnh này cung cấp kiểm soát cấp chính sách đối với việc sử dụng bên ngoài của OpenVPN chương trình và kịch bản. Giá trị cấp thấp hơn hạn chế hơn, cao hơn các giá trị được cho phép nhiều hơn. Cài đặt cho cấp độ: 0 - Nghiêm cấm gọi các chương trình bên ngoài. 1 - (Mặc định) Chỉ gọi các tệp thực thi tích hợp như ifconfig, ip, route, hoặc Netsh. 2 - Cho phép gọi các tập tin thực thi tích hợp và tập lệnh do người dùng định nghĩa. 3 - Cho phép mật khẩu được chuyển đến các tập lệnh thông qua các biến môi trường (có khả năng không an toàn). OpenVPN phát hành trước v2.3 cũng hỗ trợ cờ phương thức cho biết cách OpenVPN nên gọi các lệnh và tập lệnh bên ngoài. Điều này có thể được thực hiện hoặc hệ thống. Kể từ OpenVPN v2.3, cờ này không còn được chấp nhận. Trong hầu hết * nix môi trường phương pháp execve () đã được sử dụng mà không có bất kỳ vấn đề nào. Một số chỉ thị như --up cho phép các tùy chọn được chuyển sang tập lệnh bên ngoài. Trong những trường hợp này, đảm bảo tên tập lệnh không chứa bất kỳ khoảng trắng hoặc trình phân tích cú pháp cấu hình sẽ bị nghẹt vì nó không thể xác định nơi tập lệnh tên kết thúc và tùy chọn kịch bản bắt đầu.
Kết hợp với một phần viết tắt trên --up
--up cmd Chạy lệnh cmd sau khi mở thiết bị TUN / TAP thành công (thay đổi UID người dùng trước). cmd bao gồm một đường dẫn đến tập lệnh (hoặc chương trình thực thi), theo tùy chọn bằng lập luận. Đường dẫn và đối số có thể là trích dẫn đơn hoặc kép và / hoặc thoát bằng cách sử dụng dấu gạch chéo ngược và nên được phân tách bằng một hoặc nhiều khoảng trắng.
Trên máy của tôi có máy chủ openpvn.conf, tôi có các dòng sau trong /etc/default/openvpn
tệp của mình :
OPTARGS="
--script-security 2
--up /etc/openvpn/nat.sh
"
Ngẫu nhiên, nat.sh thiết lập bản dịch địa chỉ mạng để định tuyến lưu lượng truy cập mạng riêng từ máy khách openvpn sang internet công cộng; sẽ tốt khi người ta không tin vào điểm truy cập WIFI công cộng.
Ngoài việc cho phép khởi động lại như mong đợi sau khi khởi động lại, khi nào /etc/openvpn/[client or server].conf
và /etc/default/openvpn
các tệp được cấu hình đúng, openvpn có thể được khởi động hoặc dừng bằng:
sudo service openvpn start
sudo service openvpn stop
Các tùy chọn hữu ích khác có sẵn để service openvpn
bao gồm cond-restart,force-reload,reload, restart,soft-restart, start, status, stop
.
Vì đó là một chủ đề khá cũ, tôi không chắc chắn nếu vẫn còn quan tâm. Nếu bạn vẫn muốn sử dụng Trình quản lý mạng để kết nối với VPN, bạn có thể thêm quy tắc udev đơn giản như sau:
KERNEL=="vpn0", RUN+="/PATH_TO_THE_SCRIPT/SCRIPT_NAME"
Điều này sẽ chạy bất kỳ tập lệnh nào sau khi VPN được tạo.
Tôi tình cờ tìm thấy câu trả lời trong nghiên cứu của mình để giải quyết vấn đề này và tôi phát hiện ra rằng giải pháp tốt nhất là (sử dụng máy chủ openvpn) như sau:
Tạo một kịch bản sẽ được thực thi:
# nano /etc/openvpn/up.sh
<file:contents>
#!/bin/sh
# export >> /var/log/openvpn/openvpn-up.log
D=`date "+%Y-%m-%d %H:%M"`
echo "[$D] ($local_port_1:$proto_1) $X509_0_CN: $trusted_ip => $ifconfig_pool_remote_ip" >> /var/log/openvpn/openvpn-up.log
</file>
Thêm các dòng sau vào cấu hình openvpn (thường /etc/openvpn/server.conf
). Trong câu trả lời ở trên, nó được sử dụng lên xuống, được sử dụng khi máy chủ khởi động (khởi động lại). Lệnh kết nối máy khách (và ngắt kết nối máy khách) được sử dụng khi máy khách kết nối (ngắt kết nối).
# nano /etc/openvpn/server.conf
<file:add>
script-security 2
client-connect /etc/openvpn/up.sh
</file>