OpenVPN в отредактированном конфиге QNAP QTS 4.2 сбрасывается после загрузки

4178
HannesS

У меня есть QNAP TS-253 Pro (QTS 4.2.0), на котором OpenVPN-сервер настроен и работает нормально. Поскольку я хочу использовать клиентские сертификаты для защиты VPN-подключений, встроенная конфигурация в веб-интерфейсе вообще не нужна.

Поэтому я импортировал свои файлы конфигурации и сертификата через SSH / SCP в / etc / openvpn, перезапустил сервер OpenVPN, и он работал хорошо, пока я не перезагрузил NAS QNAP. Конфиг был возвращен к заводским настройкам QNAP.

Похоже, каталог / etc / openvpn - это просто символическая ссылка на / mnt / ext / opt / vpnopenvpn / etc / openvpn /, которая содержит исходную конфигурацию из веб-интерфейса моего QNAP. Затем я попытался отредактировать конфиг там и надеялся, что он не будет заменен при следующей загрузке, но это не было решением. Перезагрузился и нашел заводские настройки по умолчанию в OpenVPN-файлах в / mnt / ext / opt / vpnopenvpn / etc / openvpn / .

Я пролистал множество тем на официальном форуме QNAP, неофициальных постах в блогах и некоторых init.d-скриптах на самом QNAP, чтобы найти способ либо отключить автоматическое развертывание заводских настроек по умолчанию, либо заставить QNAP развернуть мою работу Конфигурация в / etc / openvpn .

Вот список моих неудачных попыток:

  • Скопировал конфиг в / etc / openvpn - конфиг переписан при загрузке
  • Скопировал конфигурацию в / mnt / ext / opt / vpnopenvpn / etc / openvpn / - конфигурация была переписана при загрузке
  • Следуя инструкциям по адресу: http://wiki.nas-portal.org/index.php/Install_OpenVPN_on_QNAP - не удалось найти qpkg / ipkg в актуальной версии QTS (под управлением 4.2.0), возможно, руководство написано для более старой версии ...
  • Попытался запустить самостоятельно созданный скрипт autorun.sh, как описано здесь: 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 - похоже, не относится к моей конкретной проблеме / конфигурации
  • Прокомментировал специфичные для openvpn разделы в /etc/init.d/installtgz.sh - сам файл был переписан при загрузке, и мои комментарии снова стали активной частью скрипта

Кто-нибудь знает, как остановить QTS, чтобы переписать мои файлы конфигурации? Я не хочу копировать конфигурацию OpenVPN вручную каждый раз при перезагрузке QNAP ...

5
нашел этот комментарий `после перезапуска vpn_openvpn.sh server.conf сбрасывает значения по умолчанию` на форуме qnap (http://forum.qnap.com/viewtopic.php?t=83804). Кажется, не из-за вашей проблемы, но, возможно, вы можете получить помощь там. marsh-wiggle 9 лет назад 0
Извините, я уже попробовал обходной путь, предложенный там без успеха :( HannesS 9 лет назад 0

2 ответа на вопрос

3
TechImpossible

I was looking for a similar solution, because I needed a serverside Open VPN config for fixed IP numbers. My solution was to add a line to the vpn_openvpn.sh file right before it starts the daemon_mgr in my case line 210.

<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 $ ]; then </snip> 

I added the line starting with echo. At this point you should also be able to modify the configuration in /etc/openvpn/server.conf

When added here, the line will survive restarts of the OpenVPN Server but as you already painfully experienced, a lot of files get recreated at boot time. This is where the autorun.sh comes into play. How to use it you can find here The exact syntax is based on the type of QNAP NAS you got.

You can add a sed line here to recreate the "fix" at boot time.

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 

In your case the autorun.sh should look like this:

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 

Let me know if it works

Edit: after some rethinking you can do it even shorter

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 
Выглядит очень многообещающе, я попробую, когда вернусь в офис завтра :) Заранее спасибо, что поделились! HannesS 9 лет назад 0
Работает как шарм. У меня были некоторые проблемы, пытаясь разместить несколько строк в команде sed, так как она не принимала ** \ n ** в качестве новой строки, но, наконец, я настроил и запустил мою конфигурацию. Спасибо вам! Я даже использовал конфигурационный диск для хранения своих конфигурационных файлов и их копирования в autorun.sh - так что их можно там удобно редактировать. HannesS 9 лет назад 0
Рад, что смог помочь. TechImpossible 9 лет назад 0
У меня проблемы с сохранением настроек для `/ etc / config / smb.conf`. Я думаю, что ваш ответ может быть решением. Но я не понимаю ваш ответ - извините. Может быть, вы можете объяснить это немного более общим (для всех config-файлов). buhtz 8 лет назад 0
Смысл ответа Tech заключается в замене или создании сценария, который загружается во время загрузки NAS. Он может быть применен ко всем файлам конфигурации, независимо от их назначения (ovpn, smb, cron и т. Д.). Autorun.sh в его связанной вики-статье запускается каждый раз при перезапуске QNAP, поэтому мы редактируем его для создания нашей собственной конфигурации файлы и скрипты при каждой перезагрузке. Если вы можете предоставить некоторые детали, где именно вы боретесь, может быть, мы можем поддержать вас лучше :) HannesS 8 лет назад 0
0
NotoriousPyro

Для удаления толчка шлюза по умолчанию в конфигурации QNAP:

sed -i -e '/if \[ $? == 0 \] && \[ ! -f $ \]; 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 более запутанным и сложным, чем он есть.