- В файле /etc/network/interfaces хранятся настройки всех сетевых интерфейсов. Рассмотрим, как конфигурируется сетевой интерфейс. Сетевой интерфейс lo – обратная петля (его IP-адрес 127.0.0.*), использующийся для тестирования сетевой подсистемы, всегда конфигурируется автоматически. Нет необходимости настраивать его как-нибудь иначе. Для настройки этого интерфейса используются строки:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
Настройка интерфейсов вручную
- Для ручной настройки нужно указать строку в файле interfaces:
- Например, если у вас IP-адрес 192.168.1.10, маска сети 255.255.255.0, то строка конфигурации будет такой:
iface eth0 inet static address 192.168.110 netmask 255.255.255.0 gateway 192.168.1.1
Необязательно все записывать в одну строчку, можно еще записать так:iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1 - Параметр gateway – необязательный. Если шлюза нет (сеть без выхода в Интернет), то этот параметр можно не указывать:
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0 - Можно использовать необязательные параметры network и broadcast, задающие, соответственно, адрес сети и широковещательный адрес:
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.0.255
gateway 192.168.1.1
iface eth0 inet static address адрес netmask маска gateway шлюз
Запуск программ при поднятии и закрытии интерфейса
- При настройке сетевого интерфейса можно запускать определенные конфигурационные программы:
up <программа и ее параметры>
up route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.2
up route add default gw 192.168.1.1
down route del default gw 192.168.1.1
down route del -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.2
Внимание! Очень важно удалить маршруты при закрытии интерфейса. Когда поднимается интерфейс, в таблицу маршрутизации вносятся обслуживаемые ним маршруты. Когда интерфейс закрывается, очень важно эти маршруты удалить из таблицы маршрутизации ядра, поскольку сетевое соединение, обслуживаемое эти маршруты, уже закрыто.
auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
Сложные конфигурации
- Если у вас два сетевых адаптера, то они настраиваются аналогично, только указываются разные имена интерфейсов. Вот пример настройки двух сетевых адаптеров:
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
auto eth0 eth0:1
iface eth0 inet static
address 192.168.0.100
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
iface eth0:1 inet static
address 192.168.0.200
network 192.168.0.0
netmask 255.255.255.0
Прежде, чем рассмотреть следующую конфигурацию, нужно рассмотреть команды pre-up и pre-down:
auto eth0
iface eth0 inet dhcp
pre-up [ -f /etc/network/local-network-ok ]
auto eth0 eth1
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
pre-up /usr/local/sbin/enable-masq
iface eth1 inet dhcp
pre-up /usr/local/sbin/firewall
auto eth0 eth1
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
pre-up /path/to/check-mac-address.sh eth0 XX:XX:XX:XX:XX:XX
pre-up /usr/local/sbin/enable-masq
iface eth1 inet dhcp
pre-up /path/to/check-mac-address.sh eth1 AA:BB:CC:DD:EE:FF
pre-up /usr/local/sbin/firewall
auto eth0 eth1
mapping eth0 eth1
script /path/to/get-mac-address.sh
map 11:22:33:44:55:66 lan
map AA:BB:CC:DD:EE:FF internet
iface lan inet static
address 192.168.42.1
netmask 255.255.255.0
pre-up /usr/local/sbin/enable-masq $IFACE
iface internet inet dhcp
pre-up /usr/local/sbin/firewall $IFACE
cp /usr/share/doc/ifupdown/examples/get-mac-address.sh /usr/bin
chmod +x /usr/bin/get-mac-address.sh
Если по какой-то причине этого файла у вас нет, то его листинг приведен ниже (лист. 8.1)
Листинг 8.1. Файл get-mac-address.sh
#!/bin/sh
set -e
export LANG=C
iface="$1"
mac=$(/sbin/ifconfig "$iface" | sed -n -e '/^.*HWaddr \([:[:xdigit:]]*\).*/{s//\1/;y/ABCDEF/abcdef/;p;q;}')
which=""
while read testmac scheme; do
if [ "$which" ]; then continue; fi
if [ "$mac" = "$(echo "$testmac" | sed -e 'y/ABCDEF/abcdef/')" ]; then which="$scheme"; fi
done
if [ "$which" ]; then echo $which; exit 0; fi
exit 1
auto dsl-provider
iface dsl-provider inet ppp
pre-up /sbin/ifconfig eth0 up
provider dsl-provider