Назад | Перейти на главную страницу

openVPN и myhttpd на порту 433

Я пытаюсь настроить 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.

Для меня сценарий, приведенный выше, тоже не работал, поэтому я поместил блок уничтожения в сценарий инициализации докера, чтобы мои контейнеры захватили порты, прежде чем что-либо еще сделает.