time

Настройка сети в Ubuntu и CentOS

В большинстве мест где я бываю есть wifi-роутеры и все что надо для подключения - пароль на wifi. Но есть пару менее дружелюбных мест, где нету своего DHCP и DNS сервера и все приходиться настраивать вручную.

Многие linux-дистрибутивы и среды рабочего стола имеют свои gui-инструменты для настройки сети, но есть и общий набор конфигурационных файлов и утилит - вот про них и пойдет речь в этой заметке.

В минимальный набор настроек для работы сети необходимо

  • IP-адрес для хоста и маска подсети
  • маршрут по-умолчанию (шлюз)
  • указать используемый DNS-сервер

Установим ip-адрес, сетевую маску, широковещательный адрес с помощью ifconfig или ip

ifconfig eth0 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255
# или
ip address add 192.168.1.2/24 dev eth0 broadcast 192.168.1.255

Вместо интерфейса eth0 может быть любой другой, например, wlan0.

Узнать действующие сетевые интерфейсы можно с помощью

ifconfig -a
# или еще один вариант для ubuntu
nmcli dev

Укажем шлюз

route add default gw 192.168.1.1

Указанные настройки, с помощью выше приведенных способов, сохраняться только на момент работы системы, после перезагрузки все пропадет. Команды ifconfig, ip, route доступны в Ubuntu и CentOS.

Теперь рассмотрим как сохраняются настройки в разных дистрибутивах.

Ubuntu (debian-base)

Под Ubuntu скрипт /etc/init.d/networking читает конфигурации из директории /etc/network/, в частности /etc/network/interfaces.

Пример файла

auto eth0
ifcae eth0 inet static 
    address 192.168.1.2
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1

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

Для применения настроек

# если не установлен Network Manager
sudo /etc/init.d/networking restart

# если установлен Network Manager
sudo /etc/init.d/network-manager restart

CentOS (redhat-base)

В CentOS файл с конфигурациями сетевых настроек находиться в /etc/sysconfig/network-scripts/ifcfg-ethN, где N - номер интерфейса (число от 0 и выше).

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
HWADDR=xx:xx:xx:xx:xx:xx
TYPE=Ethernet
IPADDR=192.168.1.2
NETMASK=255.255.255.0

Вместо BOOTPROTO=none, может быть BOOTPROTO=dhcp - означает, что настройки будут получены от DHCP-сервера.

Шлюз и имя хоста настраивается в /etc/sysconfig/network

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=hostname
GATEWAY=192.168.1.1

Для применения настроек

ifdown eth0
ifup eth0
# или 
service network restart

Указание DNS-сервера

Определение DNS-серверов, для преобразования доменов в IP-адреса, находиться в /etc/resolv.cfg (перезаписываться, если используется DHCP-сервер).

search skynet 
nameserver 8.8.8.8
nameserver 8.8.4.4
  • search skynet - суффикс, добавляемый к не полностью введенному hostname, например, ping ftp => ftp.skynet.
  • nameserver 8.8.8.8 - DNS-сервер, к которому будут идти все запросы
  • nameserver 8.8.4.4 - запасной DNS-сервер, к которому будут идти запросы в случаи отказа первого

Кроме опроса DNS-сервера, возможен запрос к локальному хранилищу записей, за это отвечает файл /etc/nsswitch.conf, в котором две основные записи

hosts:          files dns
networks:       files

отвечают за определение, откуда резолвить имена хостов и сетей

  • files - означает брать из /etc/hosts
  • dns - по запросу к DNS-серверу, указанному в /etc/resolv.cfg

Иногда бывает, что надо указать явно ip dns-сервера, например, если dns-сервер провайдера работает не стабильно (как у Укртелекома ;) ), для этого, под ubuntu, подправим файл /etc/dhcp/dhclient.conf:

  • удалим domain-name-servers из request
  • добавим prepend domain-name-servers 8.8.8.8;

Проверим

nslookup proft.me

Тестирование скорости соединения

Для проверки скорости соединения между двумя хостами есть утилита iperf.

Под Ubuntu устанавливаеться так

sudo apt-get install iperf

Под CentOS нужно подключить RPMforge-репозиторий и установить как обычно

sudo yum install iperf

На одной машине запустим iperf как сервер на порте 1234

iperf -s -p 1234

На другой запустим как клиент и подключимся к серверу

iperf -c 192.168.1.2 -p 1234

Поокончанию тестирования можно увидить скорость между этими двумя хостами.

Дополнительное чтиво

blog comments powered by Disqus