/etc/net — система конфигурации сети, создаваемая для полноценного использования возможностей ОС Linux для работы в современных сетях. Эта система использует ряд идей, которые по отдельности и в совокупности позволяют добиться большего, чем существующие средства конфигурации. Полный перечень возможностей системы доступен в других источниках информации, а в этом докладе рассмотрены несколько примеров конфигурации, имеющих практическую ценность. Важным свойством примеров является то, что все они реализованы штатными средствами /etc/net, в то время как некоторые примеры в других системах не реализуемы.
Если ноутбук используется дома и на работе в разных окружениях, например, с сервером DHCP и без него, то можно определить профили конфигурации для быстрого переключения между окружениями. Пусть наиболее часто используемым окружением будет офисная сеть с сервером DHCP, а альтернативным — домашняя сеть со статическим адресом и внешними серверами DNS. Определим офисную конфигурацию как конфигурацию по умолчанию:
/etc/net/ifaces/ eth0/ options BOOTPROTO=dhcp
Теперь определим альтернативу для домашнего окружения:
/etc/net/ifaces/ eth0/ options#home BOOTPROTO=static ipv4address#home 192.168.20.10/24 ipv4route#home default via 192.168.20.254 resolv.conf#home search home.net nameserver 192.168.30.1 nameserver 192.168.40.1
Для переключения в домашнее окружение необходимо использовать команду service
network switchto home, а для переключения на конфигурацию по умолчанию —
service network switchfrom home.
PPPoE и PPtP — одни из наиболее популярных способов подключения к Интернет в домашних сетях. Для подключения по PPtP к серверу 10.1.1.1 достаточно создать следующую конфигурацию:
/etc/net/ifaces/ ppp10/ options PPPTYPE=pptp PPTP_SERVER=10.1.1.1 REQUIRES=eth0 pppoptions noauth noipdefault user "pptpuser" defaultroute usepeerdns
Для подключения по PPPoE конфигурация будет следующей:
/etc/net/ifaces/ ppp10/ options PPPTYPE=pppoe HOST=eth0 pppoptions noauth noipdefault user "pppoeuser" defaultroute usepeerdns
После помещения строки с паролем в файл pap-secrets или chap-secrets можно будет установить соединение PPtP или PPPoE с помощью команды ifup ppp10.
Предположим, необходимо обеспечить приём IP-пакетов со спутника, передаваемых со следующими параметрами: частота 10999.50 МГц, символьная скорость 19.532 Мсим/с, горизонтальная поляризация, PID 0x0c02. Для настройки интерфейса DVB-S Pent@NET понадобится следующая конфигурация:
/etc/net/ifaces/ pentanet0/ options TYPE=dvb DVBTYPE=pentanet ipv4address 10.10.10.10/32 pentanet.conf [Transponder] SatName=Telstar Name=SpaceGate Frequency=10999.500000 Symbol rate=19.532000 Polar=HOR Band=KU 22Khz=Off LnbPower=On Viterbi=3/4 LnbType=Auto DISEqC=None AutoPID=Off Count=1 PID0=3074 CrcChecksum=On [Option] SIP Count=0

Выделенные серверы чаще всего подключены к сети одним из двух имеющихся портов Ethernet. Если связь порта с коммутатором нарушается, сервер оказывается отсоединённым от сети. С помощью механизма, называемого связкой интерфейсов, можно дублировать подключение к сети с практически моментальным переключением портов. Для этого используем следующую конфигурацию:
/etc/net/ifaces/ eth0/ options MODULE=e1000 eth1/ options MODULE=e1000 failover/ options TYPE=bond BONDMODE=1 HOST='eth0 eth1' BONDOPTIONS='use_carrier=1 miimon=100 primary=eth0' ipv4address 10.1.1.200 ipv4route default via 10.1.0.1
При работе по умолчанию будет использован интерфейс eth0. При пропадании линка на нём не позднее, чем через 100 мс будет использоваться eth1. При появлении линка на eth0 он будет использован вновь, а eth1 оставлен в резерве. Время переключения для данной конфигурации составит не более 100 мс, а в среднем — 50 мс. Данная конфигурация защищает от отказа единичного порта или патч-корда и позволяет перекоммутировать порты по одному за раз, не прерывая работу сервера.
Допустим, у нас имеется маршрутизатор с 5 слотами PCI, в каждом из которых находится по 2-портовому сетевому интерфейсу Ethernet. Дополнительно имеется 2 интерфейса на материнской плате. В процессе эксплуатации интерфейсы могут выходить из строя и заменяться на другие, для которых старые модули ядра могут не подходить. В обычной ситуации такие события приводили бы к тому, что одним и тем же логическим именем адресовались совершенно разные интерфейсы. Это эквивалентно переключению кабеля из одного интерфейса маршрутизатора в другой.
Для решения проблемы воспользуемся файлом iftab и закрепим имена интерфейсов за их адресами на шине PCI:
fa0 businfo 02:01.0 fa1 businfo 02:01.1 fa2 businfo 02:02.0 fa3 businfo 02:02.1 fa4 businfo 02:03.0 fa5 businfo 02:03.1 fa6 businfo 02:04.0 fa7 businfo 02:04.1 fa8 businfo 02:05.0 fa9 businfo 02:05.1 fa10 businfo 03:00.0 fa11 businfo 04:00.0
Теперь при инициализации сети те интерфейсы, которые будут в наличии в определённых слотах PCI, будут сохранять свои имена.
Если в сети используется динамическая маршрутизация, то при появлении или пропадании маршрутной записи на одном из маршрутизаторов это будет отражено в маршрутной базе данных сети. Допустим, на одном из маршрутизаторов нашей сети на интерфейсе назначен адрес 10.0.0.254/24. В локальной таблице маршрутизации будет присутствовать маршрут для 10.0.0.0/254, если только интерфейс находится в состоянии UP. Если мы будем использовать редистрибьюцию маршрутов из таблицы маршрутизации ядра в протокол динамической маршрутизации, то маршрутная база данных будет содержать маршрут для 10.0.0.0/24 в зависимости от флага UP интерфейса. Если мы будем использовать ifplugd, то состояние базы данных будет зависеть от наличия и отсутствия линка на нашем интерфейсе.
Если реагировать необходимо на изменения состояния интерфейса eth0, а с остальными маршрутизаторами связь происходит через интерфейс eth1, то конфигурация интерфейсов будет следующей:
/etc/net/ifaces/ eth0/ options MODULE=e1000 USE_IFPLUGD=on ipv4address 10.0.0.254/24 eth1/ options MODULE=e1000 ipv4address 10.0.1.254/24Фрагмент конфигурации ospfd приведён ниже:
interface eth0 interface eth1 router ospf redistribute kernel passive-interface eth0 network 0.0.0.0/0 area 0.0.0.0
В современных сетях встречается ситуация, когда один из интерфейсов маршрутизатора
используется только для транспортировки туннелированных пакетов. При этом маршрутизация
пакетов происходит только между туннельным интерфейсом и интерфейсами, не несущими
пакеты туннеля. Один из вариантов показан на рисунке:

/etc/net/ifaces/ localnet1/ options TYPE=eth MODULE=e100 ipv4address 10.1.255.254/16 localnet2/ options TYPE=eth MODULE=e100 ipv4address 10.2.255.254/16 transport/ options TYPE=eth MODULE=e100 ipv4address 10.0.0.1/16 sysctl.conf forwarding=0 tunnel/ options TYPE=iptun TUNTYPE=gre TUNLOCAL=10.0.0.1 TUNREMOTE=10.0.0.254 HOST=transport ipv4address 192.168.20.30 peer 192.168.20.31/32 ipv4route default via 192.168.20.31