Differences between revisions 9 and 10
Revision 9 as of 2013-08-05 13:34:00
Size: 23144
Editor: DarkErr
Comment:
Revision 10 as of 2013-08-05 14:06:10
Size: 23195
Editor: DarkErr
Comment:
Deletions are marked like this. Additions are marked like this.
Line 23: Line 23:
Line 56: Line 55:
  * Если ни одна из них не поддерживается, то Вы можете попробовать установить параметры напрямую в модуле драйвера ядра. Определить какой драйвер у Вас используется можно из вывода команд `dmesg` и `lsmod`. Вы можете попробовать выполнить `modinfo MODULENAME` что бы узнать возможные параметры. (можно использовать `modinfo` даже если модуль не загружен) ''ToDo: where does one set kernel module parameters?''   * Если ни одна из них не поддерживается, то Вы можете попробовать установить параметры напрямую в модуле драйвера ядра. Определить какой драйвер у Вас используется можно из вывода команд `dmesg` и `lsmod`. Вы можете попробовать выполнить `modinfo MODULENAME` что бы узнать возможные параметры. (можно использовать `modinfo` даже если модуль не загружен)  ''ToDo: where does one set kernel module parameters?''
Line 60: Line 59:
Line 62: Line 62:
 {{{
 iface eth0 inet static
        address ...
  netmask ...
        gateway ...
  up sleep 5; ethtool -s eth0 ...
 }}}
{{{
iface eth0 inet static
       address ...
       netmask ...
       gateway ...
       up sleep 5; ethtool -s eth0 ...
}}}
Line 76: Line 76:
Line 80: Line 81:
    pre-up ifconfig $IFACE up
    post-down ifconfig $IFACE down
   pre-up ifconfig $IFACE up
   post-down ifconfig $IFACE down
Line 88: Line 89:
Библиотека C и другие библиотеки за списком серверов имён обращаются к файлу {{{/etc/resolv.conf}}}. В простейшем случае Вы можете отредатировать этот файл, записав в него список серверов имён. Но, следует отметить, что различные программы динамической конфигурации будут рады переписать ваши настройки: Библиотека C и другие библиотеки за списком серверов имён обращаются к файлу {{{/etc/resolv.conf}}}. В простейшем случае Вы можете отредактировать этот файл, записав в него список серверов имён. Но, следует отметить, что различные программы динамической конфигурации будут рады переписать ваши настройки:
Line 96: Line 97:
#In the most complex situations, using '''{{{resolvconf}}}''' really is the way to go, though in more simple configurations it is probably overkill.

В более сложных ситуациях, использование '''{{{resolvconf}}}''' это наиболее правильный путь, но для простых конфигураций он избыточен.
В более сложных ситуациях, более правильным будет использование программы '''{{{resolvconf}}}''', но для простых конфигураций она избыточена.
Line 102: Line 101:
Конфигурационный файл '''{{{resolv.conf}}}''' располагается в {{{/etc/resolv.conf}}, и содержит информацию которая позволяет компьютеру подсоединяться к сети преобразовывать имя в адрес. (Прим. Не путайте этот ''конфигурационный файл'' с ''программой'' '''{{{resolvconf}}}''', которая по неудачному стечению обстоятельств имеет такое же название.)
Конфигурационный файл '''{{{resolv.conf}}}''' располагается в {{{/etc/resolv.conf}}}, и содержит информацию которая позволяет компьютеру подсоединяться к сети преобразовывать имя в адрес. (Прим. Не путайте этот ''конфигурационный файл'' с ''программой'' '''{{{resolvconf}}}''' , которая по неудачному стечению обстоятельств имеет такое же название.)
Line 108: Line 106:
nameserver 12.34.56.78
nameserver 12.34.56.79
  nameserver 12.34.56.78
  nameserver 12.34.56.79
Line 114: Line 112:
'''Не используйте этот метод если у Вас установлена программа'''{{{resolvconf}}}''' '''



The '''{{{resolv.conf}}}''' configuration file has many other options for defining how resolver looks up names. See '''{{{man resolv.conf}}}''' for details.

== The resolvconf program ==
The '''{{{resolvconf}}}''' program keeps track of system information about the currently available nameservers. It should not be confused with the ''configuration file'' '''{{{resolv.conf}}}''', which unfortunately has a nearly identical name. The '''{{{resolvconf}}}''' program is optional on a Debian system.
'''Не используйте этот метод если у Вас установлена программа '''{{{resolvconf}}}''' '''

Конфигурационный файл '''{{{resolv.conf}}}''' имеет множество других опций для определения режимов преобразования имён. См. '''{{{man resolv.conf}}}'''.

== Программа resolvconf ==
Программа '''{{{resolvconf}}}''' следить за информацией о доступных на данных момент серверов имён. Не следует путать её с одноимённым конфигурационным файлом '''{{{resolv.conf}}}'''. Программа '''{{{resolvconf}}}''' является опциональной для систем Дебиан.

Translation(s): English - Français - Italiano - 简体中文


Reader Prerequisites: Для понимания этой статьи необходимо умение работать с консольными инструментами, тестовыми редакторами, понимание основ DNS, TCP/IP, DHCP, netmask, gateway.

Table of Contents

Настройка интерфейса Ethernet

Основную настройку сети можно выполнить, редактируя конфигурационный файл interfaces, который располагается в /etc/network/interfaces. Здесь Вы можете задать IP адресс сетевой карты (или использовать DHCP), настроить маршрутизацию, IP masquerading, установить маршрут по умолчанию и многое другое.

Для того что бы интерфейс автоматически инициализировался при загрузке, не забудьте добавить строчку 'auto'.

Полный список опций можно найти в man interfaces.

Автоматическое конфигурирование интерфейса с использованием DHCP

Если Вы хотите использовать DHCP вам необходимо написать следующие:

    auto eth0
    allow-hotplug eth0
    iface eth0 inet dhcp

Ручное конфигурирование интерфейса

Если Вы хотите сконфигурировать вручную, например задать шлюз по умолчанию (так же опционально можно задать: сеть, широковещательный адрес или шлюз):

    auto eth0
    iface eth0 inet static
        address 192.168.0.7
        netmask 255.255.255.0
        gateway 192.168.0.254

Если вы хотите добавить IPv6 адрес, то напишете следующие:

    iface eth0 inet6 static
        address 2001:db8::c0ca:1eaf
        netmask 64
        gateway 2001:db8::1ead:ed:beef

Полный список опций можно найти в man interfaces.

Настройка скорости и дуплекса

Частые ошибки автоматического согласования режимов работы, свидетельствуют о проблемах с кабелем. Следует проверить физическое состояние кабельного оборудования (отсутствие повреждений итп), прежде чем предполагать несовместимость алгоритмов автосогласования. Если Вы выключите автосогласование и установите скорость и дуплекс вручную, то интерфейс на другом конце кабеля будет считать что автосогласование не поддерживается и установит скорость 10Mbs и полудуплексный режим передачи. Для того чтобы не было ошибок в работе, при ручной настройки Вам необходимо убедиться что оба интерфейса работают на одинаковых скоростях и установлен одинаковый режим дуплекса.

Если Вы хотите вручную установить скорость и режим дуплекса интерфейса. Здесь описаны основные шаги:

  • установите пакеты ethtool и net-tools, так вы получите программы ethtool и mii-tool. Одна или обе из них могут работать с Вашим интерфейсом.

  • Убедитесь что у Вас есть запасной вариант доступа к системе, на случай если сеть перестанет работать и ?ssh соединение будет не доступно.

  • Определите интерфейс, который Вы будете настраивать (чаше всего это eth0) и замените в следующих командах eth0 на Ваш интерфейс.
  • Попробуйте определить текущую скорость и режим дуплекса.
    • Для начала выполните, как root ethtool eth0, и Вы увидите строчки "Speed:" и "Duplex:", если нет то ethtool возможно не поддерживает Ваше устройство.

    • Попробуйте выполнить как root mii-tool -v eth0 и убедиться, что вывод выглядит правильно. Если нет, то mii-tool не поддерживает ваше устройство

    • Если ни одна из них не поддерживается, то Вы можете попробовать установить параметры напрямую в модуле драйвера ядра. Определить какой драйвер у Вас используется можно из вывода команд dmesg и lsmod. Вы можете попробовать выполнить modinfo MODULENAME что бы узнать возможные параметры. (можно использовать modinfo даже если модуль не загружен) ToDo: where does one set kernel module parameters?

  • Дальше, попробуйте изменить настройки используемого интерфейса. Вам необходимо быть root:
    • ethtool -s eth0 autoneg off speed 100 duplex full (задаёт 100 Mbps и full duplex)

    • mii-tool -F 100baseTx-FD eth0 (same assumption)

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

  • Если одна из этих команд успешно настроила Вашу сетевую карту, можно добавить эти параметры в /etc/network/interfaces чтобы они применялись во время загрузки при поднятии интерфейса. Однако, перед этим Вам следует понять что некоторые драйвера отличаются от других. Когда модуль драйвера загружен, сетевая карта может начать автосогласование, без какого либо способа остановить его (особенно с драйверами которые не принимают параметры). Параметры из файла interfaces могут применяются в момент, когда автосогласование уже наполовину выполнено. Что бы избежать этого можно добавить задержку выполнения команд ethtool и mii-tool. Например :

iface eth0 inet static
       address ...
       netmask ...
       gateway ...
       up sleep 5; ethtool -s eth0 ...
  • Или аналоги команды mii-tool.

  • Перезагрузите компьютер чтобы убедится что всё работает правильно, и приготовитесь вмешаться (Ctrl-Alt-Del и затем загрузиться в однопользовательском режиме через LILO или GRUB) если что-то не работает.


Переключение интерфейса в режим моста без IP адреса

Чтобы создать сетевой интерфейс без IP адреса используйте ручной метод и команды pre-up и post-down

   iface eth0 inet manual
   pre-up ifconfig $IFACE up
   post-down ifconfig $IFACE down

Задание серверов имён (DNS)

Перед тем как компьютер сможет подключится внешнему сетевому ресурсу (например веб-серверу), он должен преобразовать буквенное-цифровое имя (такое как wiki.debian.org) в числовой адрес сети (например 140.211.166.4). (В Интернет идентификации компьютера в сети используется структурированный числовой IP адрес.)

Библиотека C и другие библиотеки за списком серверов имён обращаются к файлу /etc/resolv.conf. В простейшем случае Вы можете отредактировать этот файл, записав в него список серверов имён. Но, следует отметить, что различные программы динамической конфигурации будут рады переписать ваши настройки:

  1. Программа resolvconf

  2. Демон network-manager

  3. DHCP клиенты

В большинстве ситуаций необходимо отредактировать файлы конфигураций этих программ.

В более сложных ситуациях, более правильным будет использование программы resolvconf, но для простых конфигураций она избыточена.

Конфигурационный файл resolv.conf

Конфигурационный файл resolv.conf располагается в /etc/resolv.conf, и содержит информацию которая позволяет компьютеру подсоединяться к сети преобразовывать имя в адрес. (Прим. Не путайте этот конфигурационный файл с программой resolvconf , которая по неудачному стечению обстоятельств имеет такое же название.)

Файл resolv.conf обычно содержит IP адреса серверов имён (DNS) которые будут пытаться перевести имена в адрес для любого узла доступного в сети. Там будут строчки содержащие, примерно, следующие:

  nameserver 12.34.56.78
  nameserver 12.34.56.79

В этом примере, система исопользует сервера имён с IP адресами 12.34.56.78 и 12.34.56.79. Просто отредактируйте этот файл и введите IP адреса нужных Вам серверов, после слова nameserver. Можно добавить ещё строчки, если у Вас больше 2 серверов имён.

Не используйте этот метод если у Вас установлена программа resolvconf

Конфигурационный файл resolv.conf имеет множество других опций для определения режимов преобразования имён. См. man resolv.conf.

Программа resolvconf

Программа resolvconf следить за информацией о доступных на данных момент серверов имён. Не следует путать её с одноимённым конфигурационным файлом resolv.conf. Программа resolvconf является опциональной для систем Дебиан.

The configuration file resolv.conf contains information about the the nameservers to be used by the system. However, when multiple programs need to dynamically modify the resolv.conf configuration file they can step on each other and the file can become out-of-sync. The resolvconf program addresses this problem. It acts as an intermediary between programs that supply nameserver information (e.g. dhcp clients) and programs that use nameserver information (e.g. resolver).

When resolvconf is properly installed, the resolv.conf configuration file at /etc/resolv.conf is replaced by a symbolic link to /etc/resolvconf/run/resolv.conf and the resolver instead uses the configuration file that is dynamically generated by resolvconf at /etc/resolvconf/run/resolv.conf.

The resolvconf program is generally only necessary when a system has multiple programs that need to dynamically modify the nameserver information. In a simple system where the nameservers do not change often or are only changed by one program, the resolv.conf configuration file is adequate.

If the resolvconf program is installed, you should not edit the resolv.conf configuration file manually as it will be dynamically changed by programs in the system. If you need to manually define the nameservers (as with a static inferface), add a line something like the following to the interfaces configuration file at /etc/network/interfaces:

dns-nameservers 12.34.56.78 12.34.56.79

Place the line indented within an iface stanza, e.g., right after the gateway line. Enter the IP addresses of the nameservers you need to use after dns-nameservers. Put all of them on one line separated by spaces. Don't forget the "s" on the end of dns-nameservers.

The resolvconf program is a fairly new addition to Debian and many older programs need to be updated or reconfigured to work properly with it. If you have problems, see /usr/share/doc/resolvconf/README. It has lots of information on making other programs get along with resolvconf.

DNS configuration for network-manager

Warning: This section has not been tested with an actual network-manager setup. Please test it and remove this notice. Note: This section appears to be applicable to Red Hat like systems and not to Debian like systems since RH systems typically use /etc/sysconfig/network-scripts/ but Debian systems typically do not. The reference to /etc/sysconfig/network-scripts/ifcfg-* is probably not appropriate here.

If you are using NetworkManager, put your settings in /etc/sysconfig/network-scripts/ifcfg-*. Example:

DNS1=127.0.0.1
DNS2=8.8.8.8
DNS3=8.8.4.4

Using the GUI, this means:

  1. Systems menu → Preferences → Network Connections.
  2. Choose a connection (from the Wired or Wireless tab) and click Edit.
  3. Change the Method to something other than “Automatic (DHCP)” in the IPv4 Settings tab. For example, “Automatic (DHCP) addresses only” is likely to be appropriate.
  4. Enter the DNS servers in the “DNS servers” field, separated by spaces.
  5. Click “Apply.”

Note that your DHCP client might override these settings; if so, consider whether to report it as a bug, and see below for the DHCP client configuration.

This section is based on http://code.google.com/speed/public-dns/docs/using.html, which see for details.

DHCP Client Configuration

Example: dhclient3 uses /etc/dhcp/dhclient.conf. The setting you want is

supersede domain-name-servers 12.34.56.78, 12.34.56.79

or perhaps

prepend domain-name-servers 12.34.56.78, 12.34.56.79

See the dhclient.conf(5) manual page for details.

Howto use vlan (dot1q, 802.1q, trunk) (Etch, Lenny)

Manual config

modprobe 8021q

apt-get install vlan

vconfig add eth0 222    # 222 is vlan number
ifconfig eth0.222 up
ifconfig eth0.222 mtu 1496    #optional if your network card doesn't support MTU 1504B
ifconfig eth0.222 10.10.10.1 netmask 255.255.255.0

Caveats when using bridging and vlan

#/etc/network/interfaces
auto eth0 bri0
iface eth0 inet static
        address 192.168.1.1
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
iface eth0.110 inet manual
        vlan-raw-device eth0
iface bri0 inet static
        address 192.168.110.1
        network 192.168.110.0
        netmask 255.255.255.0
        broadcast 192.168.110.255
        bridge_ports eth0.110
        bridge_stp on
        bridge_maxwait 10

If you are using a brigded VLAN setup, which is probably useful for networking in virtualization environments, take care to only attach either a bridge device or VLAN devices to an underlying physical device - like shown above. Attaching the physical interface (eth0) to a bridge (eg. bri1) while using the same physical interface on apparently different VLANs will result in all packets to remain tagged. (Kernel newer than 2.6.37 and older than 3.2).

Network init script config

Into /etc/modules add line:

8021q

In /etc/network/interfaces to section iface add parameter:

        vlan-raw-device eth0

The interface name should be the raw interface name (the same as specified by vlan-raw-device), then a dot, then the VLAN ID, for example eth0.100. It can instead be "vlan" then the VLAN ID, for example vlan100. In either case, the VLAN ID is on the end, and this is the only place that it is configured. Eg:

auto eth0.222
iface eth0.222 inet static
        address 10.10.10.1
        netmask 255.255.255.0
        network 10.10.10.0
        broadcast 10.10.10.255
        vlan-raw-device eth0

Howto create fault tolerant bonding with vlan (Etch)

[ATTACH]

debian_bonding.dia

Howto configure one of the above server active backup bonding 3 vlan {vlan10,vlan20,vlan30} Debian networking without SPOF without native vlan.

aptitude install vlan ifenslave-2.6

Network config

Cisco switch interface example config

interface GigabitEthernet1/2
 description eth1
 switchport
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 10,20,30
 switchport mode trunk
 no ip address
 no cdp enable
 spanning-tree portfast trunk

bonding with active backup

Create a file /etc/modprobe.d/bonding.conf containing:

alias bond0 bonding
options bonding mode=active-backup miimon=100 downdelay=200 updelay=200 primary=eth1

/etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto bond0
iface bond0 inet manual
        up ifconfig bond0 0.0.0.0 up
        slaves eth1 eth0
auto vlan10
iface vlan10 inet static
        address 10.10.10.12
        netmask 255.255.0.0
        network 10.10.0.0
        broadcast 10.10.255.255
        vlan-raw-device bond0
        gateway 10.10.0.1
        dns-search hup.hu
        dns-nameservers 10.10.0.2
auto vlan20
iface vlan20 inet static
        address 10.20.10.12
        netmask 255.255.0.0
        network 10.20.0.0
        broadcast 10.20.255.255
        vlan-raw-device bond0
auto vlan30
iface vlan30 inet static
        address 10.30.10.12
        netmask 255.255.0.0
        network 10.30.0.0
        broadcast 10.30.255.255
        vlan-raw-device bond0

Multiple IP addresses on One Interface

Interface aliasing allows one interface to have multiple IP addresses. This is useful when more than one server is to be visible via the Internet. Note that virtual hosts can support multiple Apache servers with a single IP address. Apache responds to the domain name supplied by the client in the HTTP header. In many other situations, one external IP is needed for each server using a port.

This /etc/network/interfaces text assigns three IP addresses to eth0.

auto eth0
allow-hotplug eth0
iface eth0 inet static
    address 192.168.1.42
    netmask 255.255.255.0
    gateway 192.168.1.1

auto eth0:0
allow-hotplug eth0:0
iface eth0:0 inet static
    address 192.168.1.43
    netmask 255.255.255.0

auto eth0:1
allow-hotplug eth0:1
iface eth0:1 inet static
    address 192.168.1.44
    netmask 255.255.255.0

An alias interface should not have "gateway" or "dns-nameservers"; dynamic IP assignment is permissible.

The above configuration is the previous traditional method that reflects the traditional use of ifconfig to configure network devices. ifconfig has introduced the concept of aliased or virtual interfaces. Those types of virtual interfaces have names of the form interface:integer and ifconfig treats them very similarly to real interfaces.

Nowadays ifupdown uses ip utility from the iproute2 package instead of ifconfig. The newer ip utility does not use the same concept of aliases or virtual interfaces. However, it supports assigning arbitrary names to the interfaces (they're called labels). ifupdown uses this feature to support aliased interfaces while using ip.

Also, ifupdown supports specifying multiple interfaces by repeating iface sections with the same interface name. The key difference from the method described above is that all such sections are treated by ifupdown as just one interface, so user can't add or remove them individually. However, up/down commands, as well as scripts, are called for every section as it used to be.

This /etc/network/interfaces text assigns three IP addresses to eth0.

auto eth0
allow-hotplug eth0
iface eth0 inet static
    address 192.168.1.42
    netmask 255.255.255.0
    gateway 192.168.1.1

iface eth0 inet static
    address 192.168.1.43
    netmask 255.255.255.0

iface eth0 inet static
    address 192.168.1.44
    netmask 255.255.255.0

Additional information can be found on the http://www.shorewall.net/Shorewall_and_Aliased_Interfaces.html page.


CategoryNetwork