LinuxForum.Fans
Тема

Проблема с NTP-сервером и двумя провайдерами.

Автор: NordWest 14 сообщений 3163 просмотров
#330937

Есть сервер с двумя интерфейсами. Одна из сетей наглухо закрыта наружу криворукими админами и проксёй, вторая относительно свободна. Пытаюсь настроить NTP-сервер на этой машине и нужно, чтобы он ходил по второму пути.
Настроил две таблицы маршрутизации, как написано, например, тут http://habrahabr.ru/post/49137/.
В скрипте iptables добавил такую строку:

text
iptables -A PREROUTING -t mangle -p udp --dport 123 -j MARK --set-mark 0x2

И в interfaces следующее:

text
post-up ip rule add fwmark 0x2/0x2 lookup 101

101 - это таблица нужного интерфейса.

Однако ntp всё равно шлет свои запросы в неправильную сеть. Причем иногда удается его перенаправить в нужную сторону перезагрузкой интерфейсов, но это нестабильное решение.

Может кто-нибудь расскажет - в чем проблема?

#330938

А настройки таблиц как у вас настраиваються после перезагрузки?

#330941

Вот минимум что вам необходимо делать при загрузки системы.

text
iptables -t mangle -A PREROUTING -p udp --sport 123 -j MARK --set-mark 122
ip route add default via 192.168.201.1 table ntp
ip rule add fwmark 122 table ntp
ip route flush cache
#330944

interfaces примерно такой.

text

auto lo
iface lo inet loopback

pre-up echo "1" > /proc/sys/net/ipv4/ip_forward # Включаем форвардинг пакетов pre-up iptables-restore < /etc/ip_rulles.lst # Загружаем правила post-down iptables-save > /etc/ip_rulles.lst # Сохраняем правила

post-up ip rule add fwmark 0x2/0x2 lookup 101

iface eth0 inet static address 192.168.30.214 netmask 255.255.255.0 gateway 192.168.30.50 post-up ip route add default via 192.168.30.50 table 100 post-up ip rule add from 192.168.30.214 table 100

auto eth0

iface eth1 inet dhcp #iface eth1 inet static #address 10.3.3.2 #netmask 255.255.255.192 #gateway 10.3.3.1 post-up ip route add default via 10.3.3.1 table 101 post-up ip rule add from 10.3.3.2 table 101

#330945

Я вам привёл рабочий пример. Теперь ищите разницу.
Так же не плохо бы взглянуть на настройки самих таблиц.

#330948
text

#ip rule
0:    from all lookup local 
32764:    from 10.3.3.2 lookup T2 
32765:    from 192.168.30.214 lookup T1 
32766:    from all lookup main 
32767:    from all lookup default 
# ip route
10.3.3.0/26 dev eth1  proto kernel  scope link  src 10.3.3.2 
192.168.30.0/24 dev eth0  proto kernel  scope link  src 192.168.30.214 
default via 10.3.3.1 dev eth1 
default via 192.168.30.50 dev eth0 

После перезагрузки ntp вообще не работает ( :

text
# ntpdc -p
localhost: timed out, nothing received
***Request timed out

Так нужно таблицу под ntp заводить или это T2 в моем случае. Там для lo ещё нужны наверное правила?

#330950

Покажите вывод
cat /etc/iproute2/rt_tables

#330959
Kettler написал:
Покажите вывод
cat /etc/iproute2/rt_tables

вот

text
# cat /etc/iproute2/rt_tables
#
# reserved values
#
255    local
254    main
253    default
0    unspec
#
# local
#
#1    inr.ruhep
100    T1
101    T2

Там с загрузкой правил проблемы возникли, даже lo не запустился после перезагрузки. Ну да ладно, в ручную сделал, вроде грузится.

Сейчас после перезагрузки заработал правильно:


# ntpdc -p
remote local st poll reach delay offset disp
=======================================================================
=ntp.mobatime.ru 10.3.3.2 1 64 1 0.00388 0.000449 2.81735

Однако с клиентской машины его не видно. Т.е. отклика нет:

text

ntpdate -d 192.168.30.214
 2 Aug 13:22:46 ntpdate[8394]: ntpdate 4.2.6p5@1.2349-o Thu Apr  4 22:25:19 UTC 2013 (1)
Looking for host 192.168.30.214 and service ntp
host found : lazaserv.local
transmit(192.168.30.214)
transmit(192.168.30.214)
transmit(192.168.30.214)
...

Попробовал в правиле с маркировкой добавить ключ "-i lo", но тщетно.

И опять, после "/etc/init.d/networking restart" ntp снова на неправильном интерфейсе.

#330963

Как вообще ntp выбирает с какого интерфейса ему работать?

#330964
NordWest написал:
Как вообще ntp выбирает с какого интерфейса ему работать?

Ntp запускаете на том же сервере где и настраиваете?

#330968
"Kettler⇓" написал:
Ntp запускаете на том же сервере где и настраиваете?

Ну да, конечно.
Он ведь на вех интерфейсах запускается. Почему же он то с одного запускает пакет, то с другого...

text

Aug  2 14:57:03 lazaserv ntpd[5707]: ntpd 4.2.6p2@1.2194-o Sun Oct 17 13:35:13 UTC 2010 (1)
Aug  2 14:57:03 lazaserv ntpd[5708]: proto: precision = 0.325 usec
Aug  2 14:57:03 lazaserv ntpd[5708]: Listen and drop on 0 v4wildcard 0.0.0.0 UDP 123
Aug  2 14:57:03 lazaserv ntpd[5708]: Listen and drop on 1 v6wildcard :: UDP 123
Aug  2 14:57:03 lazaserv ntpd[5708]: Listen normally on 2 lo 127.0.0.1 UDP 123
Aug  2 14:57:03 lazaserv ntpd[5708]: Listen normally on 3 eth0 192.168.30.214 UDP 123
Aug  2 14:57:03 lazaserv ntpd[5708]: Listen normally on 4 eth1 10.3.3.2 UDP 123
Aug  2 14:57:03 lazaserv ntpd[5708]: Listen normally on 5 lo ::1 UDP 123
Aug  2 14:57:03 lazaserv ntpd[5708]: Listen normally on 6 eth1 fe80::224:1dff:fec0:8d62 UDP 123
Aug  2 14:57:03 lazaserv ntpd[5708]: Listen normally on 7 eth0 fe80::224:1dff:fec0:8d42 UDP 123
#330971

У меня, кстати, в правиле iptables был указан не sport, а dport. Но это ничего не поменяло. Сервис то и запускается на 123 и отправляет на 123, т.е. оба порта будут такими?

#330972

Тогда надо не в PREROUTING делать метки а в OUTPUT.

#331014

В общем чертовщина. Главное почему с клиента не проходит запрос непонятно. Надо будет все эти рауты сбросить и в понедельник заново настройку повторить.

Войдите или зарегистрируйтесь, чтобы ответить.