![如何从服务器推送脚本并在客户端运行?](https://linux22.com/image/718327/%E5%A6%82%E4%BD%95%E4%BB%8E%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%8E%A8%E9%80%81%E8%84%9A%E6%9C%AC%E5%B9%B6%E5%9C%A8%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%BF%90%E8%A1%8C%EF%BC%9F.png)
我有一个无法再连接的设备(ssh、salt 等),无法轻松物理访问 - 但它仍会打开与我服务器的 OpenVPN 会话。为了尝试恢复它,我想:
- 在服务器上强制重新连接此客户端
- 当客户端重新连接时 - 推送客户端将执行的脚本(首先我会通过转储日志和配置来查看发生了什么,然后可能恢复正确的设置)
有解决方案客户端连接后运行的脚本但所有人都认为这是客户的选择(=配置在客户端)。我正在寻找相反的方法。
我可以看到这种方法存在安全问题(VPN 提供商可以接管客户端机器),但也许还有一种从文档中不明显的方法?
答案1
要强制客户端重新连接,您可以:
- 使用以下方法删除特定的源 IP 地址和源端口组合iptables在输出链,或目标地址和目标端口输入持续时间比 ping 重启间隔更长,
- 在OpenVPN的管理界面中杀死指定的客户端:看这里
- 重新启动 OpenVPN 服务@服务器,以上所有内容都将强制新的对称密钥交换、新的套接字和新的目标端口号。
为什么无法执行脚本:
- 你运气不好。脚本已配置,必须位于客户端,据我所知,即使 OpenVPN 的 ccd 也不允许这样做,客户端也需要适当的“pull”配置指令 - 允许服务器提取最基本的隧道选项,如:密码、缓冲区大小、压缩、路由等,但不能提取脚本配置指令。
在默认配置下,OpenVPN 不需要任何权限,- 这将是一个安全漏洞。