LINUX.ORG.RU
решено ФорумAdmin

Gentoo, ppp, Nginx

 , ,


0

1

Господа, есть два сегмента сети в одной конторе которые объединены в одну сеть посредством VPN через два канала сразу.

Не спрашивайте почему - это каприз заказчика.

Каналы обозваны ppp0 и ppp1.

В одной из подсетей есть сервер с Gentoo

Ситуация такая. На сервере с Gentoo крутится Nginx, но работает он почему-то только в том случае если оба ppp0 и ppp1 активны (интересует только ppp сейчас).

Если ppp0 не активен то Nginx не работает, даже если с ppp1 всё в порядке.

Конкретно вижу вот это:

$ sudo /etc/init.d/nginx restart
 * WARNING: nginx will start when net.ppp0 has started

Потому что провайдер за ppp0 куда-то отвалился и ppp0 при старте не поднялся, а такое часто бывает.

Провайдер за ppp1 тоже любит часто куда-то исчезать. Каналы не надёжные, но других нет.

Вопрос.

Что нужно сделать что бы Nginx не отваливался от того, что ppp0 или ppp1 не работает или даже если они не активны оба сразу?

Конфиг у Gentoo собственно вот такой:

#
# Ethernet
#

config_eth0="dhcp"

#
# VPN
#

config_ppp0="ppp"
link_ppp0="pty 'pptp ?.?.?.? --nolaunchpppd'"
username_ppp0="username"
password_ppp0="password"
pppd_ppp0=\
"
    require-mschap-v2
    noauth
    noproxyarp
    mtu 1460
    lcp-echo-failure 20
    lcp-max-failure 75
"

config_ppp1="ppp"
link_ppp1="pty 'pptp ?.?.?.? --nolaunchpppd'"
username_ppp1="username"
password_ppp1="password"
pppd_ppp1=\
"
    require-mschap-v2
    noauth
    noproxyarp
    mtu 1460
    lcp-echo-failure 20
    lcp-max-failure 75
"

postup()\
{
    if [[ ${IFACE} == "ppp0" ]]
    then
        ip route add 192.168.0.0/24 dev ppp0
    fi
    if [[ ${IFACE} == "ppp1" ]]
    then
        ip route add 192.168.0.0/24 dev ppp1
    fi
}

postdown()\
{
    if [[ ${IFACE} == "pppO" ]]
    then
        ip route del 192.168.0.0/24 dev ppp0
    fi
    if [[ ${IFACE} == "ppp1" ]]
    then
        ip route del 192.168.0.0/24 dev ppp0
    fi
}

Ответ на: комментарий от BattleCoder

Это вот:

$ cat /etc/conf.d/nginx
# /etc/conf.d/nginx

# Configuration file
#NGINX_CONFIGFILE="/etc/nginx/nginx.conf"

# PID file
# If you should ever change this, remember to update
# "/etc/logrotate.d/nginx", too.
#NGINX_PIDFILE="/run/nginx.pid"

# User to run nginx as
# If you should ever change this, make sure this user has
# execution permission on any of your log directories
# (/var/log/nginx per default) but do NOT forget other log directories
# one of your vhost(s) maybe using or logging after logrotation will
# be broken).
#NGINX_USER="nginx"

# Group to run nginx as
# See the note above regarding NGINX_USER.
#NGINX_GROUP="nginx"

# You can use this configuration option to pass additional options to the
# start-stop-daemon, see start-stop-daemon(8) for more details.
# Per default we wait 1000ms after we have started the service to ensure
# that the daemon is really up and running.
#NGINX_SSDARGS="--wait 1000"

# The termination timeout (start-stop-daemon parameter "retry") ensures
# that the service will be terminated within a given time (60 + 5 seconds
# per default) when you are stopping the service.
#NGINX_TERMTIMEOUT="TERM/60/KILL/5"

Дефолт в общем-то. Я думаю такая же ситуация с любой службой использующей сеть будет наблюдаться. Так что Nginx это всего лишь иллюстрация.

Вероятно есть какой-то параметр в настройках сетевого интерфейса делающий слежение за сетевым интерфейсом «не обязательным».

Но какой? Что и где крутить?

user0xff ()
Ответ на: комментарий от BattleCoder

За подсказку про /etc/init.d/nginx спасибо.

Подправил

depend() {
    need net
    use dns logger netmount
}

на

depend() {
    #need net
    use dns logger netmount
}

И вроде бы всё «как надо» стало.

Но это как-то грубо так стартовые сценарии подправлять.

Пока тему решенной отмечать не буду.

user0xff ()
Ответ на: комментарий от user0xff

по первой же ссылке в гугле

С другой стороны, если установлено rc_depend_strict=«NO», тогда «net» зависимость считается разрешенной, в том случае, если хотя бы один сетевой интерфейс удачно поднялся.

на вот

iTA05 ()
Ответ на: комментарий от gentoo1love

Ну что поделать - не умеет человек работать с гентой вот и плюётся. Это видно ну хотя бы по тому, что используют postup/postdown ТОЛЬКО для установки маршрутов - и это при том что для этого есть директивы routes_ifname.

А еще в данном случае postdown НЕ НУЖЕН, так как при удалении интерфейса(postdown сработает ПОСЛЕ отключения, но в случае ppp это равносильно удалению - ведь директива persist в конфигурации pppd не задана) маршруты уже будут удалены и в этой функции нет НИКАКОГО смысла

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1 )
Ответ на: комментарий от Pinkbyte

Ткни где это в handbook расписано.

Про тонкости такие я не знал.

Чуть раньше я там FreeBSD вместо операционной системы использовал и вообщем так же маршруты добавлял/убирал, но отдельным сценарием - то ещё удовольствие.

Возможно и во FreeBSD есть свои правильные способы, но я не знаю никого кто бы в таких тонкостях разбирался. Так что спросить не у кого - делаю так как понимаю.

user0xff ()
Ответ на: комментарий от Pinkbyte

За то, что мой вопрос исправлен на «более правильный» отдельное спасибо)

user0xff ()
Ответ на: комментарий от user0xff

Ткни где это в handbook расписано.

Легко. Открываем handbook, смотрим в раздел Gentoo network configuration. routes_iface упоминается уже в Introduction

postup/postdown по своей природе очень полезны, но обычно когда другими способами сделать то что тебе нужно не получается. Я так(правда с помощью preup/postdown) заводил себе поддержку vxlan в netifrc. Просто тупо прописывал создание интерфейса в preup и удаление в postdown через iproute - а уже сам netifrc разруливал назначение ip-адресов, маршруты, зависимости служб от интерфейса и прочее. Очень удобно. Но потом я всё же решил, что хватит терпеть эти костыли и отправил в netifrc патч :-)

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1 )
20 ноября 2018 г.
Ответ на: комментарий от TikTokMEDIACREATOR

Какой проблемы? Мой патч в netifrc давно приняли, так что VXLAN-ы создавать можно без preup/postdown, пруф

Pinkbyte ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.