Не так давно нужно было поставить гейт в Интернет для одного интернет-кафе. Кафе имело доступ к Интернету через ADSL-модем с Ethernet интерфейсом и локалку на 50 компьютеров со статическими адресами. Решено было поставить именно шлюз, а не купить обычной роутер с NAT, так как в роутерах все равно крутится урезанный линукс, а шлюз на базе ПК имел гораздо больше возможностей. К тому с таким количеством компьютеров использование прокси-сервера для кеширования веб-страниц давало определенную экономию траффика. Машинка имела параметры уровня Pentium2-600 с 256 Mb оперативной памяти. Вариант установки оффтописка отпадал из-за слабых мощностей и ненадежности и отсутствия гибкости. К тому же FreeBSD идеально подходит для гейтов в силу малой требовательности ресурсов и надежности работы. Насколько мне известно по хоум-провайдингу, гейты на FreeBSD могут спокойно натить полосу до 500-600 mbit/sec

Итак, дано - установить FreeBSD на компьютер, настроить NAT, настроить прозрачный прокси.

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

options IPFIREWALL #добавил поддержку файрволла
options IPFIREWALL_VERBOSE #логгирование
options IPFIREWALL_VERBOSE_LIMIT=100 #органичение количества записей в лог
options IPFIREWALL_DEFAULT_TO_ACCEPT #файерволл "открыт" по умолчанию
options IPFIREWALL_FORWARD
options IPDIVERT #включение поддержки перенаправления пакетов
options DUMMYNET #может понадобится для ограничения скорости

После пересборки ядра настала очередь правки /etc/rc.conf для включения NAT. NAT будет использовать в виде отдельного демона. У меня на шлюзе стояло 2 сетевые карточки, одна смотрела в интернет через модем (настроенный в режиме моста), вторая в локальную сеть.
Соотвественно, первая была re0 и имела адрес вида 213.230.x.x, вторая rl0 - адрес 192.168.0.1

Правим /etc/rc.conf

defaultrouter=213.230.x.x #указываем основной шлюз
ifconfig_re0="inet 213.230.x.x netmask 255.255.255.252" #задаем внешний интернетовский адрес
ifconfig_rl0="inet 192.168.0.1 netmask 255.255.255.0" #задаем внутренний адрес
gateway_enable="YES" #зайдествуем режим шлюза
natd_enable="YES" #включем NAT
nat_interface="re0" #указываем натируемый интерфейс
nat_flags="-f /etc/natd.conf" #файл настройки демона NAT
firewall_enable="YES"

nameserver 195.158.0.1
nameserver 195.158.0.3

После сохранения и перезагрузки (это не обязательно, можно поднять интерфейсы и демон не перезагружая, но проверить как что поднимается все же нужно), проверяем доступность в обоих сетках, пропинговав локальные машины и хосты в интернете.
Уже на данном этапе интернет доступен локальным компьютерам, единственное что нужно дополнительно настроить на них, так это указать на них шлюз по умолчанию 192.168.0.1 и в строке DNS-сервера также прописать 192.168.0.1

Пришла очередь поставить squid. Для начала обновляем .
После успешного обновления переходим собственно к установке.

#cd /usr/ports/www/squid31/
#make install clean

После окончания установки идем править файл настройки squid, находящегося по адресу /usr/local/etc/squid/squid.conf


# Adapt to list your (internal) IP networks from where browsing
# should be allowed
#Здесь указываются подсетки, которые имеют доступ к нашей проксе, у нас подсетка 192.168.0.0, потому оставляем только ее
#acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
#acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/24 # Указываем сеть 192.168.0.1-254
#IPv6 Not Available:acl localnet src fc00::/7 # RFC 4193 local private network range
#IPv6 Not Available:acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines

acl SSL_ports port 443
acl Safe_ports port 80 # https
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # httpss
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # https-mgmt
acl Safe_ports port 488 # gss-https
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling https
acl CONNECT method CONNECT

#
# Recommended minimum Access Permission configuration:
#
# Only allow cachemgr access from localhost
https_access allow manager localhost
https_access deny manager

# Deny requests to certain unsafe ports
https_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports
https_access deny CONNECT !SSL_ports

# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user
#https_access deny to_localhost

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#

# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
https_access allow localnet
https_access allow localhost

# And finally deny all other access to this proxy
https_access deny all

# Squid normally listens to port 3128 - Порт, на котором будет висеть прокси
https_port 127.0.0.1:3128 intercept #transparent для версий ниже 3.1

# We recommend you to use at least the following line.
hierarchy_stoplist cgi-bin ?

# Uncomment and adjust the following to add a disk cache directory.
cache_dir ufs /var/squid/cache 500 16 256
cache_mem 256 MB
# Leave coredumps in the first cache dir
coredump_dir /var/squid/cache

# Add any of your own refresh_pattern entries above these.
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|?) 0 0% 0
refresh_pattern . 0 20% 4320

#/usr/local/sbin/squid -z

Стартуем его

#/usr/local/etc/rc.d/squid -start

Если Squid успешно запустился - открываем любой бразуер, указываем нашу проксю вида 192.168.0.1:3128 и пробуем открыть например тот же google.com.
Открылся? Замечательно, вписываем в /etc/rc.conf

squid_enable="YES"

И делаем его прозрачным, добавив правило в файрволл.

ipfw add fwd 192.168.0.1,3128 tcp from 192.168.0.0/24 to any 80

После этого, на клиентском компьютере убираем прокси с браузера и пробуем открыть другую страницу. Паралелльно можно смотреть файл /var/log/squid/access.log, в котором фиксируются обращения к прокси. Если все работает, в логи появляются записи - поздравляю. Теперь все веб-запросы от клиентских компьютеров будут прозрачно кешироваться, экономя вам траффик.
На этом первоначальная настройка гейта завершена.

UPD. Иногда нужно раздавать интернет не всем в локальной сети, а некоторым пользователям. Тогда можно прикрутить к сквиду авторизацию. Это делается путем добавления в конфиг

auth_param basic program /usr/local/libexec/squid/ncsa_auth /usr/local/etc/squid/internet_users
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

acl squidusers proxy_auth REQUIRED

# htpasswd -c /etc/squid/internet_users synergix
New password: *******
Re-type new password: *******
Adding password for user synergix

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


synergix:89XzEEI/P0e56

Где synergix - имя пользователя, а 89XzEEI/P0e56 - хеш его пароля. Для добавления нового пользователя в существующий файл необходимо выполнить следующую команду

# htpasswd -b /etc/squid/internet_users second_user 1234567
Adding password for user second_user

Посмотрим -

# cat /etc/squid/internet_users
syenrgix:89XzEEI/P0e56
second_user:EAJezc5eLXrV2

Выставим права для файла

# chmod 440 /usr/local/etc/squid/internet_users
# chown squid:squid /usr/local/etc/squid/internet_users

#/usr/local/etc/rc.d/squid reload

В связи с появившимся в обилии свободным временем могу подтянуть все свои стародавние статейки относительно различных фрёвых сервисов, которые уже лет 6-7 валялись у меня на диске в ожидании когда же до них наконец то дойдут руки, и вот потихоньку это время настало.

Так что не боясь предстать капитаном очевидность в этот раз я распишу как организовать программный маршрутизатор средствами FreeBSD. И хотя писалось все это еще под 4.2, но тем не менее и под 7.4 все эти же рецепты применимы, разве только с той разницей, что все пакеты отличаются версиями с большую сторону. Сказать откровенно, я предпочитаю программные маршрутизаторы за их дешевизну, простоту и быстроту в настройке, поскольку для программного маршрутизатора сгодится любая древняя машинка, главное чтобы в ней была возможность поставить дополнительные сетевухи. При этом программный маршрутизатор отличается от аппаратных аналогов тем, что произведя один раз настройку маршрутизатора вы следующий настроите уже за полчаса, а не будите копаться в мануалах нового для вас агрегата, купленного клиентом с оказией, не понимая почему це фича вдруг оказалась багой. К тому же вменяемый аппаратный маршрутизатор стоит не малых денег и вполне сопоставим по стоимости с хорошим компом, который помимо того что будет с сотни раз мощнее, также при этом сможет, естественно при желании, стать принт-сервером, фаерволом, проксей, поточным антивирем и еще чем угодно, и что самое основное- это решение маштабируемое, то есть добавление нового интерфейса сопряжено с гораздо меньшими затратами, нежели при попытке расширения аппаратного маршрутизатора, главное подобрать материнку с 2-3 слотами под сетевуху, ибо найти две интегрированные не проблема. И естественно формула скорость работы/цена для программного маршрутизатора будет на порядки ниже аппаратного, так как стоимость гигабитного маршрутизатора уже будет сопоставима с покупкой мощного сервера для офиса. Ну это просто вода относительно того за что я люблю программные рутеры, а теперь собственно перейдем к самой настройке маршрутизатора.

Для начала устанавливаем систему FreeBSD 7.4 и настраиваем её в соответствии с нашими требованиями, то есть можно настроить как если она торчит в инет, или служит для защиты серверной фермы от локалки; ну а ленивцы могут ограничиться просто установкой нужных пакетов, если она будет служить просто для маршрутизации пакетов между сетями внутренней сети предприятия.

Собственно для начала имеем две сетки: 192.168.0.0/24 (основная) и 192.168.10.0/24 (дополнительная) которые нам и надо совокупить посредством нашего настроенного сервера FreeBSD, в который мы же загодя воткнули две-три-четыре и более сетевых карт (максимум который у меня прекрасно существовал было 5 сопряженных сетей, не считая вирутальных интерфейсов). Предположим что для сетевых интерфейсов мы выбрали IP адреса: 192.168.0.1 и 192.168.10.1

Смотрим что за интернерфейсы установлены в системе:
# ifconfig
тут нам главное понять какой интерфейс какой, для чего не плохо было бы ознакомиться с чипами карт. Порядок интерфейсов обычно идет от проца к периферии, а у дополнительных интерфейсов в зависимости от нумерации слотов, возрастая от видюхи. Но проверить все это можно эмперическим путем просто воткнув рабочий кабель в систему, посе чего интерфейс перейдет из статуса status: no carrier в status: active. Предположим у нас в системе два интерфейса rl0 и rl1.
Поняв какие интерфейсы будем сопрягать, идем в /etc/rc.conf и добавляем необходимый интерфейс, так как там уже должен присуствовать один из интерфейсов, если в процессе настройки системы FreeBSD мы поднимали сетку.
##### /etc/rc.conf #####
ifconfig_rl0=”inet 192.168.0.1 netmask 255.255.255.0″
ifconfig_rl1=”inet 192.168.10.1 netmask 255.255.255.0″
#####################

Чтобы поднять теперь интерфейс, выполним
# /etc/netstart
Второй интерфейс rl1 ожил и теперь пингуется из подсети 192.168.10.1, но для того чтобы сервер настроить как маршрутизатор необходимо в ядре разрешить пересылку пакетов между пакетами, за что отвечает парметр net.inet.ip.forwarding. Его значение в системе в данный момент:
# sysctl net.inet.ip.forwarding
net.inet.ip.forwarding: 0

где значение 0 означает что маршрутизация запрещена, поэтому для включения функционала маршрутизации, нам необходимо присвоить этому значению 1, для чего выполняем:
# sysctl net.inet.ip.forwarding=1
net.inet.ip.forwarding: 0 -> 1

Теперь настройка маршрутизации завершена и маршрутизатор будет фурычить до перезагрузки системы, после чего значение net.inet.ip.forwarding переключится обратно в 0. Для того чтобы избежать этого добавляем в файл /etc/rc.conf следующую строку:
gateway_enable=”YES”
после чего уже безбоязненно можем перегрузить машину.
При такой схеме наш маршрутизатор будет рутить только сопряженные с ним сети, представленные интерфейсами, или же алиасами на интерфейсах, в том же случае когда у нас в сети уже существуют маршрутизаторы, прикрывающие еще какие то сети, то тогда поднимаем на нашей машине статическую таблицу маршрутизации. Делается это также в файле /etc/rc.conf
##### /etc/rc.conf #####

route_network1=”-net 10.10.15.0/24 192.168.0.25″
route_network2=”-net 172.168.10.0/24 192.168.0.25″
route_network3=”-net 192.168.168.0/24 192.168.10.111″
#####################

то есть мы задаем названия маршрутов, которые дальше выводим в виде сетки, и внешнего, для нашего маршрутизатора, интерфейса шлюза.
Также в случае использовании настроенного сервера FreeBSD в качестве внутреннего маршрутизатора, необходимо на внешнем шлюзе, заданном для рабочих станций и серверов сети дефолтным маршрутом, поднять маршрутизацию на внутреннюю сеть задав маршрут в 192.168.10.0, через 192.168.0.1. На самом деле тут обычно и возникает самый косячный момент, особенно в случае использования интернет шлюзом аппаратных фаерволов типо D-Link, у которых вроде функционал рутинга имеется, но чтобы настроить удаленный маршрут надо долго и упорно танцевать с бубном, так что гораздо проще для нашего уже настроенного маршрутизатора задать дефолтовым маршрутом интернет-шлюз, а все машины предприятия завернуть на него- это добавит лишний хоп, но уберет проблему настройки маршрутизации на сторонних серверах.

Как настроить машрутизатор средствами FreeBSD , 8.3 out of 10 based on 4 ratings

Отзывов: 11 на «Как настроить машрутизатор средствами FreeBSD»

    Пожалуйста объясните мне по подробней вот эти строки:
    static_routes=”network1 network2 network3″
    route_network1=”-net 10.10.15.0/24 192.168.0.25″
    route_network2=”-net 172.168.10.0/24 192.168.0.25″
    route_network3=”-net 192.168.168.0/24 192.168.10.111″
    Что куда и как заворачивается, просто я во FreeBSD новичек и немного не в курсе… Заранее благодарю!
    P.S.: Я так понимаю что 192.168.0.25, 192.168.10.111 – адреса свичей, или компьютеров соединяющих подсети одной локальной сети!? А адрес карточки на маршрутизаторе значение имеет????

    anchous Reply:
    June 27th, 2011 at 6:54 pm

    Эти IP адреса (192.168.0.25, 192.168.10.111) адреса сетевых интерфейсов других, имеющихся в сети маршрутизаторов, которые смотрят в сопряженные с вашим рутером сетки.
    То есть 0.25 смотрит в сеть 192.168.0.0/24, а 192.168.10.111 в сеть 192.168.10.0/24

    Добрый день! Недавно начал изучение FreeBSD и столкнулся со следующей проблемой(простейший пример маршрутизации описанный вами выше):
    FreeBSD-сервер НЕ ВЫПОЛНЯЕТ МАРШРУТИЗАЦИЮ из одной сети в другую!
    1. Свежеустановленная FreeBSD 9.0
    2. Две сетевые карты em0 em1
    3. IP-адреса маски, шлюз по умолчанию, опция gateway_enable, net.inet.ip.forwarding прописаны верно!
    4. Ping с сервера в сеть №1 и в сеть №2 идет!
    5. Ping с компьютеров на em0 и em1 тоже идет!

    А ВОТ PING МЕЖДУ КОМЬЮТЕРАМИ ИЗ СЕТИ №1 и №2 не идет!!! В ЧЕМ МОЖЕТ БЫТЬ БЕДА???

    anchous Reply:
    August 9th, 2012 at 5:58 pm

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

    Огромное спасибо за отклик. Tracert к сожалению помочь мне ничем не может. Вот более подробное описание:
    - сеть №1 em0 (192.168.1.0/24) в ней PC Win7 (192.168.1.5/24 default gateway 192.168.1.60)

    Сеть №2 em1 (192.168.0.0/24) в ней internet-router (192.168.0.1/24), *так же есть и другие компы… которые через этот шлюз выходят в интернет*.

    Freebsd 9.0
    ——- rc.conf———–:
    hostname=”FreeBSD1″

    defaultrouter=”192.168.0.1″
    gateway_enable=”YES”

    ifconfig_em0=” inet 192.168.1.60 netmask 255.255.255.0″
    ifconfig_em1=” inet 192.168.0.60 netmask 255.255.255.0″

    sshd_enable=”YES”
    moused_enable=”YES”
    dumpdev=”NO”

    ——- ifconfig ———–:

    em0: flags=8843 metric 0 mtu 1500
    options=9b
    ether 00:0c:29:df:f3:00
    inet 192.168.1.60 netmask 0xffffff00 broadcast 192.168.1.255
    inet6 fe80::20c:29ff:fedf:f300%em0 prefixlen 64 scopeid 0×2
    nd6 options=29

    status: active
    em1: flags=8843 metric 0 mtu 1500
    options=9b
    ether 00:0c:29:df:f3:0a
    inet 192.168.0.60 netmask 0xffffff00 broadcast 192.168.0.255
    inet6 fe80::20c:29ff:fedf:f30a%em1 prefixlen 64 scopeid 0×3
    nd6 options=29
    media: Ethernet autoselect (1000baseT)
    status: active

    ——–netstat -rn: ———–
    Destination Gateway Flags Refs Use Netif Expire
    default 192.168.0.1 UGS 0 0 em1
    127.0.0.1 link#7 UH 0 0 lo0
    192.168.0.0/24 link#3 U 0 325 em1
    192.168.0.60 link#3 UHS 0 0 lo0
    192.168.1.0/24 link#2 U 0 22 em0
    192.168.1.60 link#2 UHS 0 0 lo0
    ——————————-
    net.inet.ip.forwarding: 1
    ——————————-

    ПИНГ С FREEBSD
    ping 192.168.0.1 – OK
    ping 192.168.1.5 – OK

    ——————————-
    ПИНГ с WIN7 (192.168.1.5)
    ping 192.168.1.60 – OK
    ping 192.168.0.60 – OK
    ping 192.168.0.1 – FCUK!!! – в смысле НЕТУ!
    ——————————-
    ПИНГ с компов из сети 192.168.0.0 на комп 192.168.1.5 тоже не проходит. (шлюз для компов из этой сети менял на 192.168.0.60)

    ——————————-

    Можно что-то посоветовать?

    anchous Reply:
    August 10th, 2012 at 2:30 pm

    трейс как раз вам и должен был бы помочь, ибо точно бы диагностировал куда идет пакет и где происходит затыка, так как судя по вашей схеме, могу предположить что для машин подсети 192.168.0.0/24 дефолтным шлюзом стоит 192.168.0.1, на котором не прописан маршрут в подсеть 192.168.1.0

    Из другой сети так же!!!

    Что делать???

    anchous Reply:
    August 10th, 2012 at 6:13 pm

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

    Добрый день. Не могли бы помочь.
    Сервер одним концом смотрит в 10.114.172.0/24, а другим в 10.114.173.0/24.
    ———
    em0: inet 10.114.172.50 netmask 255.255.255.0
    em1: inet 10.114.173.1 netmask 255.255.255.0

    IPFW:
    ————-
    cmd=”ipfw -q add”
    oif=”em0″
    iif=”em1″
    oip=”10.114.172.50″
    iip=”10.114.173.1″
    MyLan=”10.114.173.0/24″
    Lan1=”10.114.172.0/24″
    Lan2=”10.114.171.0/24″
    #netmask=”24″
    #netin=”10.114.173.0″

    ipfw -q -f flush

    $cmd allow ip from $MyLan to $MyLan via $iif
    $cmd allow ip from $Lan1 to $MyLan
    $cmd allow ip from $MyLan to $Lan1
    $cmd fwd 127.0.0.1,3128 tcp from $MyLan to not me 80 in recv $iif
    $cmd allow ip from $oip to any out via $oif
    $cmd allow ip from any to $oip in via $oif
    $cmd allow ip from $MyLan to any in via $iif
    $cmd allow ip from $MyLan to any out via $oif
    $cmd allow ip from any to $MyLan in via $oif
    $cmd allow ip from any to $MyLan out via $iif
    ————–
    С компьютера 10.114.172.35 ping идет в другую сеть, а с 10.114.173.20 теряется на сервере. В чем может быть проблема?

    anchous Reply:
    October 13th, 2012 at 12:28 pm

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

У тебя есть своя собственная локальная сеть,
ты решил, что тебе пора ее подключать к Интернету по выделенной лини. Ну, что же дело хорошее, сегодня я постараюсь тебе
помочь немного с этим 🙂 Начнем с установки FreeBSD, поскольку мы помешаны на
безопасности, о ней надо позаботиться заранее 🙂 Вырубай все, везде отвечай
твердо нет:), то что нам надо мы сами потом включим 🙂 Во время установки системы у тебя спросит
"Хотите ли вы посмотреть коллекцию портов?", отвечай да. Сейчас мы установим дополнительное
программное обеспечение. Лезем в раздел security и выбираем там программу с названием PortSentry, позже она нам пригодиться 🙂 После установки нам надо откомпилировать
ядро… За основу возьмем готовое ядро GENERIC. Оно лежит по адресу /sys/i386/conf. Пиши новое ядро для системы внимательно, удаляй все не нужное (например, удаляй нафиг поддержку USB, COM, LPT, SCSI, RAID и других устройств которые ты не будишь использовать в системе, USB тебе на фиг не надо ты же не собираешься к маршрутизатору подключать устройства с поддержкой USB, и так поступай со всем остальным, тем более это повысит быстродействие системы в целом... Более подробную информацию ты найдешь в файле LINT). Дальше в новое ядро добавляем следующие строчки:

Options IPFIREWALL #Включаем поддержку файрвола
Options IPDIVERT #это опция нужна для работы NAT
Options IPFIREWLL_VERBOSE #Пускай файрвол пишет логи
Options IPFIREWALL_VERBOSE_LIMIT=10 #Ограничение записей в лог, для событий
Options TCP_DROP_SYNFIN #Не будим принимать левые пакеты
Options ICMP_BANDLIMIT #Это опция для предотвращения DOS атак 🙂
Options ACCEPT_FILTER_DATA #Я обычно включаю эту опцию 🙂
Options TCP_RESTRICT_RST #Данную опцию тоже следует включить

config proxy, cd ../../compile/proxy, make depend, make, make install

Все, поздравляю, только что ты откомпилировал свое ядро, если что-то не пошло и компиляция
остановилась - посмотри, может ты что-то не так сделал, такое бывает и попробуй пересобрать ядро заново. После чего делаем ребут системы. И машина у нас должна загрузиться с новым ядром. Если же все таки этого не
произошло не расстраивайся - систему можно загрузить со старым ядром. Для этого при
загрузке, когда она скажет хотите ли вы войти в режим восстановления, нажми Enter, там
дай команду unload, потом load kernel.old и boot. Все, система загрузиться со старым ядром.

По умолчанию система перед загрузкой ждет 9 секунд.
Мы идем в папку /boot и правим там файл loader.conf, нам надо добавить туда следующую строчку
boot_autodelay=0, это делается чтобы системы не ждала 9 секунд ответ пользователя, нам же надо чтобы если что система при перезагрузке выходила быстро в онлайн 🙂 Дальше идем в
папку /etc и начинаем править фал rc.conf. Ниже привожу пример с комментариями, так что разобраться
будет не сложно:

hostname="zlobix.evil.com" #Ссетевое имя твоей машины
firewall_enable="YES" #Включаем файрвол
firewall_script="/usr/local/etc/firewall.conf" #путь к файлу с политиками файрвола
firewall_type="close" #Тип файрвола, данный тип запрещает все!
firewall_logging="YES" #Тускай наш файрвол пишет логи
natd_program="/sbin/natd" #Туть к демону natd
natd_interface="ed0" #Та каком интерфейсе у нас будит висеть NAT, интерфейс должен смотреть в сторону ISP (Inetrnet Service Provader)
tcp_extension="NO" #Отрубаем опасные расширения для TCP/IP
tcp_keepalive="YES" #Ставь эту опцию, твой роутер будит менее
подвержен DOS атакам.
tcp_drop_synfin="YES" #Не принимаем левые пакеты
tcp_restrcit_rst="YES" #Не помню что обозначает но включить рекомендую 🙂
icmp_drop_redirect="YES" #Не работаем с ICMP
пакетами
icmp_log_redirect="YES" #Ведем логи ICMP пакетов
ifconfig_lo0="inet 127.0.0.1" #настройка петлевого адреса,
оставь так как тут указано

ifconfig_ed0="inet 167.65.89.147 nemask 255.255.255.192" #в данном примере у нас этот
интерфейс смотрит в сторону провайдера, где ed0 имя интерфейса, inet
IP - адрес выданный провайдером, netmask маска подсети.

ifconfig_ed1="inet 192.168.0.1 netmask 255.255.255.0" #настройка внутреннего интерфейса, то есть который смотрит в сторону локальной сети

ifconfig_ed1_alias0="inet 192.168.1.1 netmask 255.255.255.0" # на один сетевой интерфейс можно повесить сразу несколько
IP адресов (IP-алиасинг), в данном примере предполагается, что сеть у нас поделена логически на две подсети 192.168.0.0/24 и 192.168.1.0/24 где /24
- код по маски по методу CIDR, который соответствует
маске подсети 255.255.255.0

syslogd_enable="YES" #Включаем демон, который
будет отвечать за логи
inetd_enable="NO" #Выруби этот сервис обязательно!
named_enable="NO" #этот тоже выруби, ты же не будишь юзать свой маршрутизатор в качестве DNS сервера 🙂
nfs_client_enable="NO" # Ниже три параметра отвечают за подержку Network File System, мой тебе совет отруби ее тоже
nfs_server_enbale="NO"
nfs_reserved_port_only="NO"
fsck_y_enable="YES"
portmap_enbale="NO" #отключаем портмапер
sshd_enbale="YES" #Включаем ssh, чтобы мы могли управлять нашим маршрутизатор удаленно 🙂
sshd_programm="/usr/sbin/sshd/" #путь до демона ssh
sshd_flags="" #Флаги запуска sshd, если не знаешь оставь так как есть
defaultrouter="167.65.89.1" #Вышестоящий маршрутизатор нашего провайдера
getaway_enbale="YES" #Включаем шлюз на нашей машине
icmp_bmcastecho="NO" #Вырубаем ответы на сообщения echo протокола ICMP, это нам сэкономит нервы 🙂
cron_enable="NO" #Не знаю, но большинство людей включает Cron, я же его вырубаю, поскольку на маршрутизаторе он мне нафиг не нужен...
clear_tmp_enable="YES" #Очищаем директорию tmp при каждой загрузки системы
lpd_enable="NO" #Печатать ты тоже не будишь с маршрутизатора, так что отрубай тоже
usbd_enable="NO" #Вырубаем демон для поддержки USB устройств
sendmail_enable="NO" #Отрубаем sendmail, самое дырявое место во FreeBSD, постоянно находят какие-то ошибки:))))
kern_securelevel_enable="YES" #Включаем защиту
kern_securelevel="0" #Устанавливаем тип защиты

Так, после того как мы разобрались с rc.conf, надо настроить наш Маршрутизатор на работу с ДНС, для этого открывай файл resolv.conf в этой же папке и пиши туда это:

nameserver="167.65.88.18" #Адрес DNS сервера нашего провайдера
nameserver="167.65.88.17" #Адрес резервного DNS сервера нашего провайдера

Как ты уже понял после nameserver="" в кавычках указывается
IP адрес DNS сервера. DNS сервера локальной сети лучше не добавляй, береженого бог бережет 🙂 Дошло дело до ssh.
Его нам надо обезопасить 🙂 и повысить защиту,
поэтому идем в папку /etc/ssh и открываем файл sshd_config. И правим следующие:

#sshd_config
Port 666 #На данном порте у нас будит весеть ssh 🙂
Protocol 2 #Используем более безопасный метод передачи данных
PermitRootLogin no #Отключаем возможность входа в систему пользователю root, для наших нужд мы создадим специального пользователя 🙂
PrintLastLog yes #Отображает дату последнего входа в систему
PermitEmptyPasswords no #Запрещаем вход пользователей с пустым паролем

После того как разобрались, преступим к файрволу...

В этой статье мы рассмотрим сетевые интерфейсы в FreeBSD 11.1 , покажем настройку сети через файл конфигурации /etc/rc.conf , а именно назначение статических настроек и получение их по DHCP. Пропишем адреса DNS -серверов, настроем hosts и рассмотрим указание временных настроек сети .

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

Для начала проясним: Есть два состояния сетевой карты 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 .

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

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

Рис.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

Настройка DNS.

IP адреса DNS серверов хранятся в файле /etc/resolv.conf (Рис.9)

Открываем resolv.conf в редакторе vi .

Vi /etc/resolv.conf

Вписываем IP адрес DNS сервера. (Можно указать сколько угодно адресов.)

Nameserver 192.168.3.1 nameserver 8.8.8.8 nameserver 8.8.4.4

Если у вас нет файла resolv.conf то создайте его в каталоге /etc

Touch /etc/resolv.conf
Рис.9 - Содержимое файла resolv.conf.

Файл /etc/hosts.

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

Лично для себя я отметил полезным внести в 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.

Временное назначение 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

Переименовываем интерфейс em0 в wan0.

Для удобства некоторые админы переименовывают интерфейсы, чтобы сразу видеть для чего предназначен интерфейс. Допустим у нас шлюз с двумя сетевыми интерфейсами em0 (интернет) и em1 (локальная сеть) и работать с такими названиями неудобно, так как имея большое количество интерфейсов можно запутаться. Гораздо удобнее работать с интерфейсами wan0 и lan1 .

Мы покажем пример переименования интерфейса em0 в wan0 в файле /etc/rc.conf .(Рис.15)

Ifconfig_em0="inet 192.168.3.11 netmask 255.255.255.0"

Заменяем двумя строками:

Ifconfig_em0 _name="wan0 " ifconfig_wan0 ="inet 192.168.3.11 netmask 255.255.255.0"
Рис.15 - Переименовываем интерфейсы в файле /etc/rc.conf.

Не забываем перезапустить сетевую службу:

/etc/rc.d/netif restart

Проверю, введу команду ifconfig -u . Видим наш wan0 с нужным IP адресом .(Рис.16)

Ifconfig -u
Рис.16 - Проверяем новое название интерфейса. ifconfig -u.

В данной статье мы расскажем о настройке роутера на базе FreeBSD выполняющего роль шлюза в инернет с установкой firewall-a, и поддерживающем статическую arp таблицу mac адресов в локальной сети. Речь пойдет о IPFW который в FreeBSD служит верой и правдой уже много лет, тем более что в последней версии в составе c FreeBSD 4.0 исправленны ошибки и добавленна корректная возможность ограничивать полосу пропускания по интерфейсу (использование pipe с опцией bw). Предположим что мы имеет роутер с тремя сетевыми платами одна из которых (назовем ее vx0, IP 200.200.200.1) смотрит в сторону Internet-a а вторая (назовем ее vx1, IP 200.200.200.2) смотрит в сторону локальной сети с реальными 18 IP адресами (subnet 200.200.200.0/28 netmask 255.255.255.240). К третьей сетевой карточке (vx2 IP 192.168.1.1 и сеть 192.168.1.0/28) подключена 10Mb сеть соседнего офисса. Задачи перед нами поставленны следующие: 1. Закрыть доступ во внутренюю сеть извне по портам 135,137,139 2. Дать возможность пользователям локальной сети работать с почтой и работать с в броузере с WWW,FTP серверами других компаний. 3. Закрыть на роутере возможность атаки типа SYN Flood, ICMP Flood. 4. Закрыть доступ к корпоративному WWW,FTP серверу (200.200.200.5) используемый для работы с отчетами выставленными на этот WWW server только в пределах локальной сети и доступа из филиала который имеет IP 190.190.190.5 5. Открыть доступ для конфигурирования этого роутера с определеного хоста системного администратора. 6. Обеспечить подсчет трафика по IP адресам в локальной сети чтобы впоследствии доказать что Вася весь месяц только и занимался скачиванием c www.playboy.com картинок сомнительного содержания. 7. Ограничить трафик 64Kb на третьей сетевой карточке для дружественного клиента компании находящемуся в том же здании и подключенному по 10Mb к нашему роутеру и закрыть доступ с их стороны в локальную сеть нашей компании. Итак приступим. 1. Конфигурирование ядра и опций запукаемых скриптов. В ядро необходимо занести следующие опции: options IPFIREWALL (включает в ядро код для фильтрации пакетов) options IPFIREWALL_VERBOSE (включает возможность вести логи по правилам фильтрации и проходящих пакетов) options IPFIREEWALL_VERBOSE_LIMIT=10 (ограничение списка числа пакетов записываемых в лог для того чтобы не зафлудили syslog) options TCP_DROP_SYNFIN (отбрасывает TCP пакеты с SYN и FIN) В итоге при перезагрузке системы мы получим firewall который по умолчанию закрывает прохождение любого IP трафика по всем интерфейсам. Далее мы определим правила которые откроют только те порты TCP или UDP которые нужны для работы пользователей. Если Вы придерживаетесь другого подхода - "сначала все откроем а потом будем закрывать" то вам необходимо указать следующую опцию в ядре: options IPFIREWALL_DEFAULT_TO_ACCEPT В /etc/defaults/rc.conf указываем следующее: tcp_extensions="NO" (отключаем "опасные" из RFC1323 расширения TCP) tcp_drop_synfin="YES" (отбрасывем SYN + FIN) icmp_drop_redirect="YES" (игнорируем перенаправленные ICMP пакеты) icmp_log_redirect="YES" (включаем логинг ICMP REDIRECT) firewall_enable="YES" (включаем использование firewall) firewall_type="Company" (указываем что наши настройки firewalla находятся в rc.firewall в разделе "Company") defaultrouter="199.199.199.1" (шлюз до нашего ISP) 2. Конфигурирование IPFW. Теперь приступаем к написанию правил IPFW. Более побдробное описание синтактиса можно прочитать в handbook или man ipfw. Поскольку мы создаем свою конфигурацию ("Company") то делаем ее описание в rc.firewall: # Описываем сеть и интерфейсы fw="200.200.200.1" local="200.200.200.2" client="192.168.1.1" net="200.200.200.0/28" mask="255.255.255.255.240" # Разрешаем трафик по local интерфейсу ${fwcmd} add pass all from any to any via lo0 # Разрешаем трафик только в пределах локальной сети ${fwcmd} add pass all from any to any via vx1 # Запрещаем прохождение фрагментированных пакетов ${fwcmd} add deny icmp from any to any frag # Разрешаем прохождение ICMP пакетов ${fwcmd} add pass ICMP from any to any # Разрешаем работу с SMTP протоколом ${fwcmd} add pass tcp from any to any 25 out ${fwcmd} add pass tcp from any 25 to any out # Разрешаем работу с HTTPS протоколом ${fwcmd} add pass tcp from any to any 443 out ${fwcmd} add pass tcp from any 443 to any out # Запрещаем работу снаружи с внутреним сервером компании ${fwcmd} add pass tcp from 199.199.199.10 to 200.200.200.5 80 via vx0 ${fwcmd} add pass tcp from 200.200.200.5 80 to 199.199.199.10 via vx0 # Запрещаем работу снаружи с внутреним сервером компании ${fwcmd} add deny tcp from any to 200.200.200.5 80 in via vx0 # Разрешаем работу с HTTP протоколом ${fwcmd} add pass tcp from any to any 80 out via vx1 ${fwcmd} add pass tcp from any 80 to any out via vx1 # Разрешаем работу по всем протоколам в пределах # только локальной сети нашей компании ${fwcmd} add allow all from any to any via vx1 # Разрешаем работу с DNS серверами ${fwcmd} add pass udp from any to any 53 ${fwcmd} add pass udp from any 53 to any # Разрешаем работу с NEWS Серверами ${fwcmd} add pass udp from any to any 119 out via vx1 ${fwcmd} add pass udp from any 119 to any out via vx1 # Разрешаем забор почты по POP3 протоколу ${fwcmd} add pass udp from any to any 110 ${fwcmd} add pass udp from any 110 to any # Разрешаем работу с FTP серверами # Обратите внимание что 20 порт протокола TCP используется для # передачи данных, помимо 21 порта. ${fwcmd} add pass tcp form any 21 to any ${fwcmd} add pass tcp from any to any 21 ${fwcmd} add pass tcp from any 20 to any ${fwcmd} add pass tcp from any to any 20 # Разрешаем доступ по ssh с домашней машины # администратора имеющей IP 200.200.200.15 ${fwcmd} add pass tcp from 200.200.200.15 22 to {isp} ${fwcmd} add pass tcp from {isp} to 200.200.200.15 22 # Ограничиваем трафик с сетевой карточки vx2 в локальную сеть # нашей компании ${fwcmd} add deny all from 192.168.1.0/24 to ${net}:${mask} via vx1 ${fwcmd} add deny all from ${net}:${mask} to 192.168.1.0/24 via vx1 # Разрешаем работу по базовым портам TCP на интерфейсе vx2 ${fwcmd} add pass tcp from 192.168.1.0/24 to any 25 via vx2 ${fwcmd} add pass tcp from any 25 to 192.168.1.0/24 via vx2 ${fwcmd} add pass tcp from 192.168.1.0/24 to any 110 via vx2 ${fwcmd} add pass tcp from any 110 to 192.168.1.0/24 via vx2 ${fwcmd} add pass udp from 192.168.1.0/24 to any 53 via vx2 ${fwcmd} add pass udp from any 53 to 192.168.1.0/24 via vx2 ${fwcmd} add pass tcp from 192.168.1.0/24 to any 80 via vx2 ${fwcmd} add pass tcp from any 80 to 192.168.1.0/24 via vx2 # Ограничиваем полосу пропускания на интерфейсе vx2 в 64 Kb. # для входящего трафика ${fwcmd} add pipe 1 ip from any to any in via vx0 ${fwcmd} add pipe 1 config bw 64Kbit/s # Ограничиваем полосу пропускания на интерфейсе vx2 в 64 Kb. # для исходящего трафика ${fwcmd} add pipe 2 ip from any to any out via vx0 ${fwcmd} add pipe 2 config bw 64Kbit/s Для проверки работы правил вы можете воспользоваться популярным сканером TCP/IP NMAP (входит в состав FreeBSD) дав например команду: nmap 200.200.200.1 или nmap 200.200.200.2 находясь за пределами диапазона адресов вашей сети, или попросив об этом вашего ISP. 3. Предотвращение подделки MAC адреса Нам необходимо обезопасить наш роутер от возможности принятия пакетов с IP адресами которые могут попасть в локальную сеть извне под видом легальных пакетов TCP/IP входящие в диапазон сети 200.200.200.0/28. Даже если это произойдет то на этот случай у нас есть жестко привязанная таблица IP адресов к MAC адресам сетевых карт и роутера нашего ISP. Иногда это бывает необходимо как мера от нечистоплотных сотрудников которые меняют IP адресс своего хоста на адрес другого ПК, владелец которого например находится в отпуске и шишки соотв. посыплятся на него;) Для начала вам нужно построить MAC таблицу адресов, где формат ее будет примерно таким: petya 00:20:af:4a:3e:e3 vasya 00:20:fg:3a:3e:21 sasha 00:20:fg:3a:3e:21 marina 00:20:fg:3a:3e:21 и сохранить ее в файле например /etc/ethers. Для того чтобы узнать Ethernet адрес хоста достаточно на нем набрать arp -a. При запуске на роутере arp -f /etc/ethers вся информация о соответствии IP адреса и MAC адреса сетевой карточки при работе протокола ARP будет браться из файла /etc/ether и замораживаться. Это процесс можно автоматизировать запустив на роутере arpwatch (он есть в портах FreeBSD) и сделав на каждом хосте файл /etc/hosts с описанием пары name_hosts IP_adress и /etc/ethers с вышеприведенным форматом. Когда появляется факт подмены IP адресса то arpwatch посылает письмо с описанием проишедшего и таблица arp замораживается. 4. Настраиваем статистику. Для создания стратистики мы будем использовать ipfm входящий в состав пакетов FreeBSD. При инсталяции в /usr/local/etc/rc.d создается файл ipfm.sh а в /usr/local/etc файл ipfm.conf. Его то как раз нам и нужно отредактировать. Итак приступим: ##### FIRST LOGGING CONFIGURATION ##### # Описывем внутреннюю сеть с которой снимаем статистику LOG 200.200.200.0/255.255.255.240 NOT WITH 200.200.0.0/255.255.0.0 # Присваиваем название файлу для сбора статистики FILENAME /var/log/ipfm/local_net-%d.%m-%H.%M.%S # Устанавливаем период записи в лог в нашем случае лог будет обновляться # еженедально TIME 7 day SORT IN RESOLVE ##### SECOND LOGGING CONFIGURATION ##### NEWLOG # Описывем внутреннюю сеть нашего клиента 192.168.1.0/24 subnet 192.168.1.0/255.255.255.0 NOT WITH 192.168.0.0/255.255.0.0 # Задаем период записи в лог в данном случае 1 день FILENAME /var/log/ipfm/ipfm-%d.%m-%H.%M.%S # Log on a period of one week TIME 1 day SORT IN RESOLVE Если же требуется более детальная информация по протоколам и количеству передаваемых пакетов то можно воспользоваться опцией count в ipfw: # Подсчитываем входящий и исходящий трафик по HTTP протоколу ipfw add count tcp from any to any 80 in via vx0 ipfw add count tcp from any to any 80 out via vx0 # Подсчитываем входящий и исходящий трафик по HTTP протоколу для клиентов ipfw add count tcp from any to any 80 in via vx2 ipfw add count tcp from any to any 80 out via vx2 ipfw add count tcp from any to any 21 in via vx2 ipfw add count tcp from any to any 21 out via vx2 Еcли же вас интересует статистика с конкретного IP адреса то вы просто указываете так: ipfw add count tcp from any to 200.200.200.3 in via vx1 где 200.200.200.3 это IP адрес пользователя например Васи который ежемесячно скачивает с www.playboy.com графические файлы. Вы можете также закрыть доступ к этому сайту например таким способом: ipfw add log deny all from any to www.playboy.com с записью в лог попыток обращения к нему. Графическая статистика строится с применением пакеты MRTG (Multi Router Transfeer Grapheer) при использовании агента snmp запущенного на роутере. Также необходимо установить на роутере средства обнаружения атак, но это уже тема для другой статьи.

Close