понедельник, Апрель 28, 2008

Простая настройка сетевого интерфейса в Линукс: как быстро настроить сетевую карту в Linux

Несмотря на то, что во многих современных дистрибутивах есть красивые графические утилиты по настройке сетевой карты, в ряде случаев проще настроить всё руками в конфигах. Это очень просто - вписать несколько строчек в нужные конфиги.


Как посмотреть текущие настройки сетевой карты в Линукс
Просмотреть текущие настройки можно, набрав в консоли с привилегиями рута команду:

# ifconfig
или
sudo ifconfig
В результате в консоль будет выдано что-то вроде:

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:104 errors:0 dropped:0 overruns:0 frame:0
TX packets:104 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:9387 (9.1 KiB) TX bytes:9387 (9.1 KiB)

eth0 Link encap:Ethernet HWaddr 00:0A:E4:53:AA:2D
inet addr:192.168.1.5 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:21 Base address:0x2c00

Отсюда видно, что настроены два сетевых интерфейса: петлевой (loopback) под названием lo, и обычная сетевая карта (которая Ethernet) называемая eth0. Причём если в интерфейс eth0 вставлен сетевой провод, идущий в свитч, будет написано RUNNING, то есть:
inet addr:192.168.1.5 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20e:2eff:feec:ef9f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Простая настройка сетевого интерфейса возможна командой:
ifconfig eth0 192.168.1.5

Чтобы заглушить сетевой интерфейс, набираем:
ifdown eth0


Настройка сетевого соединения в Линукс
Для этого потребуются права администратора и текстовый редактор (nano, vim, emacs, ваш_любимый_редактор_здесь). Так же нужно представлять, какой IP-адрес следует присвоить сетевой карте, адрес шлюза и прочие параметры.

Сначала нужно выяснить, как называется сетевой интерфейс, соответствующий вашей сетевой карте. Делается это так: в консоли пишем
dmesg | grep -i Eth
В результате должны получить что-то вроде (выделение моё):
8139too Fast Ethernet driver 0.9.28
eth0: RealTek RTL8139 at 0xdf822c00, 00:15:f2:51:ad:da, IRQ 21
eth0: Identified 8139 chip type 'RTL-8101'
Так, похоже, что называется он eth0 (потому, что ethernet, 0 - нулевое устройство - довольно логично). В этом примере дальше будет предполагаться, что интерфейс - eth0.


Настройка сетевого соединения со статическим IP
Для этого следует отредактировать файл:
# nano /etc/network/interfaces
или
sudo nano /etc/network/interfaces
Перед тем, как его править, следует решить, какой IP-адрес назначается машине. Если вы подключаетесь к уже настроенной сети - хорошо бы посмотреть, какие настройки есть там. Например, если подключение происходит к CorvettTelecom, настройки вам дадут. Если же сеть самопальная, например из двух компьютеров, нижеследующий пример подойдёт.

В общем, при назначении статических адресов нужно указать: IP-адрес (address), маску подсети (netmask) и адрес шлюза (gateway). Для локальной сети файл /etc/network/interfaces нужно изменить так:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.1.5
netmask 255.255.255.0
gateway 192.168.1.1
В этом примере назначен IP-адрес 192.168.1.5.


Настройка сетевого соединения с динамическим IP
Редактируем тот же файл, отвечающий в Линукс за сетевые настройки:
# nano /etc/network/interfaces
или
sudo nano /etc/network/interfaces
Здесь всё проще: нужно лишь привести файл к виду:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Так же можно настроить и из консоли:
#dhcpcd eth0
Для этого в системе должен быть установлен пакет dhcp3-client

Два слова о беспроводных сетях
Чтобы изменить тип интерфейса
wlanconfig ath0 destroy
wlanconfig ath0 create wlandev wifi0
wlanmode adhoc
Для того, чтобы посмотреть список сетей, набираем:
iwlist ath0 scan
или
wlanconfig ath0 list ap
Если есть открытая сеть и нужно к ней подключиться, набираем от рута:
iwconfig ath0 essid SomeESSID
Для того, чтобы соединение шифровалось с использованием WEP, пишем:
iwconfig ath0 key ...
Больше о беспроводных сетях говорилось тут.

Настройка адресов серверов имён (DNS, nameserver)
Если вы не настроите это, то сможете подключаться к ресурсам сети только по IP-адресам, что несколько неудобно. Для того, чтобы в Линукс прописать адреса серверов имён (DNS address), нужно отредактировать файл /etc/resolv.conf или создать его, если его нет.
# nano /etc/resolv.conf
или
sudo nano
/etc/resolv.conf
И прописать адреса следующим образом:
nameserver 192.168.1.1
nameserver 192.168.2.1
столько, сколько их нужно. Слово nameserver добавлять обязательно.


Чтобы изменения настройки сетевых интерфейсов вступили в силу...
... можно перезагрузиться, но это не наш метод. Без перезагрузки следует дать команду:
# /etc/init.d/networking restart
или
sudo /etc/init.d/networking restart
Всё, после этого настойки вступают в силу для всех сетевых интерфейсов.


Заключение
Это позволит достаточно легко настроить простую локальную сеть.
Как сменить MAC-адрес на сетевой карте, говорится там. Если требуется настроить GRPS под Линуксом, читаем это. При настройке VPN-соединений в Linux, толковые руководства есть по Корбине и ещё одно про корбину, по PPPoE тут и ещё одно. Остальное можно найти тут.

Копируете статью - поставьте ссылку на оригинал!

29 комментариев:

Анонимный комментирует...

Очень хорошо. Не лишне было бы добавить, как не только"поднимать", но и "убивать" сетевые интерфейсы %)
(Зачем? Положим eth0 мешает ath0)

michael_ul комментирует...

Плохому учите :) Морально устаревшему ifconfig вместо более продвинутого ip. Ну и /etc/network/interfaces это фишка дебиана. У меня, например, его нет.

To anonymous:
ip link set down eth0
Только зачем? Если eth0 "мешает" ath0, значит что-то вы делаете не так.

koct9i комментирует...

при совмещение динамических и статических интерфейсов может пригодится пакет resolvconf -- dns прописываются в interfaces и resolv.conf обновляется автоматически.

да и вообще эта система хуков /etc/network/if-*.d (через которую всё это работает) очень гибкая и через неё можно прикрутить настройку любых фичей: bridge, vlan, wifi, qos, и любой извращённый роутинг.

HoverHell комментирует...

michael_ul:
А можно поподробнее про моральное устаревание и преимущества? :)
Хотя ip route вместо route использую - несколько удобнее ибо.

michael_ul комментирует...

To HoverHell:
Поддержка таких фич, как политики маршрутизации (нужно, например, если в инет два канала ведут), шейпинг тот же. Сами команды удобнее, хотя это и не сразу понятно. Например, сделать несколько адресов на одном интерфейсе удобнее с ip addr, чем с ifconfig. Конечно, для обычной ситуации ifconfig/route вполне достаточно, но какой в них смысл, если есть более мощный и удобный инструмент.

Ilya Brik комментирует...

Ещё один немаловажный момент, особенно для тех, у кого несколько сетевых карточек на компьютере:
на подключенной карточке будет написано RUNNING. Примерно вот так:
wlan1 Link encap:Ethernet HWaddr 00:0e:2e:ec:ef:9f
inet addr:192.168.1.5 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20e:2eff:feec:ef9f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4849503 errors:0 dropped:0 overruns:0 frame:0
TX packets:4206185 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000

Кривенков Андрей Александрович комментирует...

как вариант для того, чтобы не убивать и потом поднимать все интерфейсы можно использовать ifdown eth0 и ifup eth0

virens комментирует...

Ух, сколько вы успели написать, друзья! :-)

2 Анонимный пишет...
Не лишне было бы добавить, как не только"поднимать", но и "убивать" сетевые интерфейсы
Дельное замечание. Внёс в TODO-list.

2 michael_ul пишет...
Плохому учите :)
Ничему не учу, а говорю про то, как сам делаю. ifconfig меня всем устраивает.

Ну и /etc/network/interfaces это фишка дебиана. У меня, например, его нет.
Хм, интересно, не знал. Буду иметь в виду.

ip link set down eth0
Только зачем?

Иногда требуется, например, временно заглушить соединение с интернетом.

2 koct9i пишет...
при совмещение динамических и статических интерфейсов может пригодится пакет resolvconf
Надо будет добавить в пост. Спасибо!

2 michael_ul пишет...
Поддержка таких фич, как политики маршрутизации
Товарищи, "только песня совсем не о том" :-) Пост о ПРОСТОЙ настройке, а то меня уже достали письмами "как мне сеть поднять".

2 Ilya Brik пишет...
Ещё один немаловажный момент, особенно для тех, у кого несколько сетевых карточек на компьютере:
на подключенной карточке будет написано RUNNING.

Дельное замечание, надо будет добавить. Большое спасибо!

Большое спасибо за отзывы. Как только разберусь с текущими делами, дополню пост. Имена героев соц.труда вынесу на доску почёта :-)

h4tr3d комментирует...

К примеру в ArchLinux для настройки нужно редактировать центральный файл конфигурации /etc/rc.conf, ну и в Дебиане есть небольшая трабла, перед тем как записать изменения для интерфейса в /etc/network/interfaces нужно остановить данный интерфейс, а после снова поднять. Это меня больше всего и бесит :(

Анонимный комментирует...

Хотелось бы увидеть о настройке wifi ...

HoverHell комментирует...

>>Хотелось бы увидеть о настройке wifi ...

Всякие networkmanager'ы у меня на ноуте не прижились, так что...
...так что выглядит оно вот так:
# Изменить тип интерфейса
wlanconfig ath0 destroy; wlanconfig ath0 create wlandev wifi0 wlanmode adhoc
# варианты кроме adhoc - см. man wlanconfig по AVAILABLE MODES

# посмотреть список сетей:
iwlist ath0 scan
# или
wlanconfig ath0 list ap

# Подключиться к открытой сети:
iwconfig ath0 essid SomeESSID

WEP-шифрование - iwconfig ath0 key ...
WPA-шифрование делается через wpa-supplicant

Sereg@ комментирует...

Великолепная статья, спасибо Михаил!

P.S. у вас опечатка в заголовке: "интерфеса" :)

virens комментирует...

2 h4tr3d пишет...
в Дебиане есть небольшая трабла, перед тем как записать изменения для интерфейса в /etc/network/interfaces нужно остановить данный интерфейс, а после снова поднять.
Это не баг, а фирменная фича :-)

2 HoverHell пишет...
...так что выглядит оно вот так:
# Изменить тип интерфейса
wlanconfig ath0 destroy;

HoverHell, огромное тебе человеческое спасибо! Обязательно добавлю это в пост!

2 Sereg@ пишет...
Великолепная статья, спасибо Михаил!
Я старался :-) Да и комментаторы тут сильно приложили руку.

у вас опечатка в заголовке: "интерфеса" :)
Большое спасибо - слона-то я и не приметил. Исправлено.

HoverHell комментирует...

>>wlanconfig ath0 destroy
Я ещё тут вспомнил, что iwconfig тоже имеет параметр mode..
Просто у меня там Ad-Hoc не удалось поставить из-за драйвера :)

Анонимный комментирует...

про роуты не чего не сказано (

Маргарита комментирует...

Читала пост, потом столько же читала коментарии))) Думаю что стоит добавить полезные вырезки из коментов в сам пост, например такую: ">>Хотелось бы увидеть о настройке wifi ... и дальше написано про это". Спасибо за хорошоее объяснение!

Shortbread комментирует...

У меня вот такой вопрос: как сделать так, чтобы eth0 не поднимался на старте системы? А то приходится вручную его глушить.
Глушу из-за того, что поднятом eth0 не получается выйти в инет по GPRS. Соединение идёт, но пакеты где-то в роутинге путаются.

HoverHell комментирует...

Shortbread: Вообще, при старте системы поднимаются интерфейсы, помеченные auto в /etc/network/interfaces (кроме auto ещё, кажется, параметр dhcp может быть... Хотя, скорее, нет)
С другой стороны, у меня на ноутбуке скрипт перед запуском pppd для соединения с gprs просто тихо и незаметно удаляет дефолтный роут ("ip route del default 2>/dev/null || true" :) )
Ну и у pppd прописано defaultroute и usepeerdns.

Shortbread комментирует...

Нет у мня в /etc/network/interfaces записей auto про eth0, единственное, к чему придраться можно - allow-hotplug eth0. А насчёт скрипта - я уже думал, да потом просто прописал в автозапуск гному sudo ifconfig eth0 down.
А сейчас вот думаю - а какого я просто не отключу встроенную сетевуху через биос? Всё равно у меня сети нет и не предвидится? :)

HoverHell комментирует...

>>allow-hotplug eth0
Если я правильно вкурил man, при этой опции eth0 поднимается только при втыкании кабеля (если сетевая карта способна это определять)...
А отключать в биосе - особого смысла нет также.
Хотя, конечно, интересно, почему gprs-соединение может конфликтовать с сетевым интерфейсом. Или в interfaces на него прописан gateway, или чего-то мне интересно узнать. :)

Анонимный комментирует...

Simple Wireless:

aptitude install wpasupplicant, wireless-tools;

Для Atheros карт ручками:
make madwifi;

Для ipw2200:
http://ipw2200.sourceforge.net/firmware.php
в каталог /lib/firmware/

/etc/network/interfaces:

iface ethX(athX) inet dhcp
wireless-essid WirelessNet
wpa-ssid "WIrelessNet"
wpa-psk "Secret_Phrase"
Тип шифрование определяется сам:
WPA, WPA2, TKIP ...

Анонимный комментирует...

замечательная статья, только ссылка в самом конце про GPRS и линукс ведет не туда (ведет на смену MAC-адреса). спасибо.

Анонимный комментирует...

в Дебиане есть небольшая трабла, перед тем как записать изменения для интерфейса в /etc/network/interfaces нужно остановить данный интерфейс, а после снова поднять. Это меня больше всего и бесит :(
собсно, возможно речь идёт именно о дебиане, т.к. в убунту я спокойно правлю /etc/network/interfaces с поднятыми интерфейсами, а только потом делаю /etc/init.d/networking restart и всё прекрасно получается...

bartelby комментирует...

да и в дебиане
не замечал такой проблемы

Эльдар Курбанов комментирует...

ну раз уж написал про ifdown eth0, можно написать и про ifup eth0, для его поднятия =)
хотя в случае одной карточки можно использовать и
# /etc/init.d/networking restart, последовательно запускающий ifdown и ifup для всех интерфейсов, кроме lo

medvesonok комментирует...

Благодаря вашей статье настроил беспроводное соединение, которое не работало уже в течении нескольких последних ядер, приходилось пользоваться ethernet. Hо головокружение от успехов не успело наступить, так как после перезагрузки беспроводное опять пропало, осталось только то, что по веревке! Настроил снова, и опять после выключения та же история.
Причем пропало и соединение по веревке! Опять настроил... Сравнивая данные из dmesg iwconfig ifconfig я обнаружил, что при каждой загрузке ядро называет беспроводную карту по очереди eth0 -wifi0-eth2-wifi0-eth3, при этом ethernet-карта становится, в свою очередь, eth1-eth0-eth2-eth0

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

2.Мне кажется, надо бы осветить этот момент, как вручную поправить конфиг (и какой именно, кроме interface), чтобы не тренироваться каждый раз.

3.По аналогии, настроил также звуковую карту, у которой ползунки были выключены в окне менеджера, а после освобождения их в среднее положение звука все равно не было!
Помогла ручная правка конфигурации esd. Но после выключения происходит все та же история - ползунки опять сбрасываются в положение mute, правда, конфиг править уже не приходится, достаточно их в окне поставить, как надо. Но, наверное, есть тоже еще один конфиг, благодаря которому ползунки сбрасываются. А в том дистре, которым я пользовался год назад, такой необходимости настройки после каждой перезагрузки не было. Это, конечно, еще один плюс того старого дистрибутива. Но хочется узнать, как вы поступили, чтобы настройки были окончательными, в том и другом случае?

Aydar комментирует...

Спасибо! Избавился наконец-то от NetworkManager'а

Анонимный комментирует...

помогите плиз!!!! есть такой трабл, не наю, что с ним делать. каждый раз при перегрузки системы меняется сетевой интерфейс на +1...был eth0 стал eth1 и так далее.... помогите плиз..

Анонимный комментирует...

СПАСИБО ЧЕЛОВЕЧЕСКОЕ

Отправить комментарий