Приветствую!На 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'е? Как его убрать?
>[оверквотинг удален]
>
># 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 до просветления мозга.
>Х** его знает. Вы наконфигурили так, видимо. Вот и берется.Да ничего специально не делалось такого, что могло привести к такому результату.
>> Как его убрать?
>
>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 берется, видимо из того факта, что шлюз находится в подсети eth0:0
Можете попробовать сделать:ip ru add default via 195.xx.xx.17 dev eth0 src eth0_ip
Раньше 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Проверю конечно!
>Если поменять местами, т.е. сделать
>
>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 берется, видимо из того факта, что шлюз находится в подсети eth0:0
>Может ли подстановка src быть вызвана такими внешними факторами, как: управляемый свитч и/или роутер?
>Может ли подстановка src быть вызвана такими внешними факторами, как: управляемый свитч
>и/или роутер?Сдается мне - нет, т.к. с отключенным на свитче портом, после ребута картина та же!
>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?
>[оверквотинг удален]
>#
># 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
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
>cat /etc/sysconfig/networkNETWORKING=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=EthernetIPADDR=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:0IPADDR=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 ничего нет.
>[оверквотинг удален]
>
>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
И все стало понятно.
ЗЫ. Хотя наверное стоило послать к доке.
>Ну в общем читать доки по редхату (сам довольно таки недавно многого
>чего не знал). Ну и читать 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 в роуте?!
>
>ЗЫ. Хотя наверное стоило послать к доке.Может и надо было, хотя в доках неоднозначно... убрал 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Что за глюк?
>[оверквотинг удален]
>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
>
>Вот что в доках
>
> Base items being deprecated:
> NETWORK=<will be calculated automatically with ipcalc>
> BROADCAST=<will be calculated automatically with ipcalc>
>
>Во всяком случае так в CentOS5.4Благодарю за помощь. Без наводки, думаю, еще не скоро разобрался бы.
Надо бы им пример с lo0 подправить.... убрать от туда лишние параметры.
>Надо бы им пример с 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
>
>#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-ethif [ -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 messagesHelp options:
-?, --help Show this help message
--usage Display brief usage message
>Может и надо было, хотя в доках неоднозначно... убрал NETWORK из конфигапрочитал как NETMASK :)