Faqed настройка шлюзу на freebsd
У статті пропонується рішення для організації спільного доступу до Інтернет-каналу з урахуванням трафіку і проксі-сервером
- організувати доступ в Інтернет користувачам локальної мережі
- Вести облік трафіку: всього + окремо web (хто, скільки і де був в Інтернеті)
- Скоротити витрати на Інтернет шляхом використання проксі сервера.
Частина 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. прошу не судити строго це перший досвід написання статті