Хотел выбросить старый сервер 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
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
- Добавляем в файл /boot/loader.conf
1kern.vty=vt - Добавляем в файл /etc/rc.conf способ переключения раскладки в консоли клавишами CTRL+SHIFT1keymap=«ru.win»
- Проверяем тип консоли в файле /etc/ttys, должно быть xterm1ttyv0 «/usr/libexec/getty Pc» xterm on secure
- Редактируем класс «russian» в файле /etc/login.conf, должно получиться следующее:1234russian|Russian Users Accounts:\:charset=UTF—8:\:lang=ru_RU.UTF—8:\:tc=default:
- Обновляем /etc/login.conf.db командой:1cap_mkdb /etc/login.conf
- Локализуем shell, я использую tcsh, для него редактируем файл ~/.cshrc, добавив в него две следующие строки:12setenv LANG ru_RU.UTF—8setenv MM_CHARSET UTF—8
- Пользователю необходимо прописать класс russian, командой:1pw user mod user_name —L russian
Где user_name — имя пользователя
При создании нового пользователя можно сразу прописать нужный нам класс командой1pw useradd user_name —L russianВот и все, перезайдите в 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/