curl 在开放 VPN 中未接收 JSON

curl 在开放 VPN 中未接收 JSON

Netgear R7000路由器运行Tomato v1.28.0000 -2017.2-kille72- K26ARM USB AIO-64K

目标:使用curl从JSON接收端口号

当我在 shell 中运行此脚本时,它可以工作,但当我在 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仍在执行。

您将需要找到另一种方法来调用脚本。

相关内容