/etc
. Как правило, процесс настройки проходит
во время установки операционной системы.
fxp0 at pci0 dev 10 function 0 "Intel 82557" rev 0x0c: irq 5, address 00:02:b3:2b:10:f7 inphy0 at fxp0 phy 1: i82555 10/100 media interface, rev. 4Это устройство использует драйвер fxp(4), а соответствующий номер устройства тут 0.
Утилита ifconfig(8) покажет какие сетевые интерфейсы были найдены в системе.
$ ifconfig lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33200 index 3 priority 0 llprio 3 groups: lo inet 127.0.0.1 netmask 0xff000000 fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:02:b3:2b:10:f7 index 1 priority 0 llprio 3 media: Ethernet autoselect (100baseTX full-duplex) status: active inet 10.0.0.38 netmask 0xffffff00 broadcast 10.0.0.255 enc0: flags=0<> index 2 priority 0 llprio 3 groups: enc status: active pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33200 index 4 priority 0 llprio 3 groups: pflogПриведенный выше пример показывает, что в системе найден только один ethernet интерфейс:
fxp0
. Он уже настроен и ему присвоен IP,
поэтому мы видим строчку
inet 10.0.0.38 netmask 0xffffff00 broadcast 10.0.0.255
.
Флаги UP
и RUNNING
так же для него установленны.
Скрипт netstart(8) настраивает
сетевые интерфейсы во время загрузки. Для этого он использует
hostname.if(5) конфигурационные
файлы, где "if" соответствует полному имени интерфеса, необходимого для настройки.
Для примера выше использовался бы файл /etc/hostname.fxp0
,
содержащий следующее:
inet 10.0.0.38 255.255.255.0Того же результата, который мы получим при помощи файла
hostname.fxp0
, можно добиться и в интерактивном режиме:
# ifconfig fxp0 10.0.0.38 255.255.255.0Обратите внимание, что несколько других виртуальных интерфейсов включены по умолчанию. Информацию о них вы можете найти в man-страницах:
create
ifconfig(8).
/etc/myname
и /etc/mygate
используются
netstart(8) скриптом.
Оба из них содержат единственную строчку, в которой указывается полное доменное
имя системы (domain name) и адрес хоста шлюза (address of the gateway host)
соответственно. Файл /etc/mygate
не обязательно должен
существовать в системе. Более подробную информацю можно найти в
myname(5).
$ cat /etc/resolv.conf search example.com nameserver 125.2.3.4 nameserver 125.2.3.5 lookup file bindВ этом примере доменное имя по умолчанию
example.com
,
имеются два сервера DNS (с адресами 125.2.3.4
и 125.2.3.5
),
файл hosts(5) будет использован
до получения информации от DNS-серверов.
# sh /etc/netstartОбратите внимание, при запуске этого скрипта могут появиться предупреждения (warnings), если его запуск подразумевает переконфигурацию уже сконфигурированных интерфейсов. Убедитесь, что интерфейс был сконфигурирован правильно при помощи ifconfig(8).
Хотя в OpenBSD возможна полная переконфигурация сетевых настроек системы без перезагрузки, рестарт системы НАСТОЯТЕЛЬНО рекомендуется после значительного изменения конфигурации.
$ netstat -rn Routing tables Internet: Destination Gateway Flags Refs Use Mtu Prio Iface default 10.0.0.1 UGS 4 16 - 12 fxp0 224/4 127.0.0.1 URS 0 0 32768 8 lo0 127/8 127.0.0.1 UGRS 0 0 32768 8 lo0 127.0.0.1 127.0.0.1 UH 2 15 32768 1 lo0 10.0.0/24 link#1 UC 1 4 - 4 fxp0 10.0.0.1 aa:0:4:0:81:d UHL 1 11 - 1 fxp0 10.0.0.38 127.0.0.1 UGHS 0 0 - 1 lo0 $ route show Routing tables Internet: Destination Gateway Flags Refs Use Mtu Prio Iface default 10.0.0.1 UGS 4 16 - 12 fxp0 base-address.mcast localhost URS 0 0 32768 8 lo0 loopback localhost UGRS 0 0 32768 8 lo0 localhost localhost UH 2 15 32768 1 lo0 10.0.0/24 link#1 UC 1 4 - 4 fxp0 10.0.0.1 aa:0:4:0:81:d UHL 1 11 - 1 fxp0 10.0.0.38 localhost UGHS 0 0 - 1 lo0
В этом примере два alias добавлены к интерфейсу dc0,
который был сконфигурирован с адресом 192.168.0.2
и
маской сети 255.255.255.0
.
$ cat /etc/hostname.dc0 inet 192.168.0.2 255.255.255.0 inet alias 192.168.0.3 255.255.255.255 inet alias 192.168.0.4 255.255.255.255Как только создали этот файл был создан, запустите netstart или просто перезагрузитесь, чтобы изменения вступили в силу. Чтобы просмотреть все псевдонимы в системе, используйте
ifconfig -A
.
inet autoconfOpenBSD получит свои IP-адрес, имя шлюза, а также адреса DNS серверов от DHCP сервера во время загрузки системы. Информацию по конфигурации и остальные возможности настройки можно найти в dhcpleased.conf(5).
Для того, чтобы получить IP от DHCP сервера в интерактивном режиме, просто запустите клиент в консоли:
# ifconfig xl0 inet autoconfЗамените
xl0
названием конфигурируемого интерфейса.
# rcctl enable dhcpdВо время следующей загрузки, dhcpd будет запущен и им будут испрользоваться все сетевые карты, в соответствии с конфигурацией в dhcpd.conf(5). Вместо этого вы также можете указать лишь определенные интерфейсы, задав их имена явно:
# rcctl set dhcpd flags em1 em2Ниже приведен пример файла
/etc/dhcpd.conf
:
# Home subnet 192.168.1.0 netmask 255.255.255.0 { option domain-name-servers 192.168.1.2; option routers 192.168.1.1; range 192.168.1.3 192.168.1.50; } # Guests subnet 172.16.0.0 netmask 255.255.255.0 { option domain-name-servers 209.244.0.3, 8.8.8.8; option routers 172.16.0.1; range 172.16.0.2 172.16.0.254; }В этом примере рассматривается конфигурация с двумя подсетями: домашняя сеть и гостевая. Клиенты будут автоматически получать IP-адрес, шлюз и DNS-серверы, указанные в конфиге. Ознакомьтесь с dhcp-options(5), где описаны остальные поддерживаемые параметры.
Следующие карты поддерживают режим Host-based Access Point (HostAP), что позволяет их использовать в качестве точки доступа:
media
показывает возможности сетевого интерфейса.
Для беспроводных устройств она показывает поддерживаемые режимы 802.11a/b/g/n и
режимы работы (hostap
, ibss
,
monitor
).
К примеру, так можно посмотреть возможности интерфейса ath0
:
$ ifconfig ath0 mediaЧтобы использовать некоторые беспроводные карты, вам необходимо загрузить себе firmware при помощью fw_update(1). Некоторые производители не разрешают свободное распространение своих прошивок (firmware), поэтому они не могут быть включены в состав OpenBSD.
Еще один способ включения OpenBSD в беспроводную сеть состоит в совместном использовании обычной сетевой карты и внешней точки доступа для создания firewall.
Пример hostname.if(5) файла, когда используется wireless в качестве клиента:
nwid puffyuberalles wpakey passwordhere inet autoconfИли, для нескольких точек доступа:
join home-net wpakey passwordhere join work-net wpakey passwordhere join cafe-wifi inet autoconfОбратите внимание, что ключевое слово
inet autoconf
должно быть в самом
конце, т.е. после других строк конфигурации, поскольку сетевой адаптер не сможет
отправлять DHCP запрос, пока он не настроен.
Автоматический выбор точки доступа можно временно отключить используя команду
ifconfig nwid
:
ifconfig ath0 nwid home-netЕсли данная сеть уже существует в списке, её WPA-пароль будет использоваться автоматически, если потребуется. Команда ifconfig
-nwid
вернёт интерфейс в режим
автоматического выбора точки доступа:
ifconfig ath0 -nwid
Для этого мы сначала активируем два физических порта, а затем переназначаем их для
trunk0
.
# echo up > /etc/hostname.bge0Однако для беспроводного интерфейса требуется немного больше настроек. Его необходимо подключить к нашей беспроводной WPA-защищенной сети:
$ cat /etc/hostname.iwn0 nwid puffynet wpakey mysecretkey upТеперь наш trunk интерфейс определен следующим образом:
$ cat /etc/hostname.trunk0 trunkproto failover trunkport bge0 trunkport iwn0 inet autoconfTrunk настроен в
failover
режиме (режим аварийного переключения),
поэтому можно использовать любой интерфейс. Если оба доступны, он предпочтет
bge0
, так как он первый задан в настройках.
vr0
и до vr3
.
Мы хотим соединить vr1
, vr2
и vr3
вместе, оставив при этом vr0
как входную линию связи.
Мы также хотим обслуживать IP адреса через DHCP, при помощи объединенных
интерфейсов. Будучи DHCP сервером и маршрутизатором для входящей линии связи,
box должен иметь IP-адрес в мостовой сети.
Невозможно назначить IP адрес непосредственно bridge интерфейсу. IP адрес должен быть добавлен к одному из интерфейсов, но мы не можем использовать физический интерфейс, так как link может быть down, и в этом случае адрес будет недоступен. К счастью, есть драйвер vether(4) (виртуальный ethernet), который можно использовать для этой цели. Мы добавим его к мосту, назначим ему IP адрес и скажем dhcpd(8) использовать его.
192.168.1.1
для соответствия
конфигурации DHCP сервера.
vr1
, vr2
и vr3
как up:
# echo up > /etc/hostname.vr1 # echo up > /etc/hostname.vr2 # echo up > /etc/hostname.vr3Затем создаем конфигурацию
vether0
:
# echo 'inet 192.168.1.1 255.255.255.0 192.168.1.255' > /etc/hostname.vether0Настраиваем интерфейс моста так, чтобы он содержал все вышеперечисленные vr-интерфейсы:
$ cat /etc/hostname.bridge0 add vether0 add vr1 add vr2 add vr3 upНаконец, говорим DHCP демону работать с
vether0
интерфейсом:
# rcctl set dhcpd flags vether0Перегружаемся и наслаждаемся работой моста!
blocknonip
ifconfig(8) или в
hostname.bridge0,
вы можете предотвратить утечку вашего не-IP-трафика (например, IPX
или NETBEUI).
Это может быть важно в некоторых ситуациях. Вы должны знать, что мосты
работают для всех видов трафика, а не только для IP.
0.0.0.0/0
.
Когда ядро определяет, каким маршрутом отправить пакет для данной сети,
оно может выбрать любой из equal-cost маршрутов. В большинстве случаев такая
маршрутизация используется для создания резервированного соединения с сетью
логически более "корневого" уровня, например, подключения к сети Интернет.
Команда route(8) используется
для добавления/удаления/изменения маршрутов в таблице маршрутизации (routing
table). Аргумент -mpath
используется при добавлении multipath
маршрутов.
# route add -mpath default 10.130.128.1 # route add -mpath default 10.132.0.1Проверим маршрутизацию:
# netstat -rnf inet | grep default default 10.130.128.1 UGS 2 134 - fxp1 default 10.132.0.1 UGS 0 172 - fxp2В этом примере мы видим, что маршрут по умолчанию достижим, используя
10.130.128.1
через интерфейс fxp1
, а другой
использует 10.132.0.1
и fxp2
.
Так как mygate(5) до сих пор
не поддерживает multipath маршрутизацию по умолчанию, вышеуказанные команды
должны быть добавленны в конец
hostname.if(5) файлов для
fxp1
и fxp2
интерфейсов.
Файл /etc/mygate
должен быть после этого удален.
$ tail -1 /etc/hostname.fxp1 !route add -mpath default 10.130.128.1 $ tail -1 /etc/hostname.fxp2 !route add -mpath default 10.132.0.1Наконец, не забудьте активировать multipath маршрутизацию, при помощи соответствующих параметров sysctl(8).
# sysctl net.inet.ip.multipath=1 # sysctl net.inet6.ip6.multipath=1Не забудьте отредактировать sysctl.conf(5), чтобы сохранить изменения.
А теперь попробуем проверить работу разных маршрутов. Ядро будет распределять трафик в режиме балансировки (load balance) для каждого multipath маршрута.
# traceroute -n 154.11.0.4 traceroute to 154.11.0.4 (154.11.0.4), 64 hops max, 60 byte packets 1 10.130.128.1 19.337 ms 18.194 ms 18.849 ms 2 154.11.95.170 17.642 ms 18.176 ms 17.731 ms 3 154.11.5.33 110.486 ms 19.478 ms 100.949 ms 4 154.11.0.4 32.772 ms 33.534 ms 32.835 ms # traceroute -n 154.11.0.5 traceroute to 154.11.0.5 (154.11.0.5), 64 hops max, 60 byte packets 1 10.132.0.1 14.175 ms 14.503 ms 14.58 ms 2 154.11.95.38 13.664 ms 13.962 ms 13.445 ms 3 208.38.16.151 13.964 ms 13.347 ms 13.788 ms 4 154.11.0.5 30.177 ms 30.95 ms 30.593 msДля дополнительной информации о том, как выбирается тот или иной маршрут, читайте RFC2992, "Analysis of an Equal-Cost Multi-Path Algorithm".
Стоит отметить, если интерфейс, используемый при multipath маршрутизации, потеряет соединение (например, нет carrier), ядро тем не менее все равно будет пытаться отправить пакеты маршрутом, сконфигурированным для этого интерфейса. Конечно, этот трафик никуда не попадет. Очень рекомендуется использовать ifstated(8) для проверки доступности интерфейса и коррекции таблицы маршрутизации.
В этом разделе приводятся шаги по простой установке NFS. В этом примере описывается NFS-сервер в LAN с клиентами из LAN. Здесь не обсуждаются вопросы безопасности NFS.
# rcctl enable portmap mountd nfsdСледующим шагом мы настроим список файловых систем, чтобы сделать монтирование доступным для клиентов.
В этом примере наш сервер имеет адреc 10.0.0.1
.
Этот NFS-сервер обслуживает только клиентов из своей сети.
Первый шаг в установке NFS - настройка файла
exports(5):
$ cat /etc/exports /docs -alldirs -ro -network=10.0.0 -mask=255.255.255.0Директория локальной файловой системы
/docs
будет доступна через NFS.
Параметр -alldirs
указывает, что клиенты смогут монтировать
полностью или лишь часть каталога /docs
. Опция -ro
указывает, что будет предоставлен доступ только для чтения.
Последние два аргумента указывают, что только клиенты в сети 10.0.0.0
и использующие маску сети 255.255.255.0
, будут авторизованы для
монтирования этой файловой системы.
Теперь можно запустить сервисы на сервере.
# rcctl start portmap mountd nfsdЕсли вы вносите изменения в
/etc/exports
когда NFS уже
запущен, вам необходимо перезагрузить mountd:
# rcctl reload mountd
Для монтирования ФС /docs
, которая находится на машине 10.0.0.1
,
к себе в /mnt
, выполните:
# mount -t nfs 10.0.0.1:/docs /mntЧтобы это происходило автоматически во время загрузки системы, добавьте следующую строку в ваш fstab(5):
# echo '10.0.0.1:/docs /mnt nfs ro,nodev,nosuid 0 0' >> /etc/fstabНе забывайте использовать
0 0
в конце данной строки для
файловой системы NFS, чтобы ваш компьютер не пытался запустить на ней
fsck(8) во время загрузки.
При обращении к монтируемому каталогу от пользователя root, сервер
автоматически отображает root доступ к имени пользователя nobody
и группе nobody
. Это важно знать при рассмотрении прав доступа
к файлам. Например, возьмем файл с таким набором прав:
-rw------- 1 root wheel 0 Dec 31 03:00 _daily.B20143Если этот файл находится в NFS, и пользователь root пытается получить доступ к этому файлу через тот или иной NFS-клиент, доступ будет запрещен.
Пользователи и группы, которые должны иметь root-доступ, настраиваются при помощи файла exports(5) на стороне сервера.
$ rpcinfo -p 10.0.0.1 program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100005 1 udp 633 mountd 100005 3 udp 633 mountd 100005 1 tcp 916 mountd 100005 3 tcp 916 mountd 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfsЕсть несколько утилит для просмотра происходящего с NFS. Одна из них showmount(8), которая показывает, какие файловые системы смонтированы и кем. Есть также nfsstat(1), которая покажет более подробную статистику.