FreeBSD 10.3. Установка шлюза на старый сервер HP ProLiant ML350 G3

Хотел выбросить старый сервер HP ProLiant ML350 G3, стало жалко (как обычно :-) решил, что в качестве шлюза для выхода в интернет будет самое то, да еще со SCSI дисками вообще «огонь»! В связи с тем, что уже полностью перешли только на лицензионный софт, а на покупку Windows Server  и уж тем более нового сервера денег нет и не будет. Решил поднять шлюз, ну а потом и файл-сервер на FreeBSD. На шлюзе решил использовать: DNS, DHCP, NTP, IPFW, SQUID, также потом поднять VPN между домом и офисом, ну и напоследок связать другой наш удаленный офис через туннел на IPSEC. Задачи обозначили, теперь вперед.

Начинаем все как обычно, только дистрибутив пришлось скачать 32-х битный, так как процессор не поддерживает 64-х битные команды.

Вставляем диск и разворачиваем на жесткий диск по стандартной процедуре. На сервере используется аппаратный RAID массив из 3-х SCSI дисков по 36 Gb, который опознался FreeBSD без установки дополнительных драйверов, что не может не радовать.

Настроил пока 1 интерфейс смотрящий в локальную сеть.

Затем обновил порты

Обновление портов через portsnap

Для первого запуска:

# portsnap fetch
# portsnap extract

Для всех последующих запусков:

# portsnap fetch
# portsnap update

Установил по совету умных товарищей portmaster (Обновляем пакеты через portmaster)

#cd /usr/ports/ports-mgmt/portmaster && make install clean

Найти нужный порт по названию

#whereis mc

Установка портов с помощью portmaster

Например,  установить файловый менеджер mc.

#portmaster /usr/ports/misc/mc

Сначала утилита сделает make config для каждого порта, от которого зависит mc. Затем отвечаем на несколько вопросов по установке, а дальше все идет в автоматическом режиме. Portmaster скачивает пакеты (в несколько потоков) и устанавливает их. На все вопросы по настройке портов мы уже ответили

Если у вас в distfiles лежат старые версии пакетов, portmaster будет интересоваться что с ними делать — сохранить на всякий случай или стереть? Есть ключи «-D» — не удалять пакеты и «-d» — удалять все старые пакеты. Почистить старые пакеты можно командой:

#portmaster --clean-distfiles-all

Для удаления ПО используйте portmaster с ключом «-e», например

#portmaster -e mc

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

Обновление портов. Для начала выясним, какие порты можно обновить

portmaster -L > portmaster.out && less portmaster.out

«q» — выйти из просмотра

Программа делит порты на 4 группы, в соответствии с тем, зависит ли порт от других портов и зависят ли установленные порты от него. Кстати, корневые (root) порты и лиственные (leaf) можно смело удалять, если они кажутся не нужными. Другой вопрос, что они могут быть нужны для сборки или установки новых портов, тогда portmaster’у в скором времени придется тянуть их снова.

Определив, какие порты следует обновить, даем команду «portmaster -d port1 port2 …». О ключе -d смотри выше. Следом идет список портов, которые нужно обновить (или установить, если они еще не установлены).

Обновление всех портов, которым это необходимо

#portmaster -vda

Для информации стандартная установка портов без лишних вопросов

Дальше установил mc, чтобы много не спрашивал со следующими ключами

cd /usr/ports/misc/mc

make BATCH=yes install clean

Либо,

Установка порта единственной командой make install чревата возможными частыми остановками процесса инсталляции из-за ожидания вмешательства пользователя: некоторым портам требуется ввод опций. Чтобы избежать траты времени, особенно для портов с многими зависимостями, запустите сначала make config-recursive чтобы выполнить конфигурирование всех опций за один заход. Далее, запустите make install [clean].

Подсветка синтаксиса в mc, а точнее в редакторе mcedit

В каталоге /usr/local/share/mc/syntax

файл Syntax

file .\* unknown
include sh.syntax

Как вариант, для неизвестных расширений включить расцветку Shell syntax

Настройка SSH

/etc/ssh/sshd_config

Файл конфигурации

Port 22 - рекомендую сменить
Protocol 2
AddressFamily inet (только IPv4)
ListenAddress 0.0.0.0 - прописал локальный адрес
PermitRootLogin no - запретить заходить через root

Синхронизация часов через NTP

https://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/network-ntp.html

Для того, чтобы сервер NTP запускался при загрузке, добавьте строку ntpd_enable="YES" в файл /etc/rc.conf.

Запускаем сам сервер:

# ntpd start
Starting ntpd.
Проверяем работоспособность:
# sockstat | grep 123
root ntpd 789 20 udp6 *:123 *:*
root ntpd 789 21 udp4 *:123 *:*
root ntpd 789 22 udp4 192.168.146.254:123 *:*
root ntpd 789 23 udp4 A.B.C.D:123 *:*
root ntpd 789 24 udp6 ::1:123 *:*
root ntpd 789 25 udp6 fe80::1%lo0:123 *:*
root ntpd 789 26 udp4 127.0.0.1:123 *:*
Пробуем синхронизировать время:
# ntpdate -q 192.168.146.254
server 192.168.146.254, stratum 3, offset 0.000012, delay 0.02568
22 Oct 13:59:47 ntpdate[36562]: adjust time server 192.168.146.254 offset 0.000012 sec
Работу серверов с которых мы синхронизируем время можно увидеть так:
# ntpq -p
 remote refid st t when poll reach delay offset jitter
==============================================================================
+time.ooonet.ru 194.190.168.1 2 u 729 1024 377 58.389 -5.841 0.153
*ntp2.ivlan.net 194.190.168.1 2 u 493 1024 377 15.364 2.025 0.079
+95-104-192-10.n 194.190.168.1 2 u 655 1024 377 29.421 -5.652 0.613

Не забываем открыть в фаерволе порт 123 наружу.

ipfw="/sbin/ipfw -q"
internet_interface="bge1" # WAN Interface
$ipfw add 00120 allow udp from any to any 123 out via $internet_interface keep-state            # NTP

DNS на FreeBSD 10

Подробное описание BIND 9 DNS http://www.bog.pp.ru/work/bind.html

Документация DNS http://www.hk.freebsd.org/doc/ru/books/handbook/network-dns.html

http://dtopcms.ru/docs/freebsd/bind99.shtml

BIND  9 настройка DNS сервера http://muff.kiev.ua/content/bind-9-nastroika-dns-servera

FreeBSD 10.3, Bind 9.9 установлен из портов, т.к. штатно уже его нет в системе.

# portmaster /usr/ports/dns/bind99

Файл конфигурации находится здесь: /usr/local/etc/namedb/named.conf

Смотрим, что в логах

 tail -F /var/log/named.log
Oct 24 11:08:10 gwkazan named[32039]: sizing zone task pool based on 162 zones
Oct 24 11:08:10 gwkazan named[32039]: zone 'kzn.local' allows updates by IP address, which is insecure
Oct 24 11:08:10 gwkazan named[32039]: automatic empty zone: EMPTY.AS112.ARPA
Oct 24 11:08:10 gwkazan named[32039]: configuring command channel from '/usr/local/etc/namedb/rndc.key'
Oct 24 11:08:10 gwkazan named[32039]: open: /usr/local/etc/namedb/rndc.key: permission denied
Oct 24 11:08:10 gwkazan named[32039]: reloading configuration succeeded
Oct 24 11:08:10 gwkazan named[32039]: reloading zones succeeded
Oct 24 11:08:10 gwkazan named[32039]: all zones loaded
Oct 24 11:08:10 gwkazan named[32039]: running
Oct 24 11:08:14 gwkazan named[32039]: invalid command from 127.0.0.1#56130: bad auth

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

#id bind
uid=53(bind) gid=53(bind) groups=53(bind)

Точно убедиться, что named запущен:

#ps -ax | grep named
32039 - Ss 0:53.72 /usr/local/sbin/named -u bind -c /usr/local/etc/namedb/named.conf
47215 1 RL+ 0:00.00 grep named
#sockstat | grep :53
bind named 32039 20 tcp4 192.168.146.254:53 *:*
bind named 32039 21 tcp4 127.0.0.1:53 *:*
bind named 32039 512 udp4 192.168.146.254:53 *:*
bind named 32039 513 udp4 127.0.0.1:53 *:*

Проверить наличие резолва (разрешение имени) можно командой:

nslookup mydomain.ru
Server: 127.0.0.1
Address: 127.0.0.1#53Name: mydomain.ru
Address: 194.87.0.51

Если IP-адрес выдается, то вы все сделали правильно.

Перезапуск named

rndc reload

Получить статистику

rndc status

Дамп кеша в файл (debug проблем резолва какого либо домена в интернете)

rndc dumpdb

Полный сброс кеша вашего DNS сервера:

rndc flush

DHCP

# portmaster /usr/ports/net/isc-dhcp43-server/

убираем поддержку IpV6, по окончании установки читаем и следуем инструкции

===> SECURITY REPORT:
 This port has installed the following files which may act as network
 servers and may therefore pose a remote security risk to the system.
/usr/local/sbin/dhcpd
/usr/local/bin/omshell

This port has installed the following startup scripts which may cause
 these network services to be started at boot time.
/usr/local/etc/rc.d/isc-dhcpd

If there are vulnerabilities in these programs there may be a security
 risk to the system. FreeBSD makes no guarantee about the security of
 ports included in the Ports Collection. Please type 'make deinstall'
 to deinstall the port if this is a concern.

For more information, and contact details about the security
 status of this software, see the following webpage:
https://www.isc.org/products/DHCP/

===>>> pkg-message for isc-dhcp43-server-4.3.5
Always:
**** To setup dhcpd, please edit /usr/local/etc/dhcpd.conf.

**** This port installs the dhcp daemon, but doesn't invoke dhcpd by default.
 If you want to invoke dhcpd at startup, add these lines to /etc/rc.conf:

dhcpd_enable="YES" # dhcpd enabled?
 dhcpd_flags="-q" # command option(s)
 dhcpd_conf="/usr/local/etc/dhcpd.conf" # configuration file
 dhcpd_ifaces="" # ethernet interface(s)
 dhcpd_withumask="022" # file creation mask

**** If compiled with paranoia support (the default), the following rc.conf
 options are also supported:

dhcpd_chuser_enable="YES" # runs w/o privileges?
 dhcpd_withuser="dhcpd" # user name to run as
 dhcpd_withgroup="dhcpd" # group name to run as
 dhcpd_chroot_enable="YES" # runs chrooted?
 dhcpd_devfs_enable="YES" # use devfs if available?
 dhcpd_rootdir="/var/db/dhcpd" # directory to run in
 dhcpd_includedir="<some_dir>" # directory with config-
 files to include

**** WARNING: never edit the chrooted or jailed dhcpd.conf file but
 /usr/local/etc/dhcpd.conf instead which is always copied where
 needed upon startup.

Редактируем файл конфигурации

#mcedit /usr/local/etc/dhcpd.conf

 

Настройка логов ISC DHCP Server

Редактируем syslog.conf:

ee /etc/syslog.conf

Сохраняем сообщения о присвоении адресов в dhcpd.log, предупреждения и ошибки дублируем в messages.

Добавляем следующие строки:

!dhcpd
*.info                                          /var/log/dhcpd.log
!*

Задаем параметры ротации.

Проверяем, поддерживается ли вашей системой newsyslog.conf.d

ls /etc/newsyslog.conf.d && echo ok

Если в вашей системе отсутствует папка newsyslog.conf.d, редактируем newsyslog.conf:

ee /etc/newsyslog.conf

Если папка newsyslog.conf.d имеется, создаем папку с тем же именем в /usr/local/etc:

mkdir /usr/local/etc/newsyslog.conf.d

Создаем файл c правилами ротации логов:

ee /usr/local/etc/newsyslog.conf.d/isc-dhcp-server

Ежедневная ротация в полночь с сохранением логов за неделю:

/var/log/dhcpd.log                      600  7     *    @T00  JC

Создаем лог-файл:

touch /var/log/dhcpd.log

Перезагружаем конфигурацию syslogd:

service syslogd reload

Запуск ISC DHCP Server

Редактируем rc.conf:

ee /etc/rc.conf

Включаем запуск ISC DHCP Server, и задаем сетевые интерфейсы, обслуживаемые нашим сервером:

dhcpd_enable="YES"
dhcpd_ifaces="fxp0"

Запускаем dhcpd:

service isc-dhcpd start

 

http://itadept.ru/freebsd-dhcp-server/

https://sergeysl.ru/freebsd-isc-dhcp-server/


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

ВАЖНО: 

РАЗОБРАТЬСЯ КАК РАБОТАЕТ net.inet.ip.fw.one_pass=0 ИЛИ 1 (ОГРОМНАЯ РАЗНИЦА)

ИСХОДЯЩИЕ ФИЛЬТРУЮТСЯ ДО НАТА, ВХОДЯЩИЕ ПОСЛЕ НАТА!

/etc/rc.conf

#IPFW On
dummynet_enable="YES"
firewall_enable="YES"
firewall_nat_enable="YES"
firewall_script="/etc/firewall.conf"
firewall_logging="YES"

/etc/sysctl.conf

net.inet.ip.fw.one_pass=0 #после обработки канала пакет повторно вводится в брандмауэр по следующему правилу
net.inet.ip.fw.verbose_limit=5 #разрешены подробные сообщения

/etc/rc.conf

#!/bin/sh -

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

${fwcmd} add allow ip from any to any

Это полностью открытый файервол, который разрешает все подключения.

Запускаем файервол

#service ipfw start | stop #запуск или останов файервола

#service ipfw restart #перезапуск ipfw без перезагрузки

#ipfw show #просмотр правил со счетчиками

#ipfw zero #сброс всех счетчиков

#tail -F /var/log/security | colorize #просмотр журнала colorize ставиться отдельно для красоты

… allow log logamount 10000 … занести прохождение пакета в лог
#!/bin/sh
ipfw -q -f flush
ipfw -f pipe flush
ipfw -f queue flush

#Set rules command prefix
cmd=»ipfw -q add»
skip=»skipto 500″
pif=»bge1″ #Interface name of NIC attached to Internet
ks=»keep-state»
good_tcpo=»22,25,37,53,80,443,110,993,465,587″

ipfw=»/sbin/ipfw -q»
LanOut=»bge1″
LanIn=»bge0″
IpOut=»1.2.3.4″
IpIn=»192.168.0.254″
NetIn=»192.168.0.0/24″
proxy_ip=»192.168.0.254″

#http, https, ftp
port=»80,443,20,21″
#rAdmin, RDP, SSH(2), Telnet
port_admins=»4899,3389,22,24,23,2593,2710,5003,23322,10000″

${ipfw} table 1 flush
${ipfw} table 2 flush

${ipfw} table 1 add 1.2.3.5 #Admin WAN
${ipfw} table 2 add 192.168.0.240 #Admin LAN

$cmd 00010 allow tcp from table\(2\) to me 23322 in via ${IpIn} keep-state # SSH LAN
$cmd 00020 allow tcp from table\(1\) to me 23322 in via ${IpOut} keep-state # SSH WAN

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

Документация ipfw

Настройка Freebsd 10

IPFW

IPFW — примеры боевых правил

http://rtfm.2gogo.ru/freebsd-chast-11-ustanovka-i-nastroyka-firewall

https://habrahabr.ru/post/111580/ — Обзор и сравнение способов настройки NAT на FreeBSD

Пример логичных понятных правил+++ http://forum.lissyara.su/viewtopic.php?t=16216

 

VPN открыть порт через IPFW для MPD5

После запуска VPN-сервера возникает вопрос как же открыть порты для vpn. Как открыть доступ для mpd5 на FreeBSD. Файрвол IPFW.

#!/bin/sh
ipfw=’/sbin/ipfw -q’

# Внешний интерфейс. Подставьте сюда свой
oif=’re0′

# Здесь указываем IP адреса, которые будут присваиваться пользователям, использующим vpn. Подставьте ваши значения, можно указать диапазон адресов например: 192.168.0.0/24
vpn=192.168.0.10,192.168.0.11,192.168.0.12

#Разрешает входящие пакеты по протоколу tcp от любого хоста на ваш сервер по внешнему интерфейсу на порт 1723 (используется для инициации и управления GRE-соединением)
${ipfw} add allow tcp from any to me 1723 in via ${oif}

#Разрешает исходящие пакеты от вашего сервера по пору 1723 по внешнему интерфейсу на любой хост сети
${ipfw} add allow tcp from me 1723 to any out via ${oif}

#Разрешить исходящие пакеты по протоколу *GRE от вашего сервера на любой хост сети по внешнему интерфейсу
${ipfw} add allow gre from me to any out via ${oif}

#Разрешить входящие пакеты по протоколу *GRE от любого хоста на ваш сервер по внешнему интерфейсу
${ipfw} add allow gre from any to me in  via ${oif}

# Разрешает все исходящие пакеты по протоколу ip от любого хоста на внутренние IP-адреса VPN-клиентов
${ipfw} add allow ip from any to ${vpn} out

# Разрешает все входящие пакеты по протоколу ip от IP-адресов VPN-клиентов на любой хост
${ipfw} add allow ip from ${vpn} to any in

Последние 2 правила немножко непонятны по своей логике так как компьютер подключенный через VPN является одновременно и внешним хостом и хостом входящим в локальную сеть.

*GRE — протокол туннелирования сетевых пакетов, разработанный компанией Cisco Systems. Его основное назначение — инкапсуляция пакетов сетевого уровня сетевой модели OSI в IP пакеты.

http://www.lissyara.su/articles/freebsd/tuning/ipfw_nat/ — Подробное руководство по ipfw nat

MPD5

http://itadept.ru/freebsd-mpd5-server/

Open VPN

Установим из портов:

# portmaster /usr/ports/security/openvpn

в конце нам сообщают:

### ————————————————————————
### Edit /etc/rc.conf[.local] to start OpenVPN automatically at system
### startup. See /usr/local/etc/rc.d/openvpn for details.
### ————————————————————————
### Connect to VPN server as a client with this command to include
### the client.up/down scripts in the initialization:
### openvpn-client <spec>.ovpn
### ————————————————————————
### For compatibility notes when interoperating with older OpenVPN
### versions, please, see <http://openvpn.net/relnotes.html>
### ————————————————————————

Делаем, что просят. Добавляем openvpn в автозагрузку:

# echo 'openvpn_enable="YES"' >> /etc/rc.conf

либо ручками :-) в редакторе #ee /etc/rc.conf

Как опция установка модуля к WebMin (здесь подробная статья http://serveradmin.ru/web-interfeys-openvpn-ustanovka-i-nastroyka/)

Клиент http://howitmake.ru/blog/win/194.html

https://openvpn.net/index.php/download/community-downloads.html

https://habrahabr.ru/post/233971/

http://itadept.ru/freebsd-openvpn/

 


Мониторинг FreeBSD

Cредства мониторинга дисков:

df — показывает смонтированные подразделы, их размер и свободное место на них
mount — показывает смонтированные подразделы и флаги из монтирования
fdisk /dev/ad0 — показывает информацию о диске ad0 и разделах на нем
disklabel /dev/ad0s1 — показывает список подразделов в первом разделе диска ad0
swapinfo — показывает список подразделов свопинга на дисках и их использование
fstat — показывает список открытых файлов (имена файлов не выводятся)
pstat -f — выводит список открытых файлов (имена файлов не выводятся)
systat -vmstat n — каждые n секунд выводит количество транзакций с диском в секунду, объем записанных/считанных данных на диск в секунду, средний размер транзакции и процент
времени в течение которого диск был занят работой.
iostat — выводит информацию, аналогичную systat -vmstat, но не выводит занятости диска по времени и может выводить среднюю статистику с момента загрузки.
vmstat — выводит количество операций на диске в секунду
/stand/sysinstall — можно посмотреть и изменить разметку диска и монтирование
less /etc/fstab — таблица монтирования при загрузке

Мониторинг процессора и памяти:

top — аналогичная информация в сокращенном виде + использование памяти и свопа в мегабайтах, список процессов, отсортированных по использованию процессора.
ps afx — список запущенных процессов и время процессора на каждый
systat -vmstat n — вывод показателей загрузки (number of jobs in the run queue averaged over 1, 5 and 15 min), состояния памяти (в страницах), количества процессов в группах, количество вызовов специальных функций ядра (traps, interrupts, system calls, network software interrupts), использование процессора, трансляции имен, активность свопа, прерывания, а также информацию по использованию диска (см)

Информация о времени и пользователях:

date — выводит текущее время и дату
w — выводит, сколько времени назад система загрузилась и залогиненных пользователей
last — выводит историю перезагрузок и входов пользователей

Мониторинг информации о сетевой активности и всех подключениях:

ifconfig — список сетевых интерфейсов с ip-адресами, масками, mac-адресами, типами карт и их статусами (названия карточек можно посмотреть в файле конфигурации ядра)
systat -ifstat n  — объем трафика за n секунд на всех сетевых интерфейсах
netstat — вывод активных сетевых соединений (сокетов)
systat -netstat n  — аналог netstat в реальном времени
systat -ip n  — таблица IP-пакетов и ошибок по типам за n секунд
systat -tcp n  — таблица TCP-пакетов и ошибок по типам за n секунд
systat -icmp n  — таблица ICMP-пакетов и ошибок по типам за n секунд
netstat -ibt — список интерфейсов, разбитых по ip-адресам (!) с объемом трафика на  каждом, количеством ошибок, коллизий, значением watchdog-таймера
netstat -r — таблица маршрутизации arp -a — таблица ARP
tcpdump -i rl0 host 192.168.1.2 and port 80 — сниффер пакетов на интерфейсе rl0, фильтрующий пакеты, содержащие адрес 192.168.1.2 и порт 80
trafshow -i rl0 — программа для сортировки и вывода сетевых потоков (устанавливается дополнительно пакетом или из портов)

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

iftop позволяет в режиме реального времени посмотреть активность на сетевом интерфейсе.

# portmaster /usr/ports/net-mgmt/iftop - устанавливаем

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

# iftop -i bge0 -P

 fail2ban

http://rtfm.2gogo.ru/fail2ban-luchshaya-zashchita-ot-atak

http://rtfm.2gogo.ru/freebsd-podnimaem-ftp-na-proftpd

 http://rtfm.2gogo.ru/freebsd-chast-12-bruteblock-zashchishchaem-ssh

Защита от брутфорса Fail2ban  http://www.shirrma.ru/2014/09/fail2ban.html

Запрет ненужных сайтов

http://www.digincore.org/

http://www.urlblacklist.com/?sec=download

+++To-do: Фильтруем вся и всё https://habrahabr.ru/post/188444/

Webmin

Руководство по webmin http://break-people.ru/cmsmade/?page=unix_webmin_howto

portmaster /usr/ports/sysutils/webmin

Always:
After installing Webmin for the first time you should perform the following
steps as root:

* Configure Webmin by running /usr/local/lib/webmin/setup.sh

* Add webmin_enable=»YES» to your /etc/rc.conf

* Start Webmin for the first time by running /usr/local/etc/rc.d/webmin start

The parameters requested by setup.sh may then be changed from within Webmin
itself.

Делаем чего просят:

# /usr/local/lib/webmin/setup.sh
***********************************************************************
* Welcome to the Webmin setup script, version 1.820 *
***********************************************************************
Webmin is a web-based interface that allows Unix-like operating
systems and common Unix services to be easily administered.

Installing Webmin in /usr/local/lib/webmin …

***********************************************************************
Webmin uses separate directories for configuration files and log files.
Unless you want to run multiple versions of Webmin at the same time
you can just accept the defaults.

Log file directory [/var/log/webmin]:

***********************************************************************
Webmin is written entirely in Perl. Please enter the full path to the
Perl 5 interpreter on your system.

Full path to perl (default /usr/local/bin/perl):

Testing Perl …
Perl seems to be installed ok

***********************************************************************
Operating system name: FreeBSD
Operating system version: 10.3

***********************************************************************
Webmin uses its own password protected web server to provide access
to the administration programs. The setup script needs to know :
— What port to run the web server on. There must not be another
web server already using this port.
— The login name required to access the web server.
— The password required to access the web server.
— If the webserver should use SSL (if your system supports it).
— Whether to start webmin at boot time.

Web server port (default 10000):
Login name (default admin):
Login password:
Password again:

Use SSL (y/n): y
***********************************************************************
Creating web server config files..
..done

Creating access control file..
..done

Creating start and stop scripts..
..done

Copying config files..
..done

Changing ownership and permissions ..
..done

Running postinstall scripts ..

NAT с помощью ipfw nat

Поддержка ipfw nat появилась начиная с версии FreeBSD 7.0
В ядро:
options IPFIREWALL
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_FORWARD
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=50
options IPFIREWALL_NAT
options LIBALIAS

В /etc/rc.conf добавляем
firewall_enable=«YES»
firewall_nat_enable=«YES»
firewall_type=»/etc/firewall»
gateway_enable=«YES»

В /etc/sysctl.conf добавить:
net.inet.ip.fw.one_pass=1

em0 – внешний интерфейс
192.168.0.0/24 – внутренняя сеть
200.200.200.200 – внешний адрес

Пример:

/sbin/ipfw add nat 1 config log if em0 reset same_ports
/sbin/ipfw add nat 1 ip from 192.168.0.0/24 to not table\(10\) via em0
/sbin/ipfw add nat 1 ip from any to 200.200.200.200 via em0
Где table 10 – не идет через нат

Некоторую статистику можно посмотреть так:
ipfw nat 1 show


Простой способ отладить IPFW http://break-people.ru/cmsmade/index.php?page=unix_webmin_practice_how_to_use_ipfw_in_webmin_on_freebsd_basic

colorize — это утилита, которая может давать нам красивые логи :) устанавливается из портов — /usr/ports/sysutils/colorize/ . Желательно её установить.


Локализация FreeBSD на UTF-8

UTF-8 в консоли и терминале FreeBSD 10.2

http://blog.marvins.ru/administrirovanie/utf-8-v-konsoli-i-terminale-freebsd-10-2.html

  1. Добавляем в файл /boot/loader.conf

  2. Добавляем в файл /etc/rc.conf способ переключения раскладки в консоли клавишами CTRL+SHIFT
  3. Проверяем тип консоли в файле /etc/ttys, должно быть xterm
  4. Редактируем класс «russian» в файле /etc/login.conf, должно получиться следующее:
  5. Обновляем /etc/login.conf.db командой:
  6. Локализуем shell, я использую tcsh, для него редактируем файл ~/.cshrc, добавив в него две следующие строки:
  7. Пользователю необходимо прописать класс russian, командой:

    Где user_name — имя пользователя
    При создании нового пользователя можно сразу прописать нужный нам класс командой

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

ps:

2) Для локализации bash в файл /etc/profile допишем:

LANG=ru_RU.UTF-8; export LANG
LC_ALL=ru_RU.UTF-8; export LC_ALL
MM_CHARSET=UTF-8; export MM_CHARSET

3) Для локализации csh в файл /etc/csh.login добавим:

setenv LANG ru_RU.UTF-8
setenv MM_CHARSET UTF-8

SQUID

«Прозрачный» Squid с фильтрацией HTTPS ресурсов без подмены сертификатов (x86)  https://habrahabr.ru/post/267851/ SQUID на FreeBSD http://itadept.ru/freebsd-squid/

Прозрачный прокси для https в Squid http://losst.ru/prozrachnyj-proksi-dlya-https-v-squid

http://nonelife.ru/squid-transparent-%D0%BF%D1%80%D0%BE%D0%B7%D1%80%D0%B0%D1%87%D0%BD%D1%8B%D0%B9-%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D0%B4%D0%BB%D1%8F-httpsssl-%D1%82%D1%80/