Хитрый роутинг - несколько Ip на одном Eth с переключением по времени
Модератор: SLEDopit
Хитрый роутинг - несколько Ip на одном Eth с переключением по времени
суть вопроса.
есть небольшой сервак, выполняющий роль и роутера и веб-сервера и почтового сервера. вообщем всего.
две сетевухи, одна смотрит внутрь - 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 в ночное время
заранее огромное спасибо!
есть небольшой сервак, выполняющий роль и роутера и веб-сервера и почтового сервера. вообщем всего.
две сетевухи, одна смотрит внутрь - 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 в ночное время
заранее огромное спасибо!
Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени
сделал сейчас по другому.
не стал делать 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?
не стал делать 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?
Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени
из приведенной информации вытекает, что деменов для динамической маршрутизации у Вас нет.
зачем тогда указывать метрику?
кроме этих демонов ее никто не использует. вообще.
зачем тогда указывать метрику?
кроме этих демонов ее никто не использует. вообще.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени
вполне себе нормальное решение
если я правильно понял, и 10.10.10.72, и 10.10.11.49 - адреса провайдера, а не Ваши. т.е. доступ к этим адресам зависит от того, как оно там настроено у провайдера.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени
вообщем, попробуем пока так. :-)
10.10.10.72 и 10.10.11.54 - мои адреса
10.10.10.65 и 10.10.11.49 - гейты у прова.
волнусь только за одно - чтобы пакеты пришедшие через 10.72 и уходящие ночью через 11.54 нормально ходили и нигде не резались.
10.10.10.72 и 10.10.11.54 - мои адреса
10.10.10.65 и 10.10.11.49 - гейты у прова.
волнусь только за одно - чтобы пакеты пришедшие через 10.72 и уходящие ночью через 11.54 нормально ходили и нигде не резались.
Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени
итог: все вроде бы заработало.
настройки:
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). благо у мя провайдер это не режет.
настройки:
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). благо у мя провайдер это не режет.
Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени
какая ж это кривизна? это издержки производства.
p.s. кстати, открою один маленький секрет: ядра линукс начиная где-то с 2.0 прекрасно обходятся без alias-ов. естественно, для обратной совместимости, можно ip-адресу назначить псевдоним. но все прекрасно будет работать и без него.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени
ядра линукс начиная где-то с 2.0 прекрасно обходятся без alias-ов. естественно, для обратной совместимости, можно ip-адресу назначить псевдоним. но все прекрасно будет работать и без него.
А как работать без алиасов? Подскажите?
Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени
псевдоним (он же 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
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени
Вопрос на похожую тему:
Есть ноутбук, подключаемый то к домашней локалке, то к рабочей, в которых разные днс, шлюзы, айпи и прочее. Можно ли это сделать цивилизованно, а не переписывая resolv.conf и т.п.?
Есть ноутбук, подключаемый то к домашней локалке, то к рабочей, в которых разные днс, шлюзы, айпи и прочее. Можно ли это сделать цивилизованно, а не переписывая resolv.conf и т.п.?
2:5030/1080.133
Больше трех лет интересующийся новичок. :-)
Больше трех лет интересующийся новичок. :-)
Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени
но нету dhcp?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени
Нету, в том-то и дело, если б это назначалось сервером - проблемы бы не было.
2:5030/1080.133
Больше трех лет интересующийся новичок. :-)
Больше трех лет интересующийся новичок. :-)
- Olden Gremlin
- Сообщения: 365
- Статус: RAP22-RIPE
- ОС: Debian GNU/Linux Wheezy
- Контактная информация:
Re: Хитрый роутинг - несколько Ip на одном Eth с переключением по времени
ну, если ОС 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