web-dev-qa-db-ja.com

QNAP QTS 4.2でのOpenVPNの編集された構成は、起動後にリセットされます

QNAP TS-253 Pro(QTS 4.2.0)があり、OpenVPNサーバーが構成されて正常に実行されています。クライアント証明書を使用してVPN接続を保護したいので、Webインターフェイスの組み込み構成はまったく役に立ちません。

そこで、SSH/SCPを介して構成ファイルと証明書ファイルを/ etc/openvpnにインポートし、OpenVPNサーバーを再起動すると、QNAPNASを再起動するまで正常に機能しました。 。設定はQNAPの工場出荷時のデフォルトに戻りました。

/ etc/openvpnディレクトリは/ mnt/ext/opt/vpnopenvpn /へのシンボリックリンクにすぎないようですetc/openvpn /、これは私のQNAPのWebインターフェイスからの元の構成を保持します。次に試したのは、そこで構成を編集することで、次回の起動時に構成が置き換えられないことを望んでいましたが、これは解決策ではありませんでした。再起動して、/ mnt/ext/opt/vpnopenvpn/etc/openvpn /に工場出荷時のデフォルトのOpenVPN構成ファイルが見つかりました。

QNAPの公式フォーラムの多くのスレッド、非公式のブログ投稿、およびQNAP自体のいくつかのinit.dスクリプトを調べて、工場出荷時のデフォルト設定の自動ロールアウトをオフにするか、QNAPに作業をロールアウトさせる方法を見つけました。 / etc/openvpnへの構成。

これが私の失敗した試みのリストです:

  • 設定を/ etc/openvpnにコピーしました-設定は起動時に書き直されました
  • 設定を/ mnt/ext/opt/vpnopenvpn/etc/openvpn /にコピーしました-設定は起動時に書き直されました
  • 次の手順に従います: http://wiki.nas-portal.org/index.php/Install_OpenVPN_on_QNAP -QTSの実際のバージョン(4.2.0を実行)でqpkg/ipkgが見つかりませんでした。チュートリアルは古いリリース用に書かれています...
  • ここで説明するように、自己作成のautorun.sh-scriptを実行しようとしました: http://forum.qnap.com/viewtopic.php?t=83804#p372711 -/ shareのフォルダーは起動するたびに再作成
  • 公式QNAPフォーラムのユーザーから推奨されているこのスレッドを完全に掘り下げました: http://forum.qnap.com/viewtopic.php?f=90&p=61890&t=10400&sid=6aa706cb2ff41a75c6f048883328512a -そうではないようです私の特定の問題/構成に関する
  • / etc/init.d/installtgz.shのopenvpn固有のセクションをコメントアウトしました-ファイル自体が起動時に書き直され、私のコメントはアクティブでした再びスクリプトの一部

QTSを停止して構成ファイルを書き換える方法を知っている人はいますか? QNAPが再起動されるたびにOpenVPN構成を手動でコピーしたくありません...

5
HannesS

固定IP番号用のサーバーサイドOpenVPN構成が必要だったため、同様のソリューションを探していました。私の解決策は、私の場合は行210で、daemon_mgrを開始する直前にvpn_openvpn.shファイルに行を追加することでした。

<snip>
  usr/bin/openssl verify -CAfile /etc/openvpn/keys/ca.crt /etc/openvpn/keys/myserver.crt 2>/dev/null | /bin/grep "OK" >/dev/null
  echo client-config-dir clientconfig >>/etc/openvpn/server.conf
            if [ $? == 0 ] && [ ! -f ${PIDFILE} ]; then
</snip>

エコーで始まる行を追加しました。この時点で、/ etc/openvpn /server.confの構成を変更することもできるはずです。

ここに追加すると、OpenVPNサーバーの再起動後もこの行は存続しますが、すでに苦痛を感じているように、起動時に多くのファイルが再作成されます。ここでautorun.shが役立ちます。使用方法は次のとおりです ここ 正確な構文は、取得したQNAP NASのタイプに基づいています。

ここにsed行を追加して、起動時に「修正」を再作成できます。

sed "210i echo client-config-dir clientconfig >>/etc/openvpn/server.conf" /etc/init.d/vpn_openvpn.sh >/etc/init.d/vpn_openvpn.sh.tmp
rm /etc/init.d/vpn_openvpn.sh
mv /etc/init.d/vpn_openvpn.sh.tmp
chmod +x /etc/init.d/vpn_openvpn.sh
/etc/init.d/vpn_openvpn.sh restart

あなたの場合、autorun.shは次のようになります。

sed "210i /bin/sed -i -e 's/client-cert-not-required/#client-cert-not-required/g' /etc/openvpn/server.conf" /etc/init.d/vpn_openvpn.sh >/etc/init.d/vpn_openvpn.sh.tmp
rm /etc/init.d/vpn_openvpn.sh
mv /etc/init.d/vpn_openvpn.sh.tmp /etc/init.d/vpn_openvpn.sh
chmod +x /etc/init.d/vpn_openvpn.sh
/etc/init.d/vpn_openvpn.sh restart

それが機能するかどうか教えてください

編集:いくつかの再考の後、あなたはそれをさらに短くすることができます

sed -i "210i /bin/sed -i -e 's/client-cert-not-required/#client-cert-not-required/g' /etc/openvpn/server.conf" /etc/init.d/vpn_openvpn.sh 
/etc/init.d/vpn_openvpn.sh restart
3
TechImpossible

QNAP構成でプッシュするデフォルトゲートウェイを削除するには:

sed -i -e '/if \[ $? == 0 \] && \[ ! -f ${PIDFILE} \]; then/a\/bin\/sed -i -e \"s/Push \\"redirect-gateway def1\\"/#Push \\"redirect-gateway def1\\"/g\" /etc/openvpn/server.conf' /etc/init.d/vpn_openvpn.sh

なぜデフォルトでこれを行うことができないのか、そしてなぜQNAPがデバイスを構成して構成を上書きし、すべて奇妙な慣習にあり、異なるディレクトリがそのような悪い習慣であり謎であるのか。

Linuxでこのような基本的なものを実行するために、このような難しい回避策や自動実行ファイルは必要ありません。それはまるで彼らがLinuxをそれよりももっと混乱させて難しくしたかったかのようです。

0
NotoriousPyro