Сетевые настройки FreeBSD в VirtualBox. Сервер под FreeBSD. Установка и настройка сети

Дистрибутив фрюхи часто называют самым подходящим для решения прикладных сетевых задач в локальной сети. Сегодня мы займемся решением одной из сетевых задач — настройкой шлюза на Freebsd 10 для доступа в интернет из локалки. Это простой, популярный и востребованный функционал сервера, который можно расширять дополнительными возможностями.

Будем использовать следующую версию системы для решения нашей задачи по настройке шлюза:

# uname -v FreeBSD 10.2-RELEASE-p8 #0 r292756M: Sat Dec 26 22:49:34 MSK 2015 root@freebsd:/usr/obj/usr/src/sys/GENERIC

На сервере установлены 2 сетевые карты:

  • hn0 — внешний интерфейс, получает интернет от провайдера, настройки по dhcp
  • hn1 — локальная сеть, адрес 10.20.30.1, установлен вручную

В нашу задачу по настройке программного freebsd роутера будет входить настройка маршрутизации на сервере, установка и настройка ipfw, включение nat, настройка локального dhcp и dns сервера.

Подготовка сервера к настройке шлюза

Информацию о выданных leases dhcp сервера dnsmasq можно посмотреть в файле /var/db/dnsmasq.leases .

Анализ сетевой активности в freebsd с помощью iftop

Иногда хочется посмотреть, что происходит на роутере и кто использует интернет в данный момент. По-умолчанию, в системе нет готового средства для получения этой информации. На помощь нам придет простая программа iftop, которая позволяет в режиме реального времени посмотреть активность на сетевом интерфейсе.

Устанавливаем iftop на настроенный Freebsd шлюз:

# pkg install iftop

Запускаем iftop с указанием интерфейса и отображением используемых портов:

# iftop -i hn1 -P

Видим любопытную картину — кто, куда, по какому порту и с какой скоростью лезет.

Я для примера на одном из компьютеров запустил генератор трафика интернета. Он занял почти весь канал и это стало отлично видно на роутере с помощью iftop. Конечно, эта простая утилита не решает всех вопросов по мониторингу сетевой активности, но для представления текущей картины подходит, если вам не нужно что-то большее.

Заключение

Подведем итог того, что сделали. За короткое время настроили полноценный шлюз (по сути программный роутер) на базе Freebsd 10 для обеспечения выхода в интернет клиентов за сервером. При этом обеспечили автоматическое получение настроек. Даже на скромном виртуальном сервере такой шлюз способен переварить достаточно большой траффик.

Вся настройка занимает буквально 10-15 минут. Основное время уходит на сборку ядра. Чем выше версия Freebsd, тем дольше оно собирается, несмотря на то, что скорости железа существенно возрастают.

Пройдемся по пунктам и разберемся с тем, что конкретно мы сделали:

  1. Подготовили сервер к настройке шлюза.
  2. Пересобрали ядро с необходимыми параметрами.
  3. Настроили ipfw и nat, включили маршрутизацию.
  4. Установили и настроили dnsmasq для раздачи сетевых настроек по dhcp и dns сервера.
  5. Установили iftop для простейшего анализа сетевой активности на внешнем интерфейсе.

Этого достаточно для полноценной работы шлюза на Freebsd 10. Если есть необходимость подсчета пользовательского траффика или ограничения доступа к определенным ресурсам, можно к нему.

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

Представленных в ядре «Generic» драйвера самых разнообразных сетевых карт, представляются следующим образом:

dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38

000ff irq 15 at device 11.0 on pci0

dc0: Ethernet address: 00:a0:cc:da:da:da

ukphy0: on miibus0

ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto

dc1: <82c169 PNIC 10/100BaseTX> port 0?9800-0?98ff mem 0xd3000000-0xd30

000ff irq 11 at device 12.0 on pci0

dc1: Ethernet address: 00:a0:cc:da:da:db

ukphy1: on miibus1

ukphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto

Если в «Generic» необходимого драйвера для сетевой карты не окажется, то можно скачать его из всемирной паутины. Однако для того чтобы установка таким образом прошла успешно, необходимо провести компилирование ядра операционной системы.
При настройки сетевой карты, важным элементом будет являться привилегии пользователя «root». Если в качестве пользователя выступает профессионал, то они могут использовать командную строку – ipconfig. Если пользователю понадобиться определить прошла ли установка сетевой карты, то необходимо выбрать листинг, набрав в командной строке ipconfig.

dc0: flags=8843 mtu 1500

inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255

ether 00:a0:cc:da:da:da

media: Ethernet autoselect (100baseTX)

dc1: flags=8843 mtu 1500

inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255

ether 00:a0:cc:da:da:db

media: Ethernet 10baseT/UTP

status: no carrier

lp0: flags=8810 mtu 1500

lo0: flags=8049 mtu 16384

inet 127.0.0.1 netmask 0xff000000

tun0: flags=8010 mtu 1500

После того как будет набран листинг, в обязательном порядке должны будут определиться все сетевые устройства. К примеру, так:
* lp0: интерфейс параллельного порта
* dc0: первый Ethernet интерфейс
* lo0: устройство loopback

* dc1: второй Ethernet интерфейс

* tun0: туннельное устройство, используемое ppp

Можно также настройку выполнять и с помощью sysinstall. Если сетевые устройства подключены, то появяться аналогичные признаки:
1. UP - карта готова к работе и настроена.

2. Карта имеет адрес (в данном случае 192.168.1.3).

3. Подсетевая маска инсталлирована (netmask; 0xffffff00, то же, что и 255.255.255.0).

4. Адрес широковещательный (в данном случае, 192.168.1.255).

5. Обозначение MAC адреса карты (ether) 00:a0:cc:da:da:da

6. Выбор необходимой физической среды передачи данных в режиме автовыбора ((media: Ethernet autoselect (100baseTX))).
7. Статус соединения (status) active, т.е. Для dc1, мы видим status: no carrier. Такое показание нормально в том случае, если кабель не подключен к карте. В том случае, если ipconfig обозначает след. листинг, то карта работает неверно и ее настройки необходимо исправить.
dc0: flags=8843 mtu 1500

ether 00:a0:cc:da:da:da
Для того, чтобы произвести настройку сетевой карты, необходимо обладать привилегиями пользователя root. Самым лучшим местом настройки сетевых карт, является файл /etc/rc.conf. после того момента как вы откроете строку /etc/rc.conf стоит произвести добавку следующего листинга:

ifconfig_dc0=”inet 192.168.1.3 netmask 255.255.255.0?

ifconfig_dc1=”inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP”

После этого стоит произвести замену dc0, dc1 требуется на соответствующие карты. Далее необходимо произвести редактирование файла /etc/hosts и добавление имени и IP адреса компьютеров, которые имеются в сети. Для того чтобы в дальнейшем была возможность получить необходимую информацию по сетевым настройкам, стоит обратиться за помощью интернет-адресу: man.hosts.5; и к /usr/share/examples/etc/hosts. Затем необходимо произвести перезагрузку системы и удостовериться, что сетевая карта теперь обладает ip – адресом. Для того чтобы произвести проверку, стоит пропинговать интерфейс или провести проверку в локальной сети. После успешной проверки, можно сказать, что настройка сети FreeBSD завершена.

В контексте данного мануала мы будем рассматривать адресацию IPv4. Настройки IP-адреса производятся через файл rc.conf, причем в нем мы прописываем как статический ip-адрес, так и в случае использования DHCP указываем о необходимости использования динамического.

Для начала определим какие сетевые интерфейсы используются на машине, сделаем это с помощью команды ifconfig.

Скриншот показывает результат выполнения команды ifconfig. На нем мы можем видеть одну сетевую карту с именем em0, а также виртуальный loopback интерфейс lo0. Наименование сетевого интерфейса зависит от производителя (Например для сетевых карт Realtek это будет re, у меня em это встроенная интеловская сетевая карта). В нашем случае мы видим наш сетевой интерфейс с присвоенным адресом 192.168.2.6. Сетевая маска написана в шестнадцатиричном виде

Установка статического ip-адреса.

Скажем я хочу поменять ip-адрес без перезагрузки машины. Это можно сделать с помощью одной команды через shell. Соответственно этот адрес измениться после перезагрузки, т.к. все настройке при загрузке берутся из файла /etc/rc.conf, а мы туда вносить ничего пока не будем.

Для примера я хочу поменять адрес на 192.168.2.78. Есть два варианта записи команды, оба они верны -

Ifconfig em0 192.168.2.78 netmask 255.255.255.0

Ifconfig em0 192.168.2.78/24

Обе команды сменят ай-пи адрес, различие состоит в формате записи, во втором случае мы указываем 24-ю подсеть, что соответствует маске сети 255.255.255.0. Для того, чтобы этот статический адрес стал постоянным (как ни сумбурно это звучит, в смысле сохранился после перезагрузки). Мы должны добавить запись в /etc/rc.conf

Указывать маску подсети можно также двумя путями:

Ifconfig_em0="192.168.2.78 netmask 255.255.255.0"

Ifconfig_em0="192.168.2.78/24"

После перезагрузуки Ваш сервер назначит интерфейс em0 ip-адрес 192.168.2.78 и маску 255.255.255.0

Получение динамического адреса от DHCP

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

Соотвественно для первого пути, мы просто вводим команду

Dhclient em0 Для второго пути, добавляем строку в rc.conf

Ifconfig_em0="DHCP"

Установка шлюза по умолчанию.

Для установки шлюза по умолчанию, редактируем файл /etc/rc.conf, добавляем или изменяем строку -

Defaultrouter="192.168.2.254"

Также это можно проделать командами - route delete default route add default 192.168.2.254

Задание серверов DNS

Для указания DNS-серверов (например мы хотим установить публичные гугловские DNS), открываем на редактирование файл /etc/resolv.conf и прописываем - nameserver 8.8.8.8 nameserver 8.8.4.4

Наконец-то нашлось у меня время разобраться с FreeBSD. Сейчас, по-быстрому, поднимем сервер под FreeBSD и настроим необходимые сервисы. Это не будет инструкцией для новичков, я не буду разъяснять назначение команд и параметров - исключительно информация о том "как это было".

В этой статье описан процесс установки и настройки сети. Чтобы не засорять большим количеством текстов, - то что называется "насетапить" - опишу отдельно. Все проверено на моем домашнем сервере и работает. В дальнейшем поднимем службы нашего сервера: gate&proxy, mail, web, IP-PBX и др.

Почему под FreeBSD?

Я не буду спорить и доказывать почему именно FreeBSD, а не Linux и уж никак не Windows - каждому свое. Тем более, тот кто это читает свой выбор уже сделал. Единственное что хотелось бы сказать об этом - это почему FreeBSD я выбрал для себя. Был я администратором офиса в мире проприетарного (ломаного, естественно) ПО. Но так как я всегда учусь и развиваюсь, решил выбрать изучить UNIX-like систему. Это и бесплатно, и, как мне показалось, круто - ведь в винде может разобраться (на том низком уровне, который был на то время у меня) даже школьник. Выбрал я FreeBSD, а не Linux. Потому что Linux-ов много, и как выбрать конкретный дистрибутив я не придумал. Тем более, разбираясь в одном из дистрибутивов Linux совсем не значит что можно также успешно разобраться в другом. А FreeBSD - она одна!

Установка FreeBSD

Установку детально описывать не вижу смысла. Нет там ничего сложного. Последовательность такая:

  • качаем Disc1 с офф. сайта (вся коллекция дисков или DVD не нужна, софт лучше собирать из портов)
  • грузимся с него
  • метод установки выбираем, конечно же, Custom
  • в Options ничего менять не будем
  • в Partition создаем раздел ("C", "Q", Standart - если будет единственной ОСью)
  • в Label создаем точки монтирования:
1G - / RAM * 1.5 - swap 3G - /var/tmp 2-4G * N - /var/cache # ТОЛЬКО ЕСЛИ БУДУТ proxy servers! сколько надо - /var/ftp # ТОЛЬКО ЕСЛИ БУДЕТ file server ! сколько надо - /var/mail # ТОЛЬКО ЕСЛИ БУДЕТ mail server ! сколько надо - /var/db # ТОЛЬКО ЕСЛИ БУДЕТ database server ! 10-20G - /usr 1G или более - /home остальное - /var
  • в Distributions - custom выбираем:
base kernels dict doc info man catman proflibs src (тут откроются подпункты, выбрать all) ports local
  • запускаем установку
  • после установки можно и понастраивать (имя, ip). Но мы то любители консоли...

Настройка сети на FreeBSD

После перезагрузки войдем под рутом и выполним минимальные настройки сети и запустим sshd (за консолью сидеть не всегда удобно).

Если настройки сети (по ifconfig смотрим имя сетевого адаптера) статические, то выполняем:

Echo "hostname="rublin"" >> /etc/rc.conf echo "ifconfig_de0_name="net0"" >> /etc/rc.conf echo "# ifconfig_net0="DHCP"" >> /etc/rc.conf echo "ifconfig_net0="inet 192.168.67.99 netmask 255.255.252.0"" >> /etc/rc.conf echo "defaultrouter="192.168.67.100"" >> /etc/rc.conf

Echo "hostname="rublin"" >> /etc/rc.conf echo "ifconfig_de0_name="net0"" >> /etc/rc.conf echo "ifconfig_net0="DHCP"" >> /etc/rc.conf echo "# ifconfig_net0="inet 192.168.67.99 netmask 255.255.252.0"" >> /etc/rc.conf echo "# defaultrouter="192.168.67.100"" >> /etc/rc.conf

Привет. Рассмотрим один из способов настройки сети для FreeBSD 8 на вирутальной машине. В качестве эмулятора виртуальных машин используется программа Virtual Box установленная на ОС Windows 8, для Windows 7 настройки похожи, при надобности сориентируетесь по ходу дела.
Начинаем с того момента когда FreeBSD уже установленна на виртуальную машину, и теперь уже пора настроить сеть для дальнейшей работы. Настройка будет производиться в три этапа: настройка базовой ОС (windows 8), настройка программы Virtual Box, настройка FreeBSD.

1. Первым делом проверяем, включен ли брандмауэр.
Панель управления > Брандмауэр Windows > Настроить параметры

По умолчанию в системе брандмауэр включен, если он у вас выключен – настоятельно рекомендуется включить его. После включения брандмауэра перезагрузите компьютер.


Панель управления > Брандмауэр Windows > Разрешенные программы


После установки программы Virtual Box в «Сетевых подключениях» должен появиться виртуальный адаптер эмулятора.

3. Пропишем настройки хоста виртуальной машины.
Панель управления > Сеть и Интернет > Сетевые подключения > VirtualBox Host-Only Network


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

4. Настраиваем проброс сети из физического адаптера на виртуальный (Virtual Box).
Заходим в свойства физического адаптера, вкладка «Доступ». Здесь нужно поставить галочку на пункт «Разрешить другим пользователям сети использовать подключение к Интернету данного компьютера », ниже выбрать хост Virtual Box.

Теперь необходимо отключить DHCP сервер в настройках Virtual Box.
5. Отключаем DHCP в Virtual Box
Чтобы перейти в настройки Virtual Box необходимо в менеджере виртуальных машин перейти через главное меню Файл > Настройки, откроется окно настроек, проходим на вкладку «Сеть».

Открываем настройки сети хоста, на вкладке «DHCP сервер» убираем галочку с пункта «Включить сервер», сохраняем настройки.

Теперь приступаем к настройке сети в самой FreeBSD. Стартуем виртуальную машину с установленной системой FreeBSD, авторизуемся в системе.

6. Определяем имя сетевого адаптера FreeBSD.
Вводим в консоли команду:

#ifconfig

В консоли будут показаны доступные адаптеры.


Нам нужен адаптер em0 , его мы и будем настраивать.

7. Задаем параметры для адаптера em0 в файле «rc.conf».
для редактирования:

#ee /etc/rc.conf

Задаём параметры:

Ifconfig_em0="inet 192.168.2.10 netmask 255.255.255.0" defaultrouter="192.168.2.1" hostname="localhost"


Жмем клавишу «ESC», появляется меню редактора, выбираем «leave editor», затем «save changes», таким образом мы сохранили сделанные нами изменения. Теперь необходимо прописать настройки в файле resolv.conf

8. Прописываем настройки в файле resolv.conf
Открываем конфигурационный файл :

Ee /etc/resolv.conf

Добавляем строку:

Nameserver 192.168.2.1


Сохраняем изменения. Перезапускаем FreeBSD, команда для перезагрузки:

После перезагрузки, входим в систему, и пробуем сделать .
Например:

#ping google.kz


Убеждаемся что сеть работает. На этом впринципе пока всё. Стоит заметить что данный способ это лишь один из множества вариантов настройки сети. Подходит ли он вам, решать вам.