Network configuration (Русский)

From ArchWiki
Revision as of 22:19, 16 January 2008 by SteamedFish (Talk | contribs) (Add i18n entry: 简体中文)

Jump to: navigation, search

Template:I18n links start Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n links end

Обзор

Это простое руководство по настройке сети.

Загрузка модуля устройства

Если вы используете hwdetect или lshwd, они должны обнаружить модуль для вашей сетевой карты (NIC) и загрузить его автоматически при старте системы. В другом случае вы должны знать, какой модуль требуется для вашей сетевой карты.

Поищите эту информацию в сети или попробуйте LiveCD, чтобы найти имя требуемого модуля запустите lsmod, выведет все загруженные модули.

Теперь когда вы знаете, какой модуль использовать, можно его загрузить:

# modprobe <имя_модуля>

Если вы не хотите использовать какой-либо автозагрузчик (например, hwdetect) , вы можете добавить его в список MODULES в /etc/rc.conf, чтобы не подгружать его каждый раз. Например, если tg3 является требуемым модулем:

MODULES=(!usbserial tg3 snd-cmipci)

Настройка

Для DHCP

Отредактируйте /etc/rc.conf следующим образом:

  lo="lo 127.0.0.1"
  eth0="dhcp"
  INTERFACES=(lo eth0)
  ROUTES=(!gateway)

Для статического IP

Если вы используете интернет с windows машины без роутера, необходимо использовать статические ip адреса на обоих машинах. В противном случае возникнут проблемы в локальной сети.

Вам понадобится:

  • Ваш статический ip адрес
  • Маска сети
  • Широковещательный адрес
  • Ваш шлюз
  • Адреса ваших DNS серверов
  • Доменное имя

Если вы находитесь в частной сети, то можете использовать ip адреса диапазона 192.168.*.* с маской сети 255.255.0.0 и широковещательным адресом 192.168.255.255. Если в вашей сети нет роутера - адрес гейта значения не имеет. Исправьте /etc/rc.conf, подставляя свои значения для IP, маски сети, широковещательного адреса и гейта:

   lo="lo 127.0.0.1"
   eth0="eth0 82.137.129.59 netmask 255.255.255.0 broadcast 82.137.129.255"
   INTERFACES=(lo eth0)
   gateway="default gw 82.137.129.1"
   ROUTES=(gateway)

и /etc/resolv.conf, заменив адреса ваших DNS серверов и доменное имя:

  nameserver 61.23.173.5
  nameserver 61.95.849.8
  search example.com

Количество DNS серверов не ограничено.

Если вы используете DHCP и не хотите, чтобы DNS сервера менялись каждый раз при запуске сети, добавьте параметр -R к DHCPCD_ARGS в вашем /etc/conf.d/dhcpcd ( используется /etc/rc.d/network). Это предотвратит перезапись /etc/resolv.conf DHCP:

DHCPCD_ARGS="-R -t 30 -h $HOSTNAME"

Заключительное решение

Возможно, вам придётся добавить параметр "-S" в аргументы dhcpcd, чтобы ваша сеть работала:

DHCPCD_ARGS="-S -t 30 -h $HOSTNAME"

Установка имени компьютера

Отредактируйте /etc/rc.conf и установите HOSTNAME в соответствие с желаемым именем компьютера :

HOSTNAME="banana"

Установка имени хоста/ip

Отредактируйте /etc/hosts и добавьте похожую строку с тем же HOSTNAME, который вы ввели в /etc/rc.conf :

127.0.0.1               banana.localdomain             banana

Загрузка настроек

Чтобы проверить ваши настройки, либо перезагрузите компьютер, либо запустите #/etc/rc.d/network restart Попробйте пинговать ваш шлюз, DNS сервер, ISP провайдера и другие интернет сайт в этом порядке, чтобы установить какие-либо проблемы.

Дополнительные настройки

Настройка беспроводной сети

Настройка беспроводной сети (wlan) объяснена на другой странице.

Firewall

Вы можете установить и настроить firewall, чтобы быть более защищённым ;-)

Ifplugd

Вы можете установить демон, который будет автоматически настраивать вашу сеть, когда воткнут кабель, и возвращать её в исходное состояние, когда кабель выдернут. Это полезно для лаптопов с внутренними сетевыми адаптерами, так как демон настроит интерфейс только тогда, когда кабель действительно подключён. Также можно его использовать, когда надо перезапустить сеть, но вы не хотите перезапускать компьютер или делать это из оболочки.

Установка очень проста, так как пакет находится в [extra]:

# pacman -S ifplugd

По умолчанию он настроен на работу с интрфейсом eth0. Эта другие настройки, например задержка, могут быть настроены в /etc/ifplugd/ifplugd.conf.

Запустите его:

# /etc/rc.d/ifplugd start

или добавьте в список DAEMONS в /etc/rc.conf

Возможные проблемы

Проблема расширения TCP-окна

TCP-пакеты содержат значение "окна" в своих заголовках, которое показывает, сколько данных другой хост может послать в ответе. Это значение представлено 16-ю битами. Следовательно, размер окна ограничен 64 килобайтами. Для более эффективного использования широкополосного соединения этого мало.

В 1992 году, когда стало доступно больше памяти, был описан прием (см. RFC 1323), призванный улучшить ситуацию: расширение окна (Window Scaling). Значение "окна", предоставляемое всеми пакетами, модифицируется с помощью опредяемого в момент установки соединения коэффициента (Scale Factor). Коэффициент представлен восемью битами и позволяет увеличить значение окна в 32 раза.

Но в интернете появилось множество роутеров и межсетевых экранов, которые переписывали значение окна на 0, создавая недоразумения.

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

В результате соединение в лучшем случае очень медленно или падает.

Как диагностировать проблему?

Во-первых, давайте уясним: эта проблема проявляется не всегда. В некоторых случаях, вы сможете использовать TCP-соединения и соединяться с некоторыми хостами (очень немногими).

Внимание: вывод dmesg не выявит ничего необычного, логи будут чисты и ifconfig сообщит, что все нормально; в действительности все в норме.

Если же вы не можете просмотреть любой веб-сайт, однако можете пинговать некоторые хосты, велики шансы, что вы столкнулись с этой проблемой: pig использует ICMP-протокол, которого не касаются проблемы TCP.

Можете попробовать воспользоваться WireShark. Вы можете увидеть удачные UDP- и ICMP-соединения и неудачные TCP.

Как это исправить? (Плохой способ)

Для исправления плохим способом, вы можете изменить значение tcp_rmem, на котором базируется алгоритм вычисления коэффициента. Несмотря на то, что это может сработать с большинством хостов, нет гарантии, что это сработает с очень удаленными.

 echo "4096 87380 174760" > /proc/sys/net/ipv4/tcp_rmem

Еще вы можете попробовать удалить один из модулей оперативной памяти (да, сэр).

Как это исправить? (Хороший способ)

Просто отключить злополучное расширение окна. Даже если это и хорошая функция, она может не работать, если вы не сможете разобраться с некорректной работой роутеров. Есть несколько способов отключить расширение окна, и похоже, что самым надежным будет добавить следующую строку в файл /etc/rc.local:

 echo 0 > /proc/sys/net/ipv4/tcp_window_scaling

Как это исправить? (Действительно хороший способ)

Если это происходит по вине роутеров и межсетевых экранов, замените их. Некоторые пользователи сообщали, что проблема была в их собственных DSL-роутерах.

Хотите больше информации об этом?

Эта секция основана на статьях TCP window scaling and broken routers и Window Scaling on the Internet.

Позднее, некоторые пользователи Arch столкнулись с этим:

Также есть несколько обсуждений в LKML.