URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 88289
[ Назад ]

Исходное сообщение
"Что за src 195.xx.xx.20 у меня в default route?"

Отправлено zeiter , 01-Мрт-10 16:38 
Приветствую!

На CentOS 5 (2.6.18-164.11.1.el5)

имеется

# ip route show
195.xx.xx.16/28 dev eth0  proto kernel  scope link  src 195.xx.xx.18
169.254.0.0/16 dev eth0  scope link
default via 195.xx.xx.17 dev eth0  src 195.xx.xx.20

при чем 195.xx.xx.20 это адрес с eth0:0, а не с eth0.

Откуда берется этот 195.xx.xx.20 в default'е? Как его убрать?


Содержание

Сообщения в этом обсуждении
"Что за src 195.xx.xx.20 у меня в default route?"
Отправлено PavelR , 01-Мрт-10 18:39 
>[оверквотинг удален]
>
>
# ip route show 
>195.xx.xx.16/28 dev eth0  proto kernel  scope link  src 195.xx.xx.18
>
>169.254.0.0/16 dev eth0  scope link
>default via 195.xx.xx.17 dev eth0  src 195.xx.xx.20

>
>при чем 195.xx.xx.20 это адрес с eth0:0, а не с eth0.
>
>Откуда берется этот 195.xx.xx.20 в default'е?

Х** его знает. Вы наконфигурили так, видимо. Вот и берется.

> Как его убрать?

ip ru del default table main

А еще - читать LARTC до просветления мозга.


"Что за src 195.xx.xx.20 у меня в default route?"
Отправлено zeiter , 01-Мрт-10 20:52 
>Х** его знает. Вы наконфигурили так, видимо. Вот и берется.

Да ничего специально не делалось такого, что могло привести к такому результату.


>> Как его убрать?
>
>ip ru del default table main
>

сделал

# ip route delete default

сеть отвалилась... на экране:

Mar  1 23:29:24 ns kernel: printk: 18 messages suppressed.
Mar  1 23:29:24 ns kernel: martian source 195.xx.xx.18 from 217.xx.xx.229, on dev eth0
Mar  1 23:29:24 ns kernel: ll header: 00:15:17:9d:a0:12:00:11:85:5c:5e:69:08:00
Mar  1 23:29:30 ns kernel: printk: 18 messages suppressed.
Mar  1 23:29:30 ns kernel: martian source 195.xx.xx.18 from 89.xx.xx.21, on dev eth0
Mar  1 23:29:30 ns kernel: ll header: 00:15:17:9d:a0:12:00:11:85:5c:5e:69:08:00
Mar  1 23:29:35 ns kernel: printk: 8 messages suppressed.
Mar  1 23:29:35 ns kernel: martian source 195.xx.xx.18 from 93.xx.xx.72, on dev eth0
Mar  1 23:29:35 ns kernel: ll header: 00:15:17:9d:a0:12:00:11:85:5c:5e:69:08:00
Mar  1 23:29:40 ns kernel: printk: 12 messages suppressed.
Mar  1 23:29:40 ns kernel: martian source 195.xx.xx.18 from 89.xx.xx.21, on dev eth0
Mar  1 23:29:40 ns kernel: ll header: 00:15:17:9d:a0:12:00:11:85:5c:5e:69:08:00
Mar  1 23:29:44 ns kernel: printk: 15 messages suppressed.

командой возвращаем связь:

service network restart

С ней вернулся и пресловутый:

default via 195.xx.xx.17 dev eth0  src 195.xx.xx.20

>
>А еще - читать LARTC до просветления мозга.

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

p.s. проверил настройки iproute2 в /etc/iproute2 все файлы дефолтные...


"Что за src 195.xx.xx.20 у меня в default route?"
Отправлено PavelR , 01-Мрт-10 23:33 

src берется, видимо из того факта, что шлюз находится в подсети eth0:0


Можете попробовать сделать:

ip ru add default via 195.xx.xx.17 dev eth0  src eth0_ip


"Что за src 195.xx.xx.20 у меня в default route?"
Отправлено zeiter , 02-Мрт-10 10:22 
Раньше 195.xx.xx.18 висел на другом сервере. Возникли определенные проблемы с переносом его на текущий сервер. И до сих пор видимо кто-то помнит в сети этот IP (195.xx.xx.18) и не дает его нормально использовать. Только кто? На шлюзе правильное сопоставление MAC и IP. На старом сервере его нет.

>
>src берется, видимо из того факта, что шлюз находится в подсети eth0:0

На интерфейсах IP из подсети 195.xx.xx.16/28 (и на eth0 и на eth0:0).

eth0   195.xx.xx.18
eth0:0 195.xx.xx.20

шлюз соответственно: 195.xx.xx.17
бродкасты: 195.xx.xx.31

уже проверял на несколько раз, ошибок в настройках не нашел.

Если поменять местами, т.е. сделать

eth0   195.xx.xx.20
eth0:0 195.xx.xx.18,

то в src будет подставляться 195.xx.xx.18. Мистика?

>
>Можете попробовать сделать:
>
>ip ru add default via 195.xx.xx.17 dev eth0  src eth0_ip

Проверю конечно!


"Что за src 195.xx.xx.20 у меня в default route?"
Отправлено zeiter , 02-Мрт-10 15:17 

>Если поменять местами, т.е. сделать
>
>eth0   195.xx.xx.20
>eth0:0 195.xx.xx.18,
>
>то в src будет подставляться 195.xx.xx.18. Мистика?
>

Если оставить один только eth0 с любым из IP адресов с 195.xx.xx.18 по 195.xx.xx.21 (остальные убрать), то дефолтный маршрут вообще не создается (((


"Что за src 195.xx.xx.20 у меня в default route?"
Отправлено zeiter , 02-Мрт-10 14:27 
>
>src берется, видимо из того факта, что шлюз находится в подсети eth0:0
>

Может ли подстановка src быть вызвана такими внешними факторами, как: управляемый свитч и/или роутер?


"Что за src 195.xx.xx.20 у меня в default route?"
Отправлено zeiter , 02-Мрт-10 14:58 
>Может ли подстановка src быть вызвана такими внешними факторами, как: управляемый свитч
>и/или роутер?

Сдается мне - нет, т.к. с отключенным на свитче портом, после ребута картина та же!


"Что за src 195.xx.xx.20 у меня в default route?"
Отправлено zeiter , 02-Мрт-10 14:41 
>ip ru add default via 195.xx.xx.17 dev eth0  src eth0_ip

как и прошлый вариант запроса с удалением дефолта, так и этот не проходит:

# ip ru add default via 195.xx.xx.17 dev eth0 src eth0_ip
Error: argument "default" is wrong: Failed to parse rule type

Поэтому сделал так:

# ip route delete default; ip route add default via 195.xx.xx.17 dev eth0 src 195.xx.xx.18
#
#
# ip route sh
195.xx.xx.16/28 dev eth0  proto kernel  scope link  src 195.xx.xx.18
169.254.0.0/16 dev eth0  scope link
default via 195.xx.xx.17 dev eth0  src 195.xx.xx.18

Но после рестарта network'а все возвращается к старому варианту. Можно воткнуть команду по смене дефолтного маршрута. Но хочу все-таки докопаться, кто и где подставляет src?


"Что за src 195.xx.xx.20 у меня в default route?"
Отправлено McLeod095 , 02-Мрт-10 18:15 
>[оверквотинг удален]
>#
># ip route sh
>195.xx.xx.16/28 dev eth0  proto kernel  scope link  src 195.xx.xx.18
>
>169.254.0.0/16 dev eth0  scope link
>default via 195.xx.xx.17 dev eth0  src 195.xx.xx.18

>
>Но после рестарта network'а все возвращается к старому варианту. Можно воткнуть команду
>по смене дефолтного маршрута. Но хочу все-таки докопаться, кто и где
>подставляет src?

cat /etc/sysconfig/network
cat /etc/sysconfig/network-scripts/ifcfg-eth0
cat /etc/sysconfig/network-scripts/ifcfg-eth0:0
cat /etc/sysconfig/network-scripts/route-eth0
cat /etc/sysconfig/network-scripts/route-eth0:0
cat /etc/sysconfig/network-scripts/eth0.route
cat /etc/sysconfig/network-scripts/eth0:0.route
cat /etc/sysconfig/network-scripts/rule-eth0
cat /etc/sysconfig/network-scripts/rule-eth0:0
cat /etc/sysconfig/static-routes


"Что за src 195.xx.xx.20 у меня в default route?"
Отправлено zeiter , 02-Мрт-10 20:17 
>cat /etc/sysconfig/network

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=mylinux.server.ru
GATEWAY=195.xx.xx.17

>cat /etc/sysconfig/network-scripts/ifcfg-eth0

# Intel Corporation 82541GI Gigabit Ethernet Controller
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:15:17:9D:A0:12
ONBOOT=yes
TYPE=Ethernet

IPADDR=195.xx.xx.18
NETMASK=255.255.255.240
NETWORK=195.xx.xx.16
BROADCAST=195.xx.xx.31

>cat /etc/sysconfig/network-scripts/ifcfg-eth0:0

# Intel Corporation 82541GI Gigabit Ethernet Controller

DEVICE=eth0:0
NAME=eth0:0

IPADDR=195.xx.xx.20
NETMASK=255.255.255.240
NETWORK=195.xx.xx.16
BROADCAST=195.xx.xx.31

>cat /etc/sysconfig/network-scripts/route-eth0

cat: /etc/sysconfig/network-scripts/route-eth0: Нет такого файла или каталога

>cat /etc/sysconfig/network-scripts/route-eth0:0

cat: /etc/sysconfig/network-scripts/route-eth0:0: Нет такого файла или каталога

>cat /etc/sysconfig/network-scripts/eth0.route

cat: /etc/sysconfig/network-scripts/eth0.route: Нет такого файла или каталога

>cat /etc/sysconfig/network-scripts/eth0:0.route

cat: /etc/sysconfig/network-scripts/eth0:0.route: Нет такого файла или каталога

>cat /etc/sysconfig/network-scripts/rule-eth0

cat: /etc/sysconfig/network-scripts/rule-eth0: Нет такого файла или каталога

>cat /etc/sysconfig/network-scripts/rule-eth0:0

cat: /etc/sysconfig/network-scripts/rule-eth0:0: Нет такого файла или каталога

>cat /etc/sysconfig/static-routes

cat: /etc/sysconfig/static-routes: Нет такого файла или каталога


Уже в /etc/* по содержимому искал по запросам eth0 и eth0:0 и по IP ничего нет.


"Что за src 195.xx.xx.20 у меня в default route?"
Отправлено McLeod095 , 02-Мрт-10 20:55 
>[оверквотинг удален]
>
>cat: /etc/sysconfig/network-scripts/rule-eth0:0: Нет такого файла или каталога
>
>>cat /etc/sysconfig/static-routes
>
>cat: /etc/sysconfig/static-routes: Нет такого файла или каталога
>
>
>Уже в /etc/* по содержимому искал по запросам eth0 и eth0:0 и
>по IP ничего нет.

Ну в общем читать доки по редхату (сам довольно таки недавно многого чего не знал). Ну и читать bash. А вообще еще тоже полезно поковырять скрипты запуска сетевых интерфейсов, много чего нового можно узнать.
Насколько я понял то дело происходит так.
Читаются файлы ifcfg-ethX и т.к. идет сортировка то получается сначала ifcfg-eth0 а потом ifcfg-eth0:1 ну и так далее.
При первом конфиге все устанавливается нормально и должно работать, а втором меняется DG т.к. там такая же сеть что и на первом.
Есть несколько выходов, но самый правильный из них скорее всего тот который описан в доках, а именно
указать в /etc/sysconfig/network
GATEWAYDEV=eth0
и перезапустить сеть для проверки.

Честно не знал этого, но после того как прошелся по скрипту /etc/sysconfig/network-scripts/ifup-eth посиком по слову GATEWAY, нашел то что надо, ну а потом еще посмотрел параметры в /usr/share/doc/initscripts-${VERSION}/sysconfig.txt
И все стало понятно.


ЗЫ. Хотя наверное стоило послать к доке.


"Что за src 195.xx.xx.20 у меня в default route?"
Отправлено zeiter , 02-Мрт-10 23:06 
>Ну в общем читать доки по редхату (сам довольно таки недавно многого
>чего не знал). Ну и читать bash. А вообще еще тоже
>полезно поковырять скрипты запуска сетевых интерфейсов, много чего нового можно узнать.

Смотрел уже /etc/rc.d/init.d/network

>Насколько я понял то дело происходит так.
>Читаются файлы ifcfg-ethX и т.к. идет сортировка то получается сначала ifcfg-eth0 а
>потом ifcfg-eth0:1 ну и так далее.
>При первом конфиге все устанавливается нормально и должно работать, а втором меняется
>DG т.к. там такая же сеть что и на первом.

В том то и дело, что:

1. С одним конфигом дефолтный роут вообще не ставится (((
2. На единственном используемом внешнем интерфейсе прописано вообще 4 IP (хоть и говорил только про два). А вот src берется именно из второго конфига eth0:0, и не важно какой именно там из 4 адресов прописан.

ls /etc/sysconfig/network-scripts/ifcfg* -1
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth0:0
/etc/sysconfig/network-scripts/ifcfg-eth0:1
/etc/sysconfig/network-scripts/ifcfg-eth0:2
/etc/sysconfig/network-scripts/ifcfg-eth1
/etc/sysconfig/network-scripts/ifcfg-lo

>Есть несколько выходов, но самый правильный из них скорее всего тот который
>описан в доках, а именно
>указать в /etc/sysconfig/network
>GATEWAYDEV=eth0
>и перезапустить сеть для проверки.

Выход один, и с таким вариантом дефолтный роут прописался странным образом без шлюза (сеть отвалилась):

195.xx.xx.16/28 dev eth0  proto kernel  scope link  src 195.xx.xx.18
169.254.0.0/16 dev eth0  scope link
default dev eth0  scope link

>Честно не знал этого, но после того как прошелся по скрипту /etc/sysconfig/network-scripts/ifup-eth
>посиком по слову GATEWAY, нашел то что надо, ну а потом
>еще посмотрел параметры в /usr/share/doc/initscripts-${VERSION}/sysconfig.txt
>И все стало понятно.
>
>
>ЗЫ. Хотя наверное стоило послать к доке.

В общем посмотрел, приблизился немного к разгадке.... роут переписывается в /etc/sysconfig/network-scripts/ifup-aliases вот в этом месте (смотрел через test code):

                       if [ -n "${GATEWAY}" -a \
                               \( -z "${GATEWAYDEV}" -o "${GATEWAYDEV}" = "${DEVICE}" \) ]; then
                               # set up default gateway, if it isn't already there
                               if ! is_default_gateway "$GATEWAY"; then
                                       route add default gw ${GATEWAY} \
                                           ${METRIC:+metric $METRIC} ${DEVICE}
                                       ##-- test code --##
                                       echo route add default gw ${GATEWAY} \
                                           ${METRIC:+metric $METRIC} ${DEVICE}
                                       echo `ip ro ls`
                                       ##-- test code --##
                               fi
                       fi


Но вот только, почему такое происходит, пока мне не понятно... на других серверах схожие настройки, IP только разные - все работает как надо и нет этого SRC в роуте?!


"Что за src 195.xx.xx.20 у меня в default route?"
Отправлено zeiter , 03-Мрт-10 00:44 
>
>ЗЫ. Хотя наверное стоило послать к доке.

Может и надо было, хотя в доках неоднозначно... убрал NETWORK из конфига:

#cat ifcfg-eth0
DEVICE=eth0
HWADDR=00:15:17:9D:A0:12
ONBOOT=yes
TYPE=Ethernet
NETMASK=255.255.255.240
IPADDR=195.xx.xx.18

и все заработало:

# ip ro ls
195.xx.xx.16/28 dev eth0  proto kernel  scope link  src 195.xx.xx.18
169.254.0.0/16 dev eth0  scope link
default via 195.xx.xx.17 dev eth0


Хотя при этом здесь http://www.cyberciti.biz/faq/linux-creating-or-adding-new-ne... вариант показан с NETWORK

В мане http://wiki.centos.org/HowTos/ManualInstall тоже ссылка на ifcfg-lo:

Networking

Take a look at /etc/sysconfig/network-scripts/ See ifcfg-lo for an example.

В котором так же есть NETWORK:

DEVICE=lo
IPADDR=127.0.0.1
NETMASK=255.0.0.0
NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback

Что за глюк?


"Что за src 195.xx.xx.20 у меня в default route?"
Отправлено McLeod095 , 03-Мрт-10 10:56 
>[оверквотинг удален]
>IPADDR=127.0.0.1
>NETMASK=255.0.0.0
>NETWORK=127.0.0.0
># If you're having problems with gated making 127.0.0.0/8 a martian,
># you can change this to something else (255.255.255.255, for example)
>BROADCAST=127.255.255.255
>ONBOOT=yes
>NAME=loopback
>
>Что за глюк?

Вот что в доках

  Base items being deprecated:
    NETWORK=<will be calculated automatically with ipcalc>
    BROADCAST=<will be calculated automatically with ipcalc>

Во всяком случае так в CentOS5.4


"Что за src 195.xx.xx.20 у меня в default route?"
Отправлено zeiter , 03-Мрт-10 12:10 
>
>Вот что в доках
>
>  Base items being deprecated:
>    NETWORK=<will be calculated automatically with ipcalc>
>    BROADCAST=<will be calculated automatically with ipcalc>
>
>Во всяком случае так в CentOS5.4

Благодарю за помощь. Без наводки, думаю, еще не скоро разобрался бы.

Надо бы им пример с lo0 подправить.... убрать от туда лишние параметры.


"Что за src 195.xx.xx.20 у меня в default route?"
Отправлено aaaaaaaaaaaaaaa , 03-Мрт-10 13:33 
>Надо бы им пример с lo0 подправить.... убрать от туда лишние параметры.
>

не надо

#ipcalc  --netmask 192.168.147.18
NETMASK=255.255.255.0
(a ne 255.255.255.240 )
#ipcalc  -b 192.168.148.18 255.255.255.0
BROADCAST=192.168.148.255
# ipcalc  -b 192.168.148.18 255.255.255.240
BROADCAST=192.168.148.31


"Что за src 195.xx.xx.20 у меня в default route?"
Отправлено zeiter , 03-Мрт-10 15:35 
>
>#ipcalc  --netmask 192.168.147.18
>NETMASK=255.255.255.0
>(a ne 255.255.255.240 )
>

Чего-то не к месту, имхо, Ваш пост o_O. У меня подсеть /28, а не /24 и соответственно Netmask:   255.255.255.240.

В ifup-eth идет проверка же по ipcalc --network ${GATEWAY} ${NETMASK}

#grep ipcalc /etc/sysconfig/network-scripts/ifup-eth

if [ -n "${GATEWAY}" -a "`ipcalc --network ${GATEWAY} ${NETMASK} 2>/dev/null`" = "NETWORK=${NETWORK}" ]; then

Вот мой расчет

# ipcalc --network 192.168.147.17 255.255.255.240
NETWORK=192.168.147.16


Ваш же пример показывает дефолтную маску подсети класса C (NETMASK=255.255.255.0):

# ipcalc --help
Usage: ipcalc [OPTION...]
  -c, --check         Validate IP address for specified address family
  -4, --ipv4          IPv4 address family (default)
  -6, --ipv6          IPv6 address family
  -b, --broadcast     Display calculated broadcast address
  -h, --hostname      Show hostname determined via DNS
  -m, --netmask       Display default netmask for IP (class A, B, or C)
  -n, --network       Display network address
  -p, --prefix        Display network prefix
  -s, --silent        Don't ever display error messages

Help options:
  -?, --help          Show this help message
  --usage             Display brief usage message



"Что за src 195.xx.xx.20 у меня в default route?"
Отправлено aaaaaaaaaaaaaaa , 03-Мрт-10 16:00 
>Может и надо было, хотя в доках неоднозначно... убрал NETWORK из конфига

прочитал  как  NETMASK :)