[linux] ifconfig

sergey_m

Дано: RedHat Linux 9. man ifconfig прочитал.
В машине три сетевухи, только одна воткнута в свитч. Не смог понять как определить, есть на сетевой карте линк или нет. Приходится действовать перебором.
Пишу: ifconfig eth0 81.19.x.y/24 Получаю: broadcast 81.255.255.255, netmask 255.0.0.0. Хорошо, что IP адрес правильный! Еще раз смотрю man и понимаю, что CIDR синтаксис не поддерживается, что само по себе ацтой. Но почему тогда команда выполнилась без ошибки? Окей, пишу: ifconfig eth0 81.19.x.y netmask 255.255.255.0. Работает, но broadcast по прежнему 81.255.255.255.
С первого раза я не угадал интерфейс, поэтому теперь надо попробовать eth1. Но сначала надо удалить этот адрес с eth0. Привычной командой это не получается сделать. Смотрю в man. Нахожу способ удалять IPv6 адреса, не нахожу способа удалять IPv4 адреса. Ахуеть! Но мне же надо как-то отказаться от этого адреса. Тогда делаю ifconfig eth1 down. Интерфейс исчезает. Такого я еще не видел ни в одной ОС.
Вывод: fedechka, прости, что я над тобой стебался. И теперь я больше не смеюсь над одменами, которые меняя IP адрес в линукс выполняют перезагрузку.
* ifconfig(8)

Chupa

> сначала надо удалить этот адрес с eth0
> Тогда делаю ifconfig eth1 down.
Интересный способ.
> Интерфейс исчезает.
- Суслика видишь?
- Нет
- А он есть
Это "исчезает" описано в man. Там же сказано, что делать, чтобы не "исчезало".

sergey_m

> Интересный способ.
Покажи правильный.

Chupa

Покажу работающий, если расскажешь, как отключение eth1 должно было повлиять на адрес eth0.

sergey_m

Мне нужно удалить локальный маршрут на 81.19.x.0/24 с интерфейса eth0. В обычными операционных системах это делается удалением IP адреса из этой сети с этого интерфейса. В операционной системе линукс не понятно как удаляется IP адрес. Однако, имея опыт работы с обычными операционными системами я знаю, что изменив административный статус интерфейса из Up в Down я также достигну нужного эффекта - удаления локального маршрута.
Удалить локальный маршрут мне нужно для того, что бы затем создать его заново, но только с адресом на eth1 и соответственно сам маршрут будет указывать в eth1.

Chupa

> Мне нужно удалить локальный маршрут на 81.19.x.0/24 с интерфейса eth0.
> В обычными операционных системах это делается удалением IP адреса из этой сети с этого интерфейса.
Маршрут можно удалить и без опускания интерфейса.
> я знаю, что изменив административный статус интерфейса из Up в Down я также достигну нужного эффекта - удаления локального маршрута.
Имелось ввиду всё-таки опускание eth0?
Обещаный cheat code: ifconfig eth0 0.0.0.0

janlynn

ifconfig eth0 0.0.0.0
это типо нормальный спосоп ?

sergey_m

> Маршрут можно удалить и без опускания интерфейса.
Адрес с маской останутся на интерфейса, а маршрут исчезнет? Если так, то это не правильно.
> Обещаный cheat code: ifconfig eth0 0.0.0.0
Ахуеть!

Chupa

>> Маршрут можно удалить и без опускания интерфейса.
> Адрес с маской останутся на интерфейса, а маршрут исчезнет?
> Если так, то это не правильно.
Это правильно и используется в нестандартных конфигурациях.
В общем случае нет причин считать, что на компы, доступные непосредственно через некоторый интерфейс нужно всегда идти именно через него. А чтобы нормально уходили ответы в сегмент, можно использовать правила и дополнительные таблицы маршрутизации.

sergey_m

> В общем случае нет причин считать, что на компы, доступные непосредственно через некоторый интерфейс нужно всегда идти именно через него.
Верно.
> А чтобы нормально уходили ответы в сегмент, можно использовать правила и дополнительные таблицы маршрутизации.
Всё что угодно дополнительное - пожалуйста. Но если есть broadcast интерфейс, каковым является Ethernet, и на нём есть IP адрес и маска отличная от /32, то этот маршрут должен присутствовать.

Marinavo_0507

> Но если есть broadcast интерфейс, каковым является Ethernet,
> и на нём есть IP адрес и маска отличная от /32,
> то этот маршрут должен присутствовать.
Так не удаляй маршрут, и он будет.
Правильная команда для настройки адресов и маршрутов называется ip, c её помощью то, что ты хочешь, делается без шаманства.
ifconfig и route поддерживают не все возможности ядра, и оставлены для совместимости хз с чем.

sergey_m

ifconfig и route поддерживают не все возможности ядра, и оставлены для совместимости хз с чем.
Об этом не написано в man. Эти команды не печатают warning.

Marinavo_0507

man устаревший, напиши патч
Оставить комментарий
Имя или ник:
Комментарий: