Хитрый роутинг - несколько Ip на одном Eth с переключением по времени

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модератор: SLEDopit

Ответить
[kab]
Сообщения: 8
ОС: Slackware

Хитрый роутинг - несколько Ip на одном Eth с переключением по времени

Сообщение [kab] »

суть вопроса.
есть небольшой сервак, выполняющий роль и роутера и веб-сервера и почтового сервера. вообщем всего.
две сетевухи, одна смотрит внутрь - 192.168.1.1, вторая наружу, наружний интерфейс - статический, "реальный".

пусть скажем IP: 10.10.10.72/255.255.255.224, gate: 10.10.10.65
настроен маскарадинг, все работает, внутренние тачки в инет выходят.
имеется поднятый DNS, sftp, apache, qmail и прочая мишура. все работает, все ок, почта принимается, веб-сервер отвечает.

провайдер делает подарок - предлагает хорошую скидку на ночной трафик (с 0 до 6 утра)
но при этом нужно поднять на этой же сетевухе второй IP-адрес и чтобы ночью весь траффик шел через этот IP адрес.
пусть скажем IP: 10.10.11.54/255.255.255.240, gate: 10.10.11.49

покурив на linux IP-aliasing mini howto - делаем такую фишку:
основной IP (.10.72) оставляем на eth0.
"ночной" IP (.11.54) заводим на eth0:0 (на алиас).

в роутинге прописываем: route add default gw 10.10.10.65 metric 2
в кроне с 0 часов делаем: route add default gw 10.10.11.49 metric 1, а в 6 часов утра этот роут удаляем.

суть идеи - сделать более приоритетный роут с тем, чтобы с 0 до 6 утра все пакеты шли через "ночной" IP.

результат: изнутри все работает. то есть ночью весь траффик идет через "ночной" IP.
но ночью же снаружи сайт становится недоступным. причем достаточно странно, в первые дни он был доступен, а сейчас я к нему приконнектится не могу (трейсроут затывается еще на подходе к гейту).

пров (у него в целом - фря, а шлюз xxx.49 - это cisco-3750) на это пишет:

"У тебя проблемы с "дефолтом".

1) Вот пинг с твоего шлюза сейчас:
.....#ping .......54
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to xxx.xxx.xxx.54, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms

2) А с любого другого места - ФИГ!

3) Вот правило на входе в нашу сеть сейчас:
00051 180 16232 allow ip from any to xxx.xxx.xxx.54
00051 0 0 allow ip from xxx.xxx.xxx.54 to any

4) Так что смотри у себя что там трогали - до этого все нормально
проканывало..."

вопросы:
1. а почему собственно?
2. есть ли идеи по более правильному решению (я чуствую, что мое - корявое :-) ) задачи:
- заведения 2-х внешних IP-адресов на одном eth0
- динамическому роутингу по времени (с 0 до 6 утра - через второй IP, а в остальное время - через основной IP)
- сохранению доступности сервера (DNS, www, qmail и прочее) по основному IP в ночное время

заранее огромное спасибо!
Спасибо сказали:
[kab]
Сообщения: 8
ОС: Slackware

Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени

Сообщение [kab] »

сделал сейчас по другому.
не стал делать 2 default роута с разными метриками.
сделал так:
в 0 часов: ip route change default via 10.10.11.49 metric 1
в 6 часов: ip route change default via 10.10.10.65 metric 1

так более правильно?
не будет ли проблем с доступом к "дневному" (10.10.10.72) ip-адресу (всмысле будет ли работать DNS, www, почта и т.п.) в ночное время, когда активен роутинг через 10.10.11.49?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени

Сообщение sash-kan »

из приведенной информации вытекает, что деменов для динамической маршрутизации у Вас нет.
зачем тогда указывать метрику?
кроме этих демонов ее никто не использует. вообще.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени

Сообщение sash-kan »

[kab] писал(а):
17.04.2007 12:55
так более правильно?
вполне себе нормальное решение
[kab] писал(а):
17.04.2007 12:55
не будет ли проблем с доступом к "дневному" (10.10.10.72) ip-адресу (всмысле будет ли работать DNS, www, почта и т.п.) в ночное время, когда активен роутинг через 10.10.11.49?
если я правильно понял, и 10.10.10.72, и 10.10.11.49 - адреса провайдера, а не Ваши. т.е. доступ к этим адресам зависит от того, как оно там настроено у провайдера.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
[kab]
Сообщения: 8
ОС: Slackware

Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени

Сообщение [kab] »

вообщем, попробуем пока так. :-)
10.10.10.72 и 10.10.11.54 - мои адреса
10.10.10.65 и 10.10.11.49 - гейты у прова.
волнусь только за одно - чтобы пакеты пришедшие через 10.72 и уходящие ночью через 11.54 нормально ходили и нигде не резались.
Спасибо сказали:
[kab]
Сообщения: 8
ОС: Slackware

Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени

Сообщение [kab] »

итог: все вроде бы заработало.
настройки:
eth0: 10.10.10.72/255.255.255.224, bcast: 10.10.10.95
gate: 10.10.10.65 - прописываем при старте системы

алиас eth0:0 поднимаем сразу при старте системы:
eth0:0 - 10.10.11.54/255.255.255.240, bcast: 10.10.11.63
gate: 10.10.11.49 - поднимаем по крону, т.е. для переключения роутинга по времени имеем такую запись в кроне для рута:

# night IP
5 0 * * * /sbin/ip route change default via 10.10.11.49 metric 1
55 5 * * * /sbin/ip route change default via 10.10.10.65 metric 1

пока что вроде работает. несмотря на одну кривизну - если пакет к работающему DNS/mail/www/etc придет ночью, то он придет на "дневной" IP (10.10.10.72), а ответ на этот пакет пойдет по "ночному" IP (10.10.11.54). благо у мя провайдер это не режет.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени

Сообщение sash-kan »

[kab] писал(а):
18.04.2007 16:05
несмотря на одну кривизну
какая ж это кривизна? это издержки производства.
p.s. кстати, открою один маленький секрет: ядра линукс начиная где-то с 2.0 прекрасно обходятся без alias-ов. естественно, для обратной совместимости, можно ip-адресу назначить псевдоним. но все прекрасно будет работать и без него.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
zkrvova
Сообщения: 280

Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени

Сообщение zkrvova »

ядра линукс начиная где-то с 2.0 прекрасно обходятся без alias-ов. естественно, для обратной совместимости, можно ip-адресу назначить псевдоним. но все прекрасно будет работать и без него.


А как работать без алиасов? Подскажите?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени

Сообщение sash-kan »

zkrvova писал(а):
19.04.2007 14:15
А как работать без алиасов?
псевдоним (он же alias, он же label) - это всего лишь дополнительная информация, привязывающаяся к ip-адресу. опциональная.
можно указывать, можно нет.

Код: Выделить всё

$ sudo ip a a 10.0.0.1/24 dev eth0
$ sudo ip a a 10.0.0.2/24 dev eth0
$ sudo ip a a 10.0.0.3/24 dev eth0
$ sudo ip a a 10.0.0.4/24 dev eth0 label eth0.0
$ sudo ip a a 10.0.0.5/24 dev eth0 label eth0.22
$ ip a
1: lo: <LOOPBACK,UP,10000> mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:18:f3:bd:1e:08 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.54/24 brd 192.168.0.255 scope global eth0
    inet 10.0.0.1/24 scope global eth0
    inet 10.0.0.2/24 scope global secondary eth0
    inet 10.0.0.3/24 scope global secondary eth0
    inet 10.0.0.4/24 scope global secondary eth0.0
    inet 10.0.0.5/24 scope global secondary eth0.22
а теперь внимание, смертельный номер:

Код: Выделить всё

$ /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 00:18:F3:BD:1E:08
          inet addr:192.168.0.54  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:156529 errors:0 dropped:0 overruns:0 frame:0
          TX packets:58320 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:27437044 (26.1 MiB)  TX bytes:9366874 (8.9 MiB)
          Interrupt:193

eth0.0: error fetching interface information: Device not found
мораль которого - не пользуйтесь морально и физически устаревшими средствами типа ifconfig, route, arp. а пользуйтесь командой ip. входящей в пакет iproute. который специально был разработан для работы с полностью переписанной сетевой подсистемой ядра linux. версии с 2.0.чего-то-там.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
gm2k
Сообщения: 75
ОС: MacOS X 10.4.10
Контактная информация:

Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени

Сообщение gm2k »

Вопрос на похожую тему:

Есть ноутбук, подключаемый то к домашней локалке, то к рабочей, в которых разные днс, шлюзы, айпи и прочее. Можно ли это сделать цивилизованно, а не переписывая resolv.conf и т.п.?
2:5030/1080.133
Больше трех лет интересующийся новичок. :-)
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени

Сообщение sash-kan »

gm2k писал(а):
21.04.2007 12:56
Есть ноутбук, подключаемый то к домашней локалке, то к рабочей, в которых разные днс, шлюзы, айпи и прочее.
но нету dhcp?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
gm2k
Сообщения: 75
ОС: MacOS X 10.4.10
Контактная информация:

Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени

Сообщение gm2k »

Нету, в том-то и дело, если б это назначалось сервером - проблемы бы не было.
2:5030/1080.133
Больше трех лет интересующийся новичок. :-)
Спасибо сказали:
Аватара пользователя
Olden Gremlin
Сообщения: 365
Статус: RAP22-RIPE
ОС: Debian GNU/Linux Wheezy
Контактная информация:

Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени

Сообщение Olden Gremlin »

gm2k писал(а):
21.04.2007 21:21
Нету, в том-то и дело, если б это назначалось сервером - проблемы бы не было.

ну, если ОС debian, то имеет смысл посмотреть в сторону /etc/network/interfaces и попробовать рыть в сторону:

Код: Выделить всё

mapping eth0
   script /path/to/ping-places.sh
   map 192.168.42.254/24 192.168.42.1 home
   map 10.15.43.254/24 10.15.43.1 work-wireless
   map 10.15.43.23/24 10.15.43.1 work-static

iface home inet dhcp
iface work-wireless bootp
iface work-static static
    address 10.15.43.23
    netmask 255.255.255.0
    gateway 10.15.43.1

/path/to/ping-places.sh:

Код: Выделить всё

#!/bin/sh

if [ `id -u` -ne 0 ] || [ "$1" = "" ]; then exit 1; fi

if [ -x /usr/bin/fping ]; then
        PING="/usr/bin/fping"
else
        PING="/bin/ping -c 2"
fi

iface="$1"
which=""

while read addr pingme scheme; do
        if [ "$which" ]; then continue; fi

        #echo "  Trying $addr & $pingme ($scheme)" >&2

        ip addr add $addr dev $iface  >/dev/null 2>&1
        ip link set $iface up         >/dev/null 2>&1

        if $PING $pingme >/dev/null 2>&1; then
                which="$scheme"
        fi
        ip link set $iface down       >/dev/null 2>&1
        ip addr del $addr dev $iface  >/dev/null 2>&1
done

if [ "$which" ]; then echo $which; exit 0; fi
exit 1
«Когда у общества нет цветовой дифференциации штанов — то нет цели!»
nic-hdl: RAP22-RIPE
Спасибо сказали:
Ответить