起動時にいくつかのことを起動するUbuntu 14.04.3 LTSサーバーを実行しています。そのうちの2つは、VPNサービス用のOpenVPNとnoipホストを現在のIPに更新するための動的DNS更新クライアントです。
私は公式のnoip DUCとddclient( here 変更の理由を参照)を試してみましたが、どちらもVPN接続前のIP(ISP IP)に誤って更新されています。
SSH経由でログインすると、OpenVPN接続は機能します。つまり、OpenVPNが機能する前に、DUCがIPを報告することになります。ここで尋ねる前に、私はopenvpn要件でddclientのinit.dスクリプトを変更しようとしました:
# Required-Start: $local_fs $remote_fs $network $syslog $openvpn
RcX.dファイルの場合、openvpnにはS16openvpnのようなものがあり、ddclientにはS99ddclientがあるため、通常、openvpnの後にddclientが起動します。私はそれらのことにはあまり慣れていません。
それは何も変わりませんでした。誰かが私を助けてくれることを願っています。つまり、サーバーを再起動するたびに、noipホストが正しく機能するようにDUCクライアントサービスを再起動する必要があります。
何も見つからない場合のプランBは、すべてが起動した後でサービスddclientにrestartを要求することです。忘れません。しかしもちろん、最初にddclientを正しいIPに更新する方が良いでしょう。
追伸:なぜIPをVPN IPにしたいのかと尋ねると、Teamspeak 3サーバーのような一部のサービスにアクセスできる必要があるため、ddns.netがVPN IPをポイントする必要があるためです。もう到達できません(VPNの動作にリンクしていると思います)。
ですから、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、man of openvpnを参照)。
これが私のスクリプトtiti.shの内容です:
#!/bin/bash
(sleep 60 && ddclient -daemon=0 -debug -verbose -noquiet -force >> launch_dd.log) &
最初のスクリプトにはスリープ60がありませんでしたが、奇妙なことに、スクリプトが呼び出されてddclientが起動したとき、OpenVPNのupパラメーターで起動した場合でも、私のIPはVPN IPではなくISP IPのままでした。それがそもそもそれが機能しなかった理由かもしれません。
そのため、起動するまで60秒待つようにスクリプトに指示しました。これで、サーバーを再起動すると、IPがVPN IPに設定されました。