пятница, 3 июля 2009 г.

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

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

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

ifconfig_fxp0="inet 84.246.77.15 netmask 255.255.255.0"
ifconfig_rl0="inet 192.168.0.55 netmask 255.255.255.0"

гду fxp0 - внешний интерфейс, rl0 - внутренний. В данном примере сервер является шлюзом между сетью интернет и внутренней сетью. Поэтому для того, чтобы внутренние пользователи могли получить доступ к сети Интернет, на сервере необходимо сконфигурировать службу NAT. Для этого в rc.conf необходимо добавить следующие строки:

defaultrouter="84.246.77.1" - указываем роутер для отправки пакетов в инет (выдается провайдером)
gateway_enable="YES" - указываем, что наш сервер является шлюзом

ipnat_enable="YES" - включаем систему натирования, которая будет автоматически загружаться
ipnat_program="/sbin/ipnat -CF -f" - флаги -CF очищают таблицу правил NAT, а -f указывает, чт нужно загрузить правила из файла
ipnat_rules="/etc/ipnat.rules" - путь к файлу с правилами
ipnat_flags=""

Теперь при перезагрузке системы NAT будет подниматься автоматически. Осталось составить таблицу правил натирования и сохранить её в файл /etc/ipnat.rules. В простейшем случае она будет состоять из одной строки:

map fxp0 192.168.0.0/24 ->85.249.77.16/32

то есть при запросах из подсети 192.168.0.0/24 в интернет пакетам будет присваиваться адрес отправителя 85.249.77.16/32. Конечно же будет производиться и обратная трансляция адресов.

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

rdr fxp0 0.0.0.0/0 port 26000 -> 192.168.0.10 port 26000 tcp

Более подробно про составление правил можно почитать в файлах из папки /usr/share/examples/ipfilter/. Осталось только стартануть ipnat командой

/etc/rc.d/ipnat start

и при необходимости после этого использовать команду

/sbin/ipnat -CF -f /etc/ipnat.rules

Все, система работает. Однако, в случае если у вашего провайдера идет привязка сетевых карт по MAC-адресу, а вам необходимо её заменить, то установить MAC-адрес на сетевой карте програмным путем можно с помощью команды вида:

ifconfig fxp0 ether 10-0F-3D-1A-E3-45

На этом вроде все.

Начало

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

А теперь пару слов о том, что можно сделать сразу после установки новой системы. Лично я прежде чем что-либо устанавливать, предпочитаю обновить порты (коллекция программ, оптимизированых для FreeBSD). Для этого можно использовать команды:

portsnap fetch
- загружает дерево портов в заархивированном виде,
portsnap extract
- распаковывает и переписывает дерево портов.
В первую очередь стоит устанавливать файловый менеджер Midnight Commandeer (mc). Чтобы узнать где находится соответствующий порт, можно выполнить команду
whereis mc

однако, с большой долей вероятности, он окажется в директории /usr/ports/misc/mc. Переходим в эту директорию и выполняем команду
make

появится окошко с настройками, где все можно оставить по умолчанию. После того как вы выбирете OK, mc скомпилируется. Для окончательной установки нужно выполнить команду
make install

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