VPN이 성공적으로 연결되었을 때 스크립트가 실행되도록 스크립트를 OpenVPN에 연결하려면 어떻게해야합니까?
답변
network-manager-openvpn
이러한 기능을 제공하지 않으면 openvpn
직접 사용해야 합니다.
패스 --script-security 2 --up /path/to/your/script
연결 때에. 에 위치한 구성 파일을 사용하는 경우 /etc/openvpn/
다음 줄을 구성 파일에 추가하십시오.
script-security 2
# run /etc/openvpn/up.sh when the connection is set up
up /etc/openvpn/up.sh
로부터 OpenVPN을 맨 :
-스크립트 보안 수준 [방법] 이 지침은 OpenVPN의 사용에 대한 정책 수준의 제어를 제공합니다 외부 프로그램 및 스크립트 낮은 수준의 값은 더 제한적이고 값이 클수록 더 관대합니다. 에 대한 설정 수평: 0-외부 프로그램을 호출하지 않습니다. 1-(기본값) ifconfig와 같은 내장 실행 파일 만 호출 ip, route 또는 netsh. 2-내장 실행 파일 및 사용자 정의 호출 허용 스크립트. 3-환경을 통해 암호를 스크립트에 전달할 수 있습니다 변수 (잠재적으로 안전하지 않은). --up cmd 성공적인 TUN / TAP 장치를 연 후 실행되는 셸 명령 (pre -사용자 UID 변경). up 스크립트는 다음을 지정하는 데 유용합니다 개인용 IP 트래픽을 라우팅하는 라우팅 명령 VPN 연결의 다른 쪽 끝에있는 서브넷 터널. 스크립트 실행 순서 --up TCP / UDP 소켓 바인드 및 TUN / TAP을 연 후 실행됩니다. --down TCP / UDP 및 TUN / TAP 종료 후 실행됩니다.
스크립트 실행에 대한 더 많은 이벤트가 있으며, 매뉴얼 페이지 에서 찾을 수 있습니다 .
작성 /etc/openvpn/up.sh
하고 권한 (예를 들어, 755 또는 700)을 실행 제공합니다. IPv6 주소 및 경로 추가를위한 컨텐츠 예 (교육 목적으로 표시, 직접 복사하지 마십시오) :
#!/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
이 up
스크립트는 루트로 실행됩니다. User
및 Group
설정을 지정하지 않으면 OpenVPN은 down
루트 와 같은 스크립트도 실행 합니다.
답변
질문에 : “VPN이 성공적으로 연결되었을 때 스크립트가 실행되도록 스크립트를 OpenVPN에 연결하려면 어떻게해야합니까?” Lekensteyn 이 훌륭한 해답을 제공 했음을 지적하고 싶습니다 . 그러나 그의 답변이 작성되었을 때, 우분투 시스템에서 openvpn을 시작하기 위해 openvpn 명령 줄 인수를 제공 해야하는 방법에 대한 명확성이 부족했습니다. 특히 재부팅 후 동일하게 작동합니다.
우분투에서 OpenVPN 명령 줄 인수 :
당연히, 유효한 법적 옵션을 사용하여 명령 행에서 openvpn을 시작할 수 있습니다. 그러나 우분투 컴퓨터에서 재부팅 후 동일한 명령 줄 인수로 openvpn을 시작하려면 파일 편집을 고려해야합니다 /etc/default/openvpn
. 다음 줄을 검사하십시오.
# Optional arguments to openvpn's command line
OPTARGS=""
로부터 지역 사회 OpenVPN을 man 페이지 에--script-security
-스크립트 보안 수준 이 지침은 OpenVPN의 외부 사용에 대한 정책 수준의 제어를 제공합니다 프로그램 및 스크립트. 낮은 수준의 값이 더 제한적이며 높을수록 값이 더 관대합니다. 레벨 설정 : 0-외부 프로그램을 호출하지 않습니다. 1-(기본값) ifconfig, ip, route, 또는 netsh. 2-내장 실행 파일 및 사용자 정의 스크립트 호출을 허용합니다. 3-환경 변수를 통해 비밀번호를 스크립트에 전달하도록 허용 (잠재적으로 안전하지 않은). v2.3 이전의 OpenVPN 릴리스도 방법 플래그를 지원하는 메소드 플래그를 지원했습니다. OpenVPN은 외부 명령 및 스크립트를 호출해야합니다. 이것은 execve 일 수 있습니다. 또는 시스템. OpenVPN v2.3부터이 플래그는 더 이상 허용되지 않습니다. 대부분의 * nix 환경 execve () 접근 방식은 문제없이 사용되었습니다. --up과 같은 일부 지시문을 사용하면 옵션을 외부 스크립트로 전달할 수 있습니다. 이 경우 스크립트 이름에 공백이 없어야합니다. 구성 파서는 스크립트의 위치를 결정할 수 없기 때문에 질식합니다. 이름이 끝나고 스크립트 옵션이 시작됩니다.
의 약식 섹션과 결합 --up
--up cmd TUN / TAP 장치가 성공적으로 열린 후 cmd 명령을 실행하십시오 (사전 --user UID 변경). cmd는 스크립트 (또는 실행 프로그램) 경로로 구성되며 선택적으로 인수로. 경로 및 인수는 작은 따옴표 또는 큰 따옴표 및 / 또는 백 슬래시를 사용하여 이스케이프되며 하나 이상의 공백으로 구분해야합니다.
예:
openpvn server.conf가있는 컴퓨터의 /etc/default/openvpn
파일 에는 다음 줄이 있습니다.
OPTARGS="
--script-security 2
--up /etc/openvpn/nat.sh
"
또한 nat.sh는 개인 네트워크 트래픽을 openvpn 클라이언트에서 공용 인터넷으로 라우팅하기위한 네트워크 주소 변환을 설정합니다. 공용 WIFI 액세스 포인트를 신뢰하지 않는 경우에 좋습니다.
재부팅 후 예상대로 다시 시작하는 것 외에도 파일이 올바르게 구성된 경우 다음 /etc/openvpn/[client or server].conf
과 같이 /etc/default/openvpn
openvpn을 시작하거나 중지 할 수 있습니다.
sudo service openvpn start
sudo service openvpn stop
사용할 수있는 다른 유용한 옵션은 service openvpn
다음과 같습니다 cond-restart,force-reload,reload, restart,soft-restart, start, status, stop
.
답변
그것이 꽤 오래된 스레드이므로 여전히 관심이 있는지 확실하지 않습니다. 여전히 NetworkManager를 사용하여 VPN에 연결하려는 경우 다음과 같은 간단한 udev 규칙을 추가 할 수 있습니다.
KERNEL=="vpn0", RUN+="/PATH_TO_THE_SCRIPT/SCRIPT_NAME"
VPN을 만든 후에 스크립트를 실행해야합니다.
답변
나는이 문제를 해결하기 위해 내 연구에서 답을 찾았고 가장 좋은 해결책은 다음과 같습니다 (openvpn 서버 사용).
실행할 스크립트를 작성하십시오.
# 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>
다음 줄을 openvpn 구성에 추가하십시오 (보통 /etc/openvpn/server.conf
). 위의 대답에서 서버가 시작될 때 사용되는 위아래로 사용되었습니다 (레스타트). 지시문 client-connect (및 client-disconnect)는 클라이언트가 연결 (연결 해제) 될 때 사용됩니다.
# nano /etc/openvpn/server.conf
<file:add>
script-security 2
client-connect /etc/openvpn/up.sh
</file>