Настройка freebsd как роутера

Установка FreeBSD 11

В первом меню загрузчика вам не нужно менять никаких параметров. Просто нажмите «Enter» для продолжения работы:

Шаг 5. Раскладка клавиатуры

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

Шаг 7. Выбор программ

На следующем экране вам предстоит выбрать компоненты системы, которые вы хотите установить FreeBSD 11 на свой компьютер. Для того, чтобы отметить компонент нажмите «Пробел». Для сервера достаточно оставить библиотеки совместимости lib32 и Ports.

Когда завершите, нажмите «Enter».

Шаг 8. Автоматическая разметка диска

Дальше нужно выполнить разметку диска. Вы можете довериться установщику и выполнить автоматическую разметку или же сделать все вручную. Если у вас есть несколько жестких дисков, которые необходимо подключить, лучше использовать ZFS. Но мы рассмотрим на примере UFS.

Далее вам нужно будет подтвердить использование всего диска для установки системы. Все данные на нем будут уничтожены.

Затем выберите таблицу разделов. Если ваш диск больше 2 Тб или вы используете UEFI вместо BIOS, то вам лучше использовать GPT, в всех остальных случаях более предпочтительно MBR. Даже будет лучше если вы отключите защищенную загрузку и будете использовать MBR:

В следующем окне система покажет вам созданные разделы. В случае MBR будет создано два раздела — корень и раздел подкачки. Используйте «Tab» для выбора кнопки «Commit», а затем нажмите «Enter»:

Шаг 9. Установка FreeBSD

Дальше будет запущена установка FreeBSD 11 с флешки или другого носителя, в зависимости от скорости работы вашего компьютера и жесткого диска, установка может занять от 10 до 30 минут.

Шаг 10. Пароль суперпользователя

Когда установка завершится, система предложит вам ввести пароль для суперпользователя. Установщик спросит пароль два раза, но он не будет отображаться на экране:

Шаг 11. Настройка сети

Дальше выберите сетевой интерфейс, через который вы собираетесь получать доступ в интернет. Как видите, имена сетевых интерфейсов отличаются от стандартов Linux:

Затем выберите «Yes», чтобы выполнить настройку ip адреса IPv4:

Вы можете выбрать вариант получения адреса по DHCP или настроить его вручную:

Настройку адреса IPv6 можно пропустить:

Последний этап настройки сети — настройка DNS серверов. Лучше всего добавить, кроме стандартного, DNS сервер от Google — 8.8.8.8:

Выберите географический регион, в котором расположен ваш компьютер:

Затем выберите вашу страну:

На следующем этапе нужно ввести текущую дату и время, если они были неверно получены из сети:

Шаг 14. Автозагрузка

Дальше нужно выбрать какие сервисы будут загружаться по умолчанию при старте системы. Например, SSH, NTP и Powerd. Последний позволяет автоматически регулировать частоту процессора в зависимости от нагрузки на систему.

Шаг 15. Дополнительные оптимизации

Эти опции позволяют усилить безопасность вашей системы. Отключите доступ к буферу ядра для непривилегированных пользователей. Отключите отладку, Включите очистку /tmp во время загрузки, отключите сокет Syslogd и Sendmail если вы не планируете использовать почтовый сервер:

Шаг 16. Другие пользователи

Дальше установщик спросит вас не желаете ли вы добавить к системе еще пользователей. Выберите «yes» и введите всю необходимую информацию о пользователе. Безопаснее всего оставить все поля по умолчанию, для этого достаточно нажимать «Enter»:

В качестве оболочки вы можете выбрать Bourne shell (sh) или tcsh. Когда завершите, просто наберите «Yes»:

Дальше система спросит вас хотите ли вы добавить еще пользователей, и если в этом нет необходимости, нужно ответить «no»:

Шаг 17. Завершение установки

На последнем экране перед вами появится простое меню действий. Если вы не хотите ничего менять, просто выберите первый пункт — «Exit» и ответьте «no», чтобы перезапустить компьютер:

Извлеките установочный носитель и нажмите «Enter»:

В меню загрузчика снова нажмите «Enter».

Просмотр сетевых интерфейсов.

Для начала проясним: Есть два состояния сетевой карты UP(задействована) и DOWN(не задействована).

Первым делом стоит посмотреть наши сетевые интерфейсы, смотреть будем командой ifconfig.(Рис.1) Вывод команды показывает все интерфейсы UP и DOWN.

ifconfig

ifconfig -a покажет вам тоже самое.

ifconfig -a

Вот тут есть некоторые отличия от ifconfig в Ubuntu server.(в Ubuntu server «ifconfig» показывает только интерфейсы UP, «ifconfig -a» показывает все интерфейсы и UP и DOWN)

Рис.1 — Результат ввода команды ifconfig.

И так что же мы видим:

  • em0 — наша сетевая карта, с IP адресом 192.168.3.11.
  • em1 — вторая сетевая карта, не настроенная.
  • lo — локальная петля, она у всех присутствует по умолчанию.

Для того чтобы посмотреть интерфейсы только UP, используется команда ifconfig -u (Рис.2):

ifconfig -u

а для просмотра интерфейсов только DOWN, используется команда ifconfig -d (Рис.3):

ifconfig -d

Рис.2 — Результат ввода команды ifconfig -u.Рис.3 — Результат ввода команды ifconfig -d.

В дальнейшем я буду показывать примеры настройки на интерфейсе «em0».

Для включения интерфейса используется команда ifconfig «НАЗВАНИЕ-ИНТЕРФЕЙСА» up.

ifconfig em0 up

Для выключения интерфейса используется команда ifconfig «НАЗВАНИЕ-ИНТЕРФЕЙСА» down.

ifconfig em0 down

«Поиграйтесь» с интерфейсом, если вы конечно же не подключены по ssh, и оставьте его в состоянии UP.

Установка драйвера Wifi

Если вы попробовали подключиться к сети Wifi, и у вас не получилось, хотя пароль был правильный, или у вас даже не определяется системой присутствие сетевой карты Wifi, становится понятно, что из коробки не работает Wifi Ubuntu и нужна дополнительная настройка. Wifi-адаптеров и их производителей очень много. В этой статье мы будем рассматривать только Broadcom, потому что всё не охватить. Но я попытаюсь объяснить так, чтобы вы смогли разобраться, даже если у вас другой производитель адаптера Wifi Ubuntu.

Для начала, давайте посмотрим какой у вас производитель сетевой платы, для этого выполните:

Для нашего Broadcom-адаптера есть четыре драйвера, смотрим только те, для которых в последней колонке есть PCI; наш адаптер подключён через эту шину. Это b43, b43-legasy и brcmfmac и brcmcmac.

Дальше выбираем лучший драйвер: смотрим на колонки cfg80211, AP, IBSS, mesh, monitor, PHY modes. Собственно, поддержка протокола сап80211, поддержка режима точки доступа, поддержка IBSS, Mesh, поддержка режима прослушивания (для перехвата пакетов) и поддержка расширений протокола b/g/n/a.

Для нас сейчас лучший драйвер по этим параметрам — b43. Открываем его и смотрим, поддерживает ли он нашу карту:

Кроме названия, здесь приводится PCI ID карты, чтобы точно определить совместимость. Для Broadcom его можно посмотреть командой:

Находим нашу карту BCM4313 и в колонке Supported видим No — жаль, но этим драйвером она не поддерживается. Такого PCI ID здесь тоже в помине нет. Но настройка Wifi в Ubuntu ещё не закончена. Возвращаемся назад, и смотрим другой драйвер. Следующий по возможностям драйвер brcmsmac, он не поддерживает Mesh и IBSS, но нам и не нужно.

Открываем, смотрим и видим, что в первой же строчке есть наша карта:

Вот теперь мы нашли нужный драйвер и уже даже знаем, какие режимы он поддерживает. Подобным образом можно подобрать драйвер для любого другого адаптера.

Обратите внимание, что перед тем, как запускать драйвер, для него, возможно, необходимо будет установить прошивки. Установка драйвера Wifi Ubuntu не нужна, поскольку он вшит в ядро

Информация о прошивке находится ниже на странице:

В нашем случае нужно скачать и скопировать файлы brcm/bcm43xx-0.fw и brcm/bcm43xx_hdr-0.fw to в отдельную папку. Вот они — эти файлы, на вкладке tree, скачиваем и копируем в папку, которая указана в инструкции:

Как видите, всё немного сложно, но на самом деле там все действия описаны, и все ссылки есть, нужно только внимательно смотреть. Теперь осталось установить драйвер Wifi Ubuntu, для этого мы просто загрузим модуль ядра. Но перед этим нужно добавить в чёрный список все другие модули, которые ядро может загружать автоматически:

Выгружаем модули:

Добавляем их в чёрный список:

Теперь запускаем наш выбранный драйвер:

Вот и всё, теперь Wifi работает. Теперь вы знаете, как установить драйвер Wifi в Ubuntu, как его найти, как определить необходимую версию для вашей карты. Хотя мы рассмотрели способ для Broadcom, с другими адаптерами нужно работать похожим образом. Загружаем выбранный драйвер, запрещаем все остальные доступные. И не забудьте установить прошивку. Даже если Ubuntu не видит Wifi, вы сможете разобраться.

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

Теперь можно приступить к настройке нашего сервера как шлюза в Интернет.
Итак наш сервер имеет две сетевых платы: одна "смотрит" в Интернет, а вторая - в нашу локальную сеть. В сетевых настройках первой сетевой платы нам надо прописать IP адрес, шлюз, маску подсети и IP-адреса DNS-серверов, которые нам предоставил Интернет-провайдер. Пусть в нашем примере  нам провайдер предоставил:
внешний IP 195.34.10.134, 
шлюз провайдера 195.32.10.1,
DNS серверы: 195.34.32.116 и 87.240.1.2).

В настройках второй сетевой платы надо прописать IP адрес 192.168.20.1, который принадлежит нашей локальной сети (см. «Простая офисная локальная сеть с подключением к Интернет»).

Настройку сетевых интерфейсов можно произвести с помощью уже известной вам утилиты sysconfig  (см. пункт 9 базовой установки выше) или путем прямого редактирования файла /etc/rc.conf.

Так или иначе для нашего примера файл  /etc/rc.conf должен содержать следующие строки (сетевые настройки):

ifconfig_rl0="inet 195.34.10.134 netmask 255.255.255.0" # внешний IP и маска подсети, предоставленные провайдером
ifconfig_rl1="inet 192.168.20.1 netmask 255.255.255.0"   # внутренний IP, который будет шлюзом по умолчанию для нашей локальной сети
gateway_enable="YES" # режим маршрутизатора, позволяет пересылать пакеты между сетевыми интерфейсами
natd_enable="YES"  #  включаем NATD демон, который  занимается трансляцией адресов: внутренних во внешние и наоборот 
natd_interface="rl0"   # natd демон работает на внешнем интерфейсе
defaultrouter="195.34.10.1" # шлюз по умолчанию, который предоставил провайдер
firewall_enable="YES" # включаем firewall
firewall_type="OPEN" # пока ограничимся либеральным вариантом файрволла
hostname="myoffice.ru" # имя этого сервера
sshd_enable="YES" # для удаленного доступа к серверу

rl0 и rl1 — это имена сетевых интерфейсов в нашем примере (на чипе Realtek). Имена своих сетевых интерфейсов можете посмотреть командой ifconfig или через интерактивную утилиту настройки syscinstall. 

Если у вас есть еще какие либо удаленные локальные сети, например 192.168.40.0/24 и 192.168.50.0/24, доступ к которым из нашей локальной сети осуществляется через шлюзы 192.168.20.101 и  192.168.20.102 соответственно, то статические маршруты маршруты к этим сетям при необходимости можно задать следующим образом (в файле /etc/rc.conf):

static_routes="net1 net2"
routes_net1="192.168.40.0/24 192.168.20.101" # пакеты в подсетку 192.168.40.0/24 пойдут через шлюз 192.168.20.101
routes_net2="192.168.50.0/24 192.168.20.102" # пакеты в подсетку 192.168.50.0/24 пойдут через шлюз 192.168.20.102

Далее в файле /etc/resolv.conf прописываем адреса DNS серверов, которые нам предоставил провайдер:

domain myoffice.ru
nameserver 195.34.32.116
nameserver 87.240.1.2

Теперь чтобы изменения  вступили в силу, выполним команду /etc/netstart или перезагрузим сервер.

Проверяем работу сети.Сначала пингуем до шлюза провайдера:

# ping 195.34.10.1

Потом до сервера DNS:

# ping  195.34.32.116

А потом до любых интернет-узлов:

# ping yandex.ru

Пингуем машины в своей локальной сети, например:

# ping  192.168.20.4

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

Временное назначение ip адреса.

Честно говоря я не знаю для чего может пригодиться временное назначение сетевых настроек. Разве что допустим у вас какой-нибудь сервер который предназначен только для вашей локальной сети и вы вдруг решили быстренько обновить ПО через интернет на этом сервере, чтобы не ходить к шлюзу не раздавать интернет на нужный IP адрес итд.  Вы можете обойтись парой команд.

Например, мы знаем что на 192.168.3.109 точно есть доступ в интернет, назначаем этот IP адрес нашему интерфейсу, так же нужно указать маску сети(Рис.12):

ifconfig em0 192.168.3.109 netmask 255.255.255.0

или командой с короткой записью маски сети.

ifconfig em0 192.168.3.109/24

Рис.12 — Указание временных настроек для сетевого интерфейса em0.

Интернет может  не появиться, так как не указан шлюз по умолчанию. Прописываем его и пингуем гугловкие восьмёрки.(Рис.13)

route add default 192.168.3.1
ping 8.8.8.8

Рис.13 — Указываем шлюз по умолчанию. Проверяем ping.

Правильно ли мы прописали наш шлюз по умолчанию можно посмотреть в таблице маршрутизации. Она выводится с помощью команды «netstat -rn», Шлюз по умолчанию будет обозначен флагом UG.(Рис.14)

netstat -rn

Рис.14 — Вывод таблицы маршрутизации.

Если вы где-то ошиблись в написании или у вас указан другой шлюз, то можно удалить шлюз по умолчанию.

route del default

На этом временная настройка закончена, помните что после перезагрузки сервера  или отдельно службы networking, все временные настройки исчезнут.

Добавляем маршрут в сеть 192.168.0.0/16 (Маска 255.255.0.0) через основной шлюз(gateway) 192.168.3.1/24

route add 192.168.0.0/16 192.168.3.1

Вариант добавления маршрута с указанием полной маски.

route add -net 192.168.0.0 -netmask 255.255.0.0 192.168.3.1

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

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

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

# pkg install iftop

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

# iftop -i hn1 -P

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

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

Установка и настройка ipfw

Настройка фаервола сервера это тема отдельной статьи, тут я подробно останавливаться на этом не буду. Мы просто запустим фаервол на нашей freebsd 10, установим скрипт для безопасного редактирования правил. А дальше каждый уже сам по своему желанию сможет безопасно настраивать удаленно фаервол, не боясь потерять доступ к серверу.

Для работы ipfw необходимо либо пересобрать ядро с нужными функциями, любо подгружать модуль во время загрузки. Второй вариант проще и быстрее, воспользуемся им. Добавим в /etc/rc.conf строку:

firewall_enable="YES"

Если нам не нужен NAT, forward портов, то больше ничего делать не нужно, ipfw подключится во время загрузки сервера. Если мы оставим только эту строку и перезагрузим сервер, то удаленно мы к нему больше не подключимся, фаервол заблокирует все соединения. Чтобы того не произошло, указываем путь к файлу с правилами:

firewall_script="/usr/local/etc/ipfw/rc.firewall"

Идем в указанную папку и создаем файл следующего содержания:

#!/bin/sh -

fwcmd="/sbin/ipfw"
${fwcmd} -f flush
${fwcmd} -f queue flush
${fwcmd} -f pipe flush

${fwcmd} add allow ip from any to any

Это полностью открытый фаервол, который разрешает все подключения. Делаем файл исполняемым. Перезагружаем сервер. После перезагрузки подключаемся удаленно. Проблем не должно возникнуть, фаервол у нас ничего не блокирует. Убеждаемся в этом, запустив команду:

# ipfw show

В ответ получаем:

00100 115 15052 allow ip from any to any
65535 0 0 deny ip from any to any

На первом месте наше правило, которое все разрешает, на втором, запрещающее. Все пакеты попадают под первое правило. В Freebsd есть замечательный скрипт, с помощью которого можно безопасно настраивать ipfw. Работает он просто. Вы запускаете скрипт, редактируете правила, потом сохраняете их и принимаете изменения. Скрипт после применения правил выводит сообщение о том, что все ли в порядке, записываем правила или нет. Если вы где-то ошиблись и вас отключило от сервера, вы не сможете положительно ответить на вопрос. Скрипт ждет 30 секунд ответа и если его не получает, откатывается на предыдущую версию правил. Вы спокойно подключаетесь и смотрите, где ошиблись.

Копируем себе скрипт:

# cp /usr/share/examples/ipfw/change_rules.sh /usr/local/etc/ipfw_change_rules

и делаем его исполняемым:

# chmod 0700 ipfw_change_rules

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

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

Подробно вопрос настройки сервера Freebsd 10 я рассмотрел отдельно. Рекомендую ознакомиться с материалом. Здесь я не буду останавливаться на нюансах, а просто приведу команды, которые нам необходимы, без комментариев и подробных пояснений.

Любую настройку я предпочитаю начинать с обновления системы. Выполним его:

# freebsd-update fetch
# freebsd-update install

Теперь установим mc, я привык работать в нем:

# pkg install mc

Включаем синхронизацию времени. Для этого добавляем в /etc/rc.conf

ntpd_enable="YES"

И запускаем демон ntpd:

# service ntpd start

Теперь проверим сетевые настройки. Первый сетевой интерфейс я настроил еще во время установки, поэтому доступ в интернет на сервере уже есть. Вот мой конфиг сети:

hostname="freebsd"
ifconfig_hn0="SYNCDHCP"
ifconfig_hn1="inet 10.20.30.1 netmask 255.255.255.0"
defaultrouter="192.168.1.1"

Не забываем добавить dns сервер в /etc/resolv.conf.

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

Подготовка к установке

Как обычно, сначала нам нужно скачать установочный образ, и только потом может быть выполнена установка и настройка freebsd 11.

Шаг 1. Загрузка образа

Мы будем устанавливать последнюю версию FreeBSD 11.1, но если позже выйдет более новая версия, то я думаю, что статья будет все еще актуальна и для нее.

Шаг 2. Запись образа на диск

Далее вам нужно записать полученный образ на диск или на флешку. Вы можете использовать один из известных вам методов для этого. Например, в Linux вы можете использовать Unetbootin или Etcher, а в Windows есть Rufus.

Далее вставьте носитель в компьютер и измените настройки BIOS так, чтобы загрузка выполнялась из вставленного носителя. Чтобы войти в BIOS, во время загрузки нажмите одну из клавишей: F2, F11, F12 перед загрузкой операционной системы. Затем перейдите на вкладку «Boot» и поставьте там ваш носитель на первое место.

Файл /etc/hosts.

Файл /etc/hosts содержит таблицы сопоставления DNS имен с IP адресами. В первую очередь ваш сервер будет обращаться к файлу hosts, а потом уже к DNS-серверу.

Записи 127.0.0.1 добавился автоматически при установке.

Лично для себя я отметил полезным внести в hosts запись этого freebsd (IP адрес локальной сети — имя сервера). Теперь мы можем во всех конфигурационных файлах указывать DNS имя, а не IP адрес, а в случае необходимости за кротчайшее время изменить свой IP адрес поправив hosts и настройки интерфейса в /etc/rc.conf.

Это просто для примера вам этого делать не обязательно.

Приступаю к редактированию(Рис.10):

vi /etc/hosts

Вписываю:

192.168.3.11 freebsd.itdeer.loc

Рис.10 — Содержимое файла hosts.

Проверю попинговав имена из hosts.(Рис.11)

ping localhost
ping freebsd.itdeer.loc

Рис.11 — Пингуем имена из hosts.

Конфигурирование ядра

Здесь мы коротко затронем вопросы конфигурирования и компиляции ядра.

Наверно, многие содрагались, услышав устрашающую фразу — «компиляция ядра системы». Однако, если спокойно разобраться, ничего страшного здесь нет. С точки зрения обывателя ядро — это «прослойка» между прикладными программами и «железом».  Прикладные программы не взаимодействуют с «железом» и между собой напрямую, все взаимодействие осуществляется через ядро, и взаимодействие это осуществляется через стандартный интерфейс системных вызовов. Кроме интерфейса системных вызовов ядро содержит файловую подсистему, подсистему управления процессами, подсистему ввода-вывода, драйверы устройств (модули ядра)

Но нам пока важно лишь то, что ядро непосредственно взаимодействует с «железом», а FreeBSD  позволяет нам сконфигурировать ядро под конкретное «железо». Устанавливаемое по умолчанию ядро поддерживает много неиспользуемого в нашем случае оборудования и обеспечивает лишь базовую функциональность

Приступим к конфигурации ядра

Настройка ядра FreeBSD осуществляется путем редактирования в любом текстовом редакторе конфигурационного файла ядра. По умолчанию это /usr/src/sys/i386/conf/GENERIC . Но мы будем редактировать не его, а его копию/usr/src/sys/i386/conf/NEW_GENERIC.Для этого выполняем следующие команды:

# cd /usr/src 
# cp sys/i386/conf/GENERIC sys/i386/conf/NEW_GENERIC
# ee sys/i386/conf/NEW_GENERIC

В файле NEW_GENERIC удаляем поддержку оборудования, которого у нас нет, и функциональность, которая нам не нужна, просто комментируя или удаляя соответствующие строки. Если нет уверенности, то лучше ничего не удалять. Далее добавляем несколько параметров, чтобы включить NAT (трансляцию адресов — преобразование IP адресов локальной сети во внешний IP адрес), что даст возможность использовать в Интернете один внешний IP адрес всеми компьютерами локальной сети:

ident NEW_GENERIC
options IPFIREWALL
options IPDIVERT
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=1000

Здесь ident NEW_GENERIC определяет имя нового ядра (можно любое задать).options IPFIREWALL — включает FIREWALL.options IPFIREWALL_VERBOSE — включает логи файрвола.options IPDIVERT — разрешает перенаправлять пакеты с одного сетевого интерфейса на другой, опция необходима для трансляции адресов, для «расшаривания» Интернета.

Списки поддерживаемых устройств и опций можно найти в файлах:/usr/src/sys/i386/conf/NOTES и  /usr/src/sys/conf/NOTES.

Следующими командами выполняем компиляцию ядра:

# make buildkernel KERNCONF=NEW_GENERIC
# make installkernel KERNCONF=NEW_GENERIC

Перезагружаем компьютер. Все. Старое ядро автоматически будет сохранено в каталоге /boot/kernel.old.

Не PnP устройства можно настроить, отредактировав файл /boot/device.hints. Требуемому устройству (по аналогии с другими) можно задать номера прерываний, портов и пр. Тамже можно запретить использование какого-либо устройства. Например, у меня в «маме» была «криво» реализованна поддержка acpi, из-за чего глючила мышь, а перепрошивать bios не хотелось. Поэтому я просто отключил поддержку acpi в ядре, добавив в файл /boot/device.hints следующую строку:

hint.acpi.0.disabled="1"

Но это просто  пример. Надеюсь у вас все заработает нормально и без этого.

Еще один момент. Все определившиеся ядром устройства имеют буквенно-цифровые обозначения, например pcm0 — звуковая плата. Какие устройства, под какими именами и насколько удачно ядро смогло определить их и сконфигурировать, можно увидеть при загрузке системы или по команде dmesg.

Установка и настройка dnsmasq

Для нашего роутера на freebsd подойдет любой dns и dhcp сервер. Можно использовать традиционные named и dhcp-server. Но для простоты и удобства, когда не нужен дополнительный функционал, я предпочитаю использовать простой и быстрый в настройке dnsmasq.

Устанавливаем dnsmasq на Freebsd шлюз:

# pkg install dnsmasq

Приводим конфиг к следующему виду:

# mcedit /usr/local/etc/dnsmasq.conf
domain-needed
bogus-priv
interface=hn1
resolv-file=/etc/resolv.conf
dhcp-range=10.20.30.100,10.20.30.200,24h

Добавляем в /etc/rc.conf:

dnsmasq_enable="YES"

Запускаем программу:

# /usr/local/etc/rc.d/dnsmasq start

Все, теперь наш шлюз полностью готов. Настраиваем на клиентах получение настроек по dhcp и проверяем работу интернета.

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

Настройка сети через файл конфигурации.

Для настройки статического или динамического IP адреса нам надо отредактировать файл конфигурации сетевых интерфейсов — /etc/rc.conf мы будем редактировать его с помощью текстового редактора vi.(Рис.4) Сразу скажу, для того чтобы редактировать в vi нужно нажать букву «i», а чтобы  сохранить и закрыть документ надо нажать  «Esc» ввести «:wq!» и нажать «Enter».

vi /etc/rc.conf

Рис.4 — vi /etc/rc.conf.

Получение настроек сети по DHCP.

Чтобы назначить получение настроек по DHCP, нужно вписать( или изменить существующую) строчку в файл /etc/rc.conf.(Рис.5)

ifconfig_НАЗВАНИЕ-ИНТЕРФЕЙСА=»DHCP»

ifconfig_em0="DHCP"

Рис.5 — Получение сетевых настроек по DHCP.

Перезапускаем сетевую службу netif.(Рис.6)

/etc/rc.d/netif restart

Рис.6 — Перезапуск сетевой службы FreeBSD.

Смотрим активные сетевые интерфейсы, видим, полученный по DHCP, IP адрес интерфейса em0 — 192.168.3.6(Рис.7)

ifconfig -u

Проверяем выход в интернет пингуем гугловские восьмёрки.

ping 8.8.8.8

Рис.7 — Проверка активных интерфейсов и доступа к сети.

Пинги идут. Всё отлично!

Указание настроек сети вручную.

Чтобы назначить статичный адрес для нашей Freebsd нужно в файл /etc/rc.conf вписать две строки(Рис.8)

ifconfig_НАЗВАНИЕ-ИНТЕРФЕЙСА=»inet IP-АДРЕС-FREEBSD netmask МАСКА-СЕТИ»

defaultrouter=»IP-АДРЕС-ШЛЮЗА»

ifconfig_em0="inet 192.168.3.11 netmask 255.255.255.0"
defaultrouter="192.168.3.1"

Рис.8 — Статичные настройки сетевого интерфейса.

Перезапускаем сетевую службу.

/etc/rc.d/netif restart

Проверяем активные интерфейсы

ifconfig -u

Проверяем выход в интернет пингуем гугловские восьмёрки.

ping 8.8.8.8

Настройка выхода в Интернет рабочих компьютеров (рабочих станций) в локальной сети

Теперь переходим к настройке рабочих компьютеров.Если для рабочих компьютеров используются статические IP адреса (т.е. вводятся вручную, а не раздаются через сервер DHCP), то надо просто в настройках протокола TCP/IP у каждого рабочего компьютера прописать:

статический IP-адрес (уникальный для каждого компьютера в локальной сети, например 192.168.20.4),маску подсети (255.255.255.0 в нашем случае)шлюз по умолчанию (192.168.20.1, т.е. IP нашего сервера на FreeBSD, который и является шлюзом в Интернет)DNS серверы (такие же как у сервера, предоставленные провайдером)

Делается это в Windows XP через:

Пуск-Панель управления-Сетевые подключения на значке сетевого подключения к локальной сети кликаем правой кнопкой мыши, выбираем «свойства» — Настройки TCP/IP.

Перезагружаем компьютер и проверяем работу сети:

Пуск-Выполнить-cmd-ok

Далее в появившемся черном окне интерпретатора пингуем сначала наш сервер (он же — шлюз в нашей локальной сети), затем шлюз интернет-провайдера, днс-сервер, любые узлы в Интернет по имени, например:

ping  192.168.20.1
ping  195.34.10.1
ping  195.34.32.116
ping  ofnet.ru

Если все пакеты проходят, то вас можно поздравить с успехом.

Заключение

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

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

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

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

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: