Tomato v1.28.0000 -2017.2-kille72- K26ARM USB AIO-64K를 실행하는 Netgear R7000 라우터
목표: 컬을 사용하여 JSON에서 포트 번호 수신
이 스크립트를 셸에서 실행하면 작동하지만 OpenVPN 구성에서 호출하면 작동하지 않습니다.
#!/opt/bin/bash
#
# Enable port forwarding when using Private Internet Access
#
# Usage:
# ./port_forwarding.sh
set -x
exec 5>/etc/openvpn/mylog
BASH_XTRACEFD="5"
sleep 10
client_id_file="/etc/openvpn/pia_client_id"
client_id=$(/bin/cat "$client_id_file")
json=$(/opt/bin/curl "http://209.222.18.222:2000/?client_id=$client_id" 2>/dev/null)
/bin/echo server returned message: "$json"
쉘 출력:
+ sleep 10
+ client_id_file=/etc/openvpn/pia_client_id
++ /bin/cat /etc/openvpn/pia_client_id
+ client_id=080db0a6e936918d405683447a78bf426273e9a1ea2ecce744722ac3241d4232
++ /opt/bin/curl 'http://209.222.18.222:2000/?client_id=080db0a6e936918d405683447a78bf426273e9a1ea2ecce744722ac3241d4232'
+ json='{"port":44257}'
+ /bin/echo server returned message: '{"port":44257}'
OpenVPN 출력:
+ sleep 10
+ client_id_file=/etc/openvpn/pia_client_id
++ /bin/cat /etc/openvpn/pia_client_id
+ client_id=080db0a6e936918d405683447a78bf426273e9a1ea2ecce744722ac3241d4232
++ /opt/bin/curl 'http://209.222.18.222:2000/?client_id=080db0a6e936918d405683447a78bf426273e9a1ea2ecce744722ac3241d4232'
+ json=
+ /bin/echo server returned message: ''
이전 질문에 대한 자세한 내용은 다음과 같습니다.VPN 호출 스크립트 열기: 인식할 수 없는 옵션: [AF_INET]
답변1
비어있는 이유는 실패 json
때문이다 curl
.
실패 이유는 curl
보안 조치 때문입니다.디자인에 의해), OpenVPN은 어떤 패킷도 터널을 통과하는 것을 허용하지 않습니다.어느바이너리로 시작된 스크립트는 openvpn
계속 실행 중입니다.
스크립트를 호출하는 다른 방법을 찾아야 합니다.