Я пытаюсь настроить OpenVPN для прослушивания порта 443 на моем сетевом хранилище Asustor, а затем передать весь HTTPS-трафик в Apache, используя опцию совместного использования порта на основе: Совместное использование порта OpenVPN с Apache / SSL
Однако я не могу заставить его работать. Я думаю, проблема в том, что порт 443, похоже, слушает процесс myhttp. Когда я запускаю # netstat -tulpn | grep СЛУШАТЬ команда, я получу такой результат:
tcp 0 0 0.0.0.0:443 0.0.0.0:* СЛУШАТЬ 4475 / myhttpd
Когда я меняю порт OpenVPN на 444 и запускаю # netstat -tulpn | grep СЛУШАТЬ снова, я получу следующий результат:
tcp 0 0 0.0.0.0:443 0.0.0.0:* СЛУШАТЬ 4475 / myhttpd
tcp 0 0 0.0.0.0:444 0.0.0.0:* СЛУШАТЬ 1507 / openvpn
tcp 0 0 127.0.0.1:1195 0.0.0.0:* СЛУШАТЬ 1507 / openvpn
Я не знаю, как решить эту проблему. Есть ли у кого-нибудь предложения?
Проблема в том, что ваш Apache слушает 0.0.0.0:443
, когда вам нужно настроить его для прослушивания localhost:443
. Тогда вы не получите конфликтующих портов для серверов.
Службы на NAS запускаются в возрастающем порядке по номеру, затем по алфавиту, а служба VPN расположена в /usr/builtin/etc/init.d/
является S83vpnconnect
.
В итоге я создал для себя стартовый скрипт, который убивает все, что использует нужные мне порты, непосредственно перед скриптом, который в них нуждается:
S49killmyhttpd -> /usr/local/AppCentral/killmyhttpd/CONTROL/start-stop.sh
В вашем случае вы, вероятно, захотите связать его как S83killmyhttpd
, и сценарий будет:
#! /bin/sh
case $1 in
start)
PID1="$(fuser 80/tcp)"
PID2="$(fuser 443/tcp)"
echo "Killing useless port 80 hog, PID=${PID1}"
kill -9 ${PID1}
echo "Killing useless port 443 hog, PID=${PID2}"
kill -9 ${PID2}
;;
stop)
echo "myhttpdkiller can't bring back what it killed"
;;
reload)
PID1="$(fuser 80/tcp)"
PID2="$(fuser 443/tcp)"
echo "Killing useless port 80 hog, PID=${PID1}"
kill -9 ${PID1}
echo "Killing useless port 443 hog, PID=${PID2}"
kill -9 ${PID2}
;;
*)
echo "usage: $0 {start|stop|reload}"
exit 1
;;
esac
exit 0
Эта секция перезагрузки может понадобиться, а может и не понадобиться. Это было для меня одним из самых неприятных моментов в этом NAS - интерфейс веб-интерфейса - это то, что запускает myhttpd, как только порт 80 или 443 освобождается, а цель состоит только в перенаправлении их на 8000 и 8001.
Для меня сценарий, приведенный выше, тоже не работал, поэтому я поместил блок уничтожения в сценарий инициализации докера, чтобы мои контейнеры захватили порты, прежде чем что-либо еще сделает.