Задачи:
Собрать сервак сбора инет статистики с возможностями управления инет-трафиком по IP-адресам, а желательно с привязкой к MAC-адресам. С выводом инфо через WEB-сервер. Как я полагаю - через Apache.
(Ограничения по скорости, по объёму скачанного, по посещаемым рессурсам...)
Имеется:
//#uname -a
Код: Выделить всё
FreeBSD local.host.ru 7.1-PRERELEASE FreeBSD 7.1-PRERELEASE #0: Sun Sep 21 17:24:20 UTC 2008 rus@local:/usr/obj/usr/src/sys/main_kernel i386
Код: Выделить всё
# Мой файл конфиг Ядра.
machine i386 # Тип компьютера. По крайней мере в LINT его нет.
cpu I686_CPU # Тип процессора.
#ident GENERIC # Идентификатор ядра - оригинал.
ident main_kernel # Идентификатор ядра - новый.
maxusers 0
#hints "GENERIC.hints" # Default places to look for devices.
#makeoptions DEBUG=-g
options IPSTEALTH
# Файервол.
options IPFIREWALL
options IPFIREWALL_DEFAULT_TO_ACCEPT # Умолчания для Firewall.
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100 # Ограничение для логов
options IPFIREWALL_FORWARD
options IPFIREWALL_NAT # ipfw kernel NAT support.
options IPDIVERT # Поддержка IP-маскарадинга.
#########################################
# Хз. Не разобрался ещё с этим, но и не включил...
#options IPFILTER
#options IPFILTER_LOG
#options IPFILTER_LOOKUP
#options IPFILTER_DEFAULT_BLOCK
#options TCPDEBUG
#options MBUF_STRESS_TEST
#options ACCEPT_FILTER_DATA
#options ACCEPT_FILTER_HTTP
#########################################
options DUMMYNET # Поддержка DUMMYNET.
options LIBALIAS
# IPSEC. Настройка шифрованного туннеля с использованием IPSEC.
#options IPSEC
#options FAST_IPSEC # Не работает в этой версии.
#options IPSEC_ESP # В версииFreeBSD-7.0 не работает.
#options IPSEC_DEBUG # Не обязательно, но облегчит поиск проблем.
device crypto
#options NETGRAPH
#options NETGRAPH_ETHER
#options NETGRAPH_SOCKET
#options NETGRAPH_TEE
options DEVICE_POLLING # Опрос в контексте системного вызова.
options HZ=500 # Не понял что это. Списал со статьи.
device apic # I/O APIC
device miibus # MII bus support
device rl # RealTek 8129/8139
# Pseudo devices.
device loop # Network loopback
device random # Entropy device
device ether # Ethernet support
#device sl # Kernel SLIP
device ppp # Kernel PPP
device tun # Packet tunnel.
device pty # Pseudo-ttys (telnet etc)
#device md # Memory "disks"
device gif # IPv6 and IPv4 tunneling
#device faith # IPv6-to-IPv4 relaying (translation)
device firmware # firmware assist module
--More--(byte 2803)
Пересобирал Мир (хоотя проблемы от пересборки мира не появились, были при умолчальной установке с диска в режиме - Express) с настройками make.conf:
//#cat /etc/make.conf
Код: Выделить всё
CPUTYPE?= athlon-xp # Тип процессора.
CPUTYPE= athlon-xp # Тип процессора.
# Говорим что флаги включать обязательно
NO_CPU_CFLAGS= false # Don't add -march=<cpu> to CFLAGS automatically
NO_CPU_COPTFLAGS= false # Don't add -march=<cpu> to COPTFLAGS automatically
# Здесь указываем дополнительные флаги (умолчальные: -O -pipe или -O1 -pipe)
CFLAGS= -O2 -pipe -fno-strict-aliasing
MAKE_SHELL?= sh
MAKE_SHELL= sh
# Флаги, использующиеся только для компиляции ядра со специальной оптимизацией (умолчальные: -O -pipe или -O1 -pipe)
COPTFLAGS= -O2 -pipe
# Опция предписыват выполнить сравнение перед инсталяцией.
INSTALL=install -C
ENABLE_SUID_SSH= true
ENABLE_SUID_NEWGRP= true
COMPAT3X= yes
COMPAT4X= yes
MAKE_KERBEROS4=false
MAKE_KERBEROS5=true
# Настройка Perl
PERL_VER=5.8.8
PERL_VERSION=5.8.8
PERL_ARCH=mach
NOPERL=no
NO_PERL=no
WITH_PERL=yes
WITHOUT_PERL=no
BOOTWAIT=3000 # !!!!!!! Чота у меня не действует... :( !!!!!!!
SUP_UPDATE= yes
SUP= /usr/bin/csup
SUPFLAGS= -g -L2 -z # "-z" Разрешает компрессию для всех коллекций.
SUPHOST= cvsup5.ru.freebsd.org
SUPFILE= /etc/cvsup/stable-supfile
PORTSSUPFILE= /etc/cvsup/ports-supfile
DOCSUPFILE= /etc/cvsup/doc-supfile
# Документация токо для ENG и RUS
DOC_LANG=ru_RU.KOI8-R en_US.ISO8859-1
TOP_TABLE_SIZE= 101
# Отрубаем сборку ненужных библиотек и софта.
NO_ACPI= true # не собирать acpiconf(8) и соответствующие программы
NO_BLUETOOTH= true # не собирать Bluetooth и все связанное с ним
NO_X= true # Не собирать консольные проги с поддержкой
##########################################################
# Синтаксис следующих комманд отличается от стандартного, потому записал и их тоже, но в отделную группу.
NOGAMES= true # не собирать игры;
NOINFO= true # не собирать документацию в системе info
NOINET6= true # Не собирать поддержку протокола IPv6
##########################################################
NO_CXX= true # не собирать C++ (как компонент gcc) и его друзей :)
NO_DICT= true # не собирать для Webster словари
NO_DYNAMICROOT= true # нелинковать /bin и /sbin динамически
NO_FORTRAN= true # не собирать g77 и соотв. библиотеки (компонент gcc)
NO_GAMES= true # не собирать игрушки (games/ subdir)
NO_INET6= true # не собирать IPv6 соответствующие программы и библиотеки
NO_INFO= true # не собирать и неустанавливать информационные файлы
NO_LPR= true # не собирать lpr и соответствующие программы
##########################################################################
# С этими опциями "World" не собирается (ошибка).
#NO_TOOLCHAIN= true # не собирать программы для программ разработчиков
#NO_CRYPT= true # не собирать для crypto code (криптография)
#NOCRYPT= true # не собирать кримптографию;
# Криптография не собирается возможно из-за включённой опции - device crypto в конфиг-файле Ядра. Другие опции так же могут быть связаны с Ядром.
##########################################################################
NO_USB= true # не собирать usbd(8) и соответствующие программы
# Смысл данной строки не выяснил (но использую фиг знает зачем).
WANT_FORCE_OPTIMIZATION_DOWNGRADE=1
FORCE_PKG_REGISTER=yes
Код: Выделить всё
#!/bin/sh
# Suck in the configuration variables.
if [ -z "${source_rc_confs_defined}" ]; then
if [ -r /etc/defaults/rc.conf ]; then
. /etc/defaults/rc.conf
source_rc_confs
elif [ -r /etc/rc.conf ]; then
. /etc/rc.conf
fi
fi
# Set quiet mode if requested
case ${firewall_quiet} in
[Yy][Ee][Ss])
fwcmd="/sbin/ipfw -q"
;;
*)
fwcmd="/sbin/ipfw"
;;
esac
${fwcmd} -f flush
${fwcmd} add allow all from any to any
Код: Выделить всё
#########################
ipv6_enable="NO" # Поставьте YES для включения IPv6.
#network_interfaces="auto" # Список сетевых интерфейсов (или "auto")
ifconfig_rl0="inet 192.168.2.2 netmask 255.255.255.0" # Смотрит в локалку.
ifconfig_rl1="inet 192.168.1.2 netmask 255.255.255.0" # Смотрит в инет.
defaultrouter="192.168.1.1"
hostname="localhost" # Имя хоста (обязательно задавать! В /etc/rc.conf)
gateway_enable="YES" # Ставить YES, если этот хост является шлюзом в другие сети
#########################
#dhclient_program="/sbin/dhclient " # Путь к программе-клиенту DHCP.
#dhclient_flags="" # Флаги для программы-клиента DHCP.
#background_dhclient="YES" # Запускать программу-клиент DHCP в фоновом режиме.
#########################
firewall_enable="YES" # Поставьте YES для включения файрволла.
firewall_logging="YES" # Установите YES для логирования пакетов проходящим по правилам файрволла
firewall_script="/etc/rc.firewall " # Скрипт файрволла
#firewall_type="UNKNOWN" # Тип файрволла (подробности в /etc/rc.firewall)
#firewall_quiet="YES"
#firewall_flags="" # Флаги ipfw, когда тип файрволла - файл (file).
#########################
#natd_enable="YES" # Включить natd. (только если firewall_enable="YES")
#natd_interface="rl1" # Внешний интерфейс или IP на котором висит natd.
#natd_program="/sbin/natd "
#natd_flags="-m -f /etc/natd.conf " # -f - пока не знаю.
#########################
#router_enable="YES" # Установить YES если надо запустить демона маршрутизации
#router="/sbin/routed " # Имя демона маршрутизации (путь к программе)
#router_flags="-q" # Флаги для демона маршрутизации
#########################
inetd_enable="YES"
sshd_enable="YES"
icmp_bmcastecho="YES" # Отвечать на широковещательные ping-пакеты
icmp_log_redirect="YES"
#icmp_drop_redirect="YES"
tcp_extensions="YES"
log_in_vain=">=1"
tcp_keepalive="YES"
#########################
font8x14="cp866-8x14"
font8x16="cp866b-8x16"
font8x8="cp866-8x8"
keymap="ru.koi8-r"
keyrate="fast"
scrnmap="koi8-r2cp866"
#########################
#kern_securelevel_enable="YES"
#kern_securelevel="3"
linux_enable="YES"
Код: Выделить всё
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8<VLAN_MTU>
ether 00:80:48:29:e7:ee
inet 192.168.2.2 netmask 0xffffff00 broadcast 192.168.2.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8<VLAN_MTU>
ether 00:80:48:2e:14:ef
inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
inet 127.0.0.1 netmask 0xff000000
и раздает далее адреса вида 192.168.1.xxx.
От него инетом питается комп с FreeBSD (мой, о котором и пишу).
На этом компе 2 сетевухи, обе RealTek 8139.
Dj внутренней сетке на Виндовском компе ипользовал:
IP: 192.168.2.3
маска: 255.255.255.0
шлюз: 192.168.2.2
DNS: 192.168.1.1 (он же - мой коробочный роутер)
На серваке инет ЕСТЬ. Полноценный.
Суть проблемы:
Ещё раз прошу заметить, что изложенные ниже проблемы присутствовали сразу после установки "голой" системы FreeBSD 7.0
Все настройки выложил, чтобы иметь ответ, что мне делать теперь ... ))
1) При загрузке всегда получаю сообщение вида:
Код: Выделить всё
...
Starting sshd.
Sep 27 18:00:17 localhost sm-mta[590]: My unqualified host name (localhost) unknown; sleeping for retry
Sep 27 18:01:17 localhost sm-mta[590]: unable to qualified my own domain name (localhost) -- using short name
Sep 27 18:01:18 localhost sm-mta-queue[609]: My unqualified host name (localhost) unknown; sleeping for retry
Sep 27 18:02:18 localhost sm-mta-queue[609]: unable to qualified my own domain name (localhost) -- using short name
Starting cron.
Local package initialization:.
Starting inetd.
Starting background file system checks in 60 seconds.
Sat Sep 27 18:02:18 UTC 2008
FreeBSD/i386 (localhost) (ttyv0)
login:
Поменял свой localhost на local.host.ru = проблемы с [590]: My unqualified host name (localhost) unknown; sleeping for retry исчезли, но все остальные остались. Излагаю дальше.
2) Комп не становится шлюзом (или ХЗ как это еще назвать) (((
Во внутренней сети не пингуются ни внешние адреса, ни "железный роутер" с адресом 192.168.1.1 и таким же умолчальным DNS.
3) Иногда замечаю надпись на сервачном мониторе типа:
Код: Выделить всё
Sep 27 21:00:58 local kernel: arp: 192.168.2.3 is on rl0 but got reply from 00:хх:хх:хх:хх:68 on rl1
Sep 27 21:01:15 local last message repeated 12 times
Sep 27 21:05:30 local kernel: arp: 192.168.2.3 is on rl0 but got reply from 00:хх:хх:хх:хх:68 on rl1
Sep 27 21:05:35 local last message repeated 5 times
Не понимаю чо он хочет... ((
4) Файл /var/log/security всегда пустой. (но это вряд ли можно назвать проблемой).
5) Другой комп с виндой подключён к Фряшному из локалки, соотв. по ssh коннектится на адрес = 192.168.2.2. Однако набирая адрес 192.168.1.2 я тоже без проблем попадаю на сервант, хотя это, как Вы понимаете, адрес, который использует сетевуха смотрящая в инет (а точнее в "железный роутер"). А этот роутер, как уже было сказано, из локалки не пингуется.
Так вот вопрос = как это безобразие происходит ??
Некоторые вопросы по теме:
- Как таки прально настраиваются простые шлюзы ??? В статьях и на форуме не нашёл.
Полагаю, что все это действие считают простейшим из простейших, потому и никогда не обсуждают.
Однако...
- Обязательно ли включать при этом options MROUTING и if_bridge в ядро, и если да, то с какими параметрами ??
- Обязательно ли ипользовать при этом natd, named, и если да, то с какими настройками и параметрами ??
- Обязательно ли переделывать умолчальный sysctl, и если да, то с какими параметрами ??
- Каие еще дополнительные проги НЕОБХОДИМЫ для работы шлюза ?? (по минималке...)
- Какие виды сетей и подсетей разрешено использовать во внутренней локалке, если не все ??
- Как можно зайти из инета на свой сервак, если используется описанный выше коробочный роутер, принимающий в себя, допустим, статический внешний IP-адрес от провайдера ??
Ну и все возможные подсказки, хоть как-то связанные с этой темой, буду читать с особой внимательностью, всем им буду бесконечно благодарен.
Жду Ваших ответов.
Спасибо. Целоваться не будем... ))
PS: Странно, что здесь BBcode = [spoiler][/spoiler] не работает... (( Жаль.