14.04 - DUC 在启动时无法使用 VPN 正确更新 IP

14.04 - DUC 在启动时无法使用 VPN 正确更新 IP

我正在运行一个 Ubuntu 14.04.3 LTS 服务器,它在启动时启动了一些功能,其中两个是用于我的 VPN 服务的 OpenVPN 和一个动态 DNS 更新客户端,用于将我的 noip 主机更新为我的当前 IP。

我尝试过官方的 noip DUC 和 ddclient(参见这里为什么我要更改它们),并且它们都错误地更新为我的 VPN 连接之前的 IP(ISP IP)。

当我通过 SSH 登录时,OpenVPN 连接正在运行,因此这意味着 DUC 在 OpenVPN 运行之前报告了 IP 或类似情况。在这里提问之前,我尝试使用 openvpn 要求修改 ddclient 的 init.d 脚本:

# Required-Start:    $local_fs $remote_fs $network $syslog $openvpn

对于 rcX.d 文件,openvpn 有类似 S16openvpn 的内容,而 ddclient 有 S99ddclient 的内容,所以通常 ddclient 在 openvpn 之后启动,对吗?我对这些东西不太满意。

这并没有改变任何东西。我希望有人能帮助我,这意味着每次我重新启动服务器时,我都必须重新启动 DUC 客户端服务才能使我的 noip 主机正常工作。

如果什么都找不到,B 计划是要求服务 ddclient重新开始一切启动后,这样我就不必再做这件事,也不会忘记。但当然,首先让 ddclient 更新到正确的 IP 会更好。

附言:如果您问我为什么要将 IP 设为 VPN IP,那是因为某些服务(如 Teamspeak 3 服务器)必须是可访问的,所以我的 ddns.net 必须指向 VPN IP,因为当指向我的 ISP 公共 IP 时,它们就不再可访问了(我猜这与 VPN 的工作方式有关)。

答案1

因此,我了解到 OpenVPN 提供了一种在隧道创建后启动脚本的方法。为此,在我的文件 /etc/openvpn/toto.conf 中添加了以下行

# run /etc/openvpn/titi.sh when the connection is set up
up /etc/openvpn/titi.sh

注意conf文件中的参数script-security必须正确设置(至少script-security为2,参见openvpn的man)。

这是我的脚本 titi.sh 的内容:

#!/bin/bash
(sleep 60 && ddclient -daemon=0 -debug -verbose -noquiet -force >> launch_dd.log) &

第一个脚本没有 sleep 60,但奇怪的是,当调用脚本并启动 ddclient 时,我的 IP 仍然是我的 ISP IP,而不是 VPN IP,即使它是使用 OpenVPN up 参数启动的。这也许就是它一开始不起作用的原因。

因此我简单地告诉脚本在启动前等待 60 秒。现在,当我重新启动服务器时,我的 IP 就设置为 VPN IP。

相关内容