Faqed настройка шлюзу на freebsd

У статті пропонується рішення для організації спільного доступу до Інтернет-каналу з урахуванням трафіку і проксі-сервером

  1. організувати доступ в Інтернет користувачам локальної мережі
  2. Вести облік трафіку: всього + окремо web (хто, скільки і де був в Інтернеті)
  3. Скоротити витрати на Інтернет шляхом використання проксі сервера.

Частина 1 Почнемо з установки FreeBSD

Вставимо інсталяційний диск в CDROM, в BIOS виставимо завантаження з CDROM.
Після завантаження виберемо Express -> Kernel-Developer
Відповімо позитивно на питання чи є машина шлюзом в Інтернет
Відповімо позитивно на про запуск INETD
Після установки ізвлечём диск з CDROM і перевантажити.

Частина 2 Збірка ядра.

Після перезавантаження увійдемо в систему як root
Змінимо пароль root

Перейдемо в каталог / usr / src / sys / i386 / conf

Створимо копію конфігураційного файли ядра

# Cp GENERIG GATEWAY

Відредагуємо файл під наші потреби

Додаємо наступні опції в файл GATEWAY

options IPFIREWALL // firewall

options IPFIREWALL_DEFAULT_TO_ACCEPT // allow everything by default

// IPDIVERT система NAT

options IPDIVERT // divert sockets

# Make depend all install

Встановлюємо тимчасову зону під FreeBSD і точний час в BIOS.
Редагуємо файл /etc/rc.conf

defaultrouter = "192.168.5.1" // Шлюз провайдера

hostname = "gate.plc.net" // Ім'я комп'ютера

gateway_enable = "YES" // Комп'ютер являеться шлюзів в інтреннет

ifconfig_rl0 = "inet 192.168.0.250 netmask 255.255.255.0" // Внутрішній інтерфейс

ifconfig_rl1 = "inet 192.168.5.15 netmask 255.255.255.0" // зовнішній інтерфейс

firewall_enable = "YES" // Включення firewall

# Firewall_type = "OPEN" // Якщо не хочете його налаштовувати або НЕ немає в цьому необхідності можна зробити його відкритим тобто пропускає всі пакети

firewall_script = "/ etc / firewall.sh" // Налаштування firewall (або firewall_type = "OPEN")

natd_enable = "YES" // Включаємо NAT

natd_interface = "rl1" // NAT вішаємо на зовнішній інтерфейс

sendmail_enable = "NONE" // відключаємо sendmail

usbd_enable = "YES" // Включаємо підтримку USB якщо потрібно

linux_enable = "YES" // Включаємо підтримку Linux якщо потрібно

trafd_enable = "YES" // Включаємо підтримку trafd

trafd_ifaces = "rl0 rl1" // Вішаємо його на внутрішній і зовнішній інтерфейс

trafd_log = "/ usr / local / var / trafd.log" // логи trafd

inetd_enable = "YES" // Включаємо суперсервера INETD

# Chmod -x /etc/rc.d/sendmail

/ Sbin / ipfw -f flush

/ Sbin / ipfw add 1000 pass all from any to any via lo0

/ Sbin / ipfw add 1100 deny all from any to 127.0.0.0/8

/ Sbin / ipfw add 1200 deny icmp from any to any frag

/ Sbin / ipfw add 1300 deny icmp from any to any in icmptype 5,9,13,14,15,16,17

/ Sbin / ipfw add 1400 deny tcp from any to any not established tcpflags fin

/ Sbin / ipfw add 1500 deny tcp from any to any tcpflags fin, syn, rst, psh, ack, urg

/ Sbin / ipfw add 1600 deny tcp from any to any tcpflags! Fin,! Syn,! Rst,! Psh,! Ack,! Urg

/ Sbin / ipfw add 4000 deny udp from any 137-139 to any via rl0

/ Sbin / ipfw add 4100 deny udp from any to any 137-139 via rl0

/ Sbin / ipfw add 5000 divert natd ip from 192.168.0.0:255.255.255.0 to any out xmit rl1

/ Sbin / ipfw add 5100 divert natd ip from any to 192.168.5.15

# / Sbin / ipfw add 5200 deny all from 192.168.0.0/24 to not 192.168.0.0/24 80

/ Sbin / ipfw add 5500 deny all from 192.168.0.0/24 to not 192.168.0.0/24 80,21,443

/ Sbin / ipfw add 6000 allow all from any to any

Зробимо файл виконуваним

# Chmod 100 /etc/firewall.sh

Частина 4 Налаштування FTP (звіти будемо забирати з FTP)

ftp stream tcp nowait root / usr / libexec / ftpd ftpd -l

Створимо файл / etc / ftpchroot

// Туди пишемо користувачів щоб вони не вийшли за межі домашнього каталогу

Додамо в нього користувача stat
Додамо користувача stat в систему

Частина 5 Встановлення програм

Далі ставимо проксі сервер SQIOD

Базова настройка проксі сервера
Для цього відредагуємо файл /usr/local/etc/squid/squid.conf

cache_mem 64 MB

cache_dir ufs / usr / local / squid / cache 3072 16 256

// якщо acl виноситися в окремий файл то необхідно вказувати шлях до файлу в лапках.

acl InternetUsers src "/ usr / local / etc / squid / InternetUsers"

http_access allow InternetUsers

http_access deny all

// And finally deny all other acces to this proxy

http_access allow InternetUsers

http_access deny all

visible_hostname InternetServer // В імені не використовувати пробіли.

Далі поміняємо сторінку з помилками

Тепер створимо файл з користувачами Інтернет

додамо в нього нашу локальну мережу 192.168.0.0/24

Створимо swap директорію

Додамо SQUID в автозавантаження (в /etc/rc.conf)

Додамо записи про DNS серверах

nameserver 82.1.2.3 // DNS провайдера

Після перезавантаження проксі сервер і шлюз повинні працювати.

Для отримання даних про всіх минулих пакетах через ваш шлюз скористаємося trafd

Зберемо генерато звітів по роботі SQUIDа

// Встановимо мову який буде використовуватися в звітах

// Лог за яким будуватися звіт

title "Internet Statistic Server"

// Директорія де будуть зберігатися звіти

// Дата в форматі день місяць рік

// Встановимо кодування звіту

Налаштуємо збереження статистики trafd і генерації звітів SARG

// Crontab це планувальник завдань.

// Параметри хвилина, годину, число, місяць, день тижня, що виконується скрипт або команда.

// Crontab -e початок редагування планувальника для виконання завдань з правами поточного користувача.

0 8,12,16,20 * * 1-7 / usr / local / bin / trafsave rl0 rl1

10 9,17 * * 1-7 / usr / local / bin / sarg

Включаємо ротацію логів squid першого числа кожного місяця

// Crontab -u squid -e початок редагування планувальника для виконання завдань з правами користувача squid.

# Crontab -u squid -e

0 0 1 * * / usr / local / sbin / squid -k rotate

P.S. прошу не судити строго це перший досвід написання статті

Список джерел