Привет всем. Новичок в FreeBSD.
После упорного штурма man man... итд есть пара вопросов :)
opennet и его форум по интересующим вопросам читал,
но не увидел нужных ответов.
Имеем:
FreeBSD 5.1-RELEASE
Установленные пакеты:
CommuniGate Pro Messaging Server v4.1.8
rinetd-0.62
mysql 3.23
sshd из портов (последний)
named из портов (последний)
ftpd из портов (последний)
Два сетевых интерфейса, ed0 - в интернет, ed1 - в локалку
Внутренняя сеть видит интернет через диверт (natd)
Sshd, named, ftpd и mysql висят только на локальном интерфейсе
rinetd переадресует для edonkey
communigate pro - корпоративная почта (домен), relay несвоим запрещен
Вопросы следующие:
##################################################################
1. Немного офф-топик. Устанавливаю Midnight Commander из портов. Вместо кириллицы
вижу кракозябры (через ssh-клиент Putty). Многочисленные FAQ's по
русификации не помогли. В Putty charset стоит 1251, в MC тоже 1251, 8-bit.
echo $TERM - xterm
########### rc.conf ###########
keymap=ru.cp1251
scrnmap="win2cpp866"
font8x16=cp866-8x16
font8x14=cp866-8x14
font8x8=cp866-8x8
keychange="61 ESC[K"
###########
########### rc.conf ###########
russian|Russian Users Accounts:\
:charset=CP1251:\
:lang=ru_RU.CP1251:\
:tc=default:
###########
Через pw для root'a выставлен класс russian. Во всем остальном русский язык
работает на ура, только в MC проблемы... В чем могут быть грабли?
Случайно нашел начало граблей - MC вместо CP1251 подсовывает KOI-8R.
Несмотря на настройки через меню (WIN1251).
##################################################################
(конфиги в самом низу)
2. Упорно не могу найти, куда пристроить правила для подсчета ИСХОДЯЩЕГО
трафика из внутренней сети. Нужно считать по каждому хосту отдельно, т.е.
это кучка правил. В нижеприведенном конфиге есть пример того, как я пытаюсь
этот ИСХОДЯЩИЙ трафик считать - увы неверно считаю. Подскажите плз....)
3. Не нашел способа пускать Edonkey пользователям. Беда в том,
что их несколько. Так-бы просто сделал форвард таких-то портов туда-то.
Правила с флагом keep-state не проходят, т.к. ввиду корявости
конфига пришлось вначале пускать локальную сеть на юникс, а уже следующим
правилом уже в интернет.
4. Не разобрался с ICMP. В одних документациях сказано, что пускать
следует такие типы ICMP туда, в других другие типы туда. А может
есть общепринятые правила пропуска ICMP? Т.е. из локальной сети
пускать все ICMP, в локальную никакие, от юникса пускать такие,
к юниксу только такие.
###################################################################
5. От провайдера постоянно сыпятся broadcast по udp. ????????
Трафик хоть и мелкий но тарифицируется. Кто-нибудь с этим боролся?
6. Далее - написал скрипт, забирающий счетчики IPFW в sql,
юзера смотрят статистику другим скриптом через http. С большой
радостью обнаружил, что перловые скрипты хотя и работают, но при запуске
из консоли каждый раз ругаются на мою любимую русскую кодировку CP1251.
Это не фатально, но неприятно. Чем этот perl прибить? )))
####################
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LC_ALL = (unset),
LANG = "ru_RU.CP1251"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
####################
7. Ftpd тормозит на отдачу. Настройки дефолтные. Тормозит так,
будто канал раз в 10 меньше чем есть. На прием все отлично.
Других проблем с быстродействием сети на этой машине нет.
Да, тормозит во всех режимах, passive и без passive.
8. Fetch вообще не генерит трафик!! Писал пустой конфиг рода
ipfw add pass log ip from any to any
и после команды fetch www.ru (скачено 12кб) в ipfw show были нули
???????
################# кусок rc.conf #################
ifconfig_ed0="inet xxx.xxx.xxx.xxx netmask 255.255.255.0"
ifconfig_ed1="inet 192.168.1.100 netmask 255.255.255.0"
defaultrouter="xxx.xxx.xxx.xxx"
gateway_enable="YES"
hostname="blablabla.ru"
kern_securelevel_enable="NO"
firewall_enable="YES"
firewall_script="/etc/rc.firewall"
firewall_type="MY"
firewall_quiet="YES"
firewall_logging="YES"
tcp_extensions="NO"
tcp_drop_synfin="YES"
icmp_drop_redirect="YES"
icmp_log_redirect="YES"
natd_enable="YES"
natd_interface="xxx.xxx.xxx.xxx"
natd_flags="-f /etc/natd.conf"
################# natd.conf ####################
log no
log_denied no
use_sockets yes
same_ports yes
unregistered_only yes
dynamic yes
################ собственно rc.firewall ######################
#!/bin/sh -
#
# ALIASES
# internet interface
oif="ed0"
onet="xxx.xxx.xxx.xxx"
omask="255.255.255.0"
oip="xxx.xxx.xxx.xxx"
# lan interface
iif="ed1"
inet="192.168.1.0"
imask="255.255.255.0"
iip="192.168.1.100"
local=${inet}:${imask}
# dns servers
dns1="xxx.xxx.xxx.xxx"
dns2="xxx.xxx.xxx.xxx"
# 21,20,80,3128,8000,8080 - ftp & http
# 7000 - preferance
# 2147 - poker
# 5190 - icq
# 4000,9000 - muds
# 7771 - mirc
# 4662, 3759(udp) - edonkey
# 25,110 - mail (@mail.ru)
ports="21,25,110,20,80,3128,8000,8080,7000,2147,5190,4000,9000,7771,4662,3759"
# inet interface allowed ports
unix_in="25"
unix_out="0-65535" # +user_out if not 0-65535
# local interface allowed ports
unix_local_in="0-65535"
unix_local_out="0-65535"
# INIT
ipfw -f flush
ipfw add 50 check-state
# Keep open our ssh session forever & when flushing rules
ipfw add pass tcp from $local to 192.168.1.100 dst-port 22 established
ipfw add pass tcp from 192.168.1.100 to $local src-port 22 established
ipfw add pass all from $local to 192.168.1.100 dst-port 22
ipfw add pass all from 192.168.1.100 to $local src-port 22
# SETUP LOOPBACK
ipfw add pass all from any to any via lo0
ipfw add deny all from any to 127.0.0.0/8
ipfw add deny ip from 127.0.0.0/8 to any
# MODEM rulez
ipfw add pass all from any to any via ppp0
# FROM DEFAULT RC.FIREWALL
ipfw add deny all from ${inet}:${imask} to any in via $oif
ipfw add deny all from ${onet}:${omask} to any in via $iif
ipfw add deny all from any to 10.0.0.0/8 via $oif
ipfw add deny all from any to 172.16.0.0/12 via $oif
ipfw add deny all from any to 192.168.0.0/16 via $oif
ipfw add deny all from any to 0.0.0.0/8 via $oif
ipfw add deny all from any to 169.254.0.0/16 via $oif
ipfw add deny all from any to 192.0.2.0/24 via $oif
ipfw add deny all from any to 224.0.0.0/4 via $oif
ipfw add deny all from any to 240.0.0.0/4 via $oif
# COUNT OUTGOING TRAFFIC
ipfw add 3710 count all from 192.168.1.1 to not $local out via ed0
ipfw add 3720 count all from 192.168.1.2 to not $local out via ed0
ipfw add 3730 count all from 192.168.1.3 to not $local out via ed0
ipfw add 3740 count all from 192.168.1.4 to not $local out via ed0
ipfw add 3750 count all from 192.168.1.5 to not $local out via ed0
ipfw add 3760 count all from 192.168.1.6 to not $local out via ed0
ipfw add 3770 count all from 192.168.1.7 to not $local out via ed0
ipfw add 3780 count all from 192.168.1.8 to not $local out via ed0
ipfw add 3790 count all from 192.168.1.9 to not $local out via ed0
ipfw add 3800 count all from 192.168.1.10 to not $local out via ed0
ipfw add 3810 count all from $oip to not $local out via ed0
# DIVERT
ipfw add 3900 divert natd all from any to any via $oif
# COUNT INCOMING TRAFFIC
ipfw add 5010 count all from not $local to 192.168.1.1 in via ed0
ipfw add 5020 count all from not $local to 192.168.1.2 in via ed0
ipfw add 5030 count all from not $local to 192.168.1.3 in via ed0
ipfw add 5040 count all from not $local to 192.168.1.4 in via ed0
ipfw add 5050 count all from not $local to 192.168.1.5 in via ed0
ipfw add 5060 count all from not $local to 192.168.1.6 in via ed0
ipfw add 5070 count all from not $local to 192.168.1.7 in via ed0
ipfw add 5080 count all from not $local to 192.168.1.8 in via ed0
ipfw add 5090 count all from not $local to 192.168.1.9 in via ed0
ipfw add 5100 count all from not $local to 192.168.1.10 in via ed0
ipfw add 5110 count all from not $local to $oip in via ed0
# FROM DEFAULT RC.FIREWALL
ipfw add deny all from any to 0.0.0.0/8 via $oif
ipfw add deny all from any to 169.254.0.0/16 via $oif
ipfw add deny all from any to 192.0.2.0/24 via $oif
ipfw add deny all from any to 224.0.0.0/4 via $oif
ipfw add deny all from any to 240.0.0.0/4 via $oif
# ICMP
ipfw add deny icmp from any to 255.255.255.255 in via $oif
ipfw add reject icmp from any to 255.255.255.255 out via $oif
ipfw add deny icmp from any to $imask in via $oif
ipfw add reject icmp from any to $imask out via $oif
ipfw add deny icmp from any to $inet in via $oif
ipfw add reject icmp from any to $inet out via $oif
ipfw add pass icmp from any to any
# UNIX_LAN
ipfw add pass all from $local to any via $iif
ipfw add pass all from any to $local via $iif
# UNIX_INET
ipfw add pass tcp from $oip to any dst-port $unix_out out via $oif
ipfw add pass tcp from any to $oip dst-port $unix_out in via $oif established
ipfw add pass tcp from any to $oip dst-port $unix_in in via $oif
ipfw add pass udp from me to $dns1 dst-port 53 out via $oif keep-state
ipfw add pass udp from me to $dns2 dst-port 53 out via $oif keep-state
# USERS
ipfw add pass all from not $local to $local src-port $ports in via ed0 established
# Здесь секция для Edonkey
# DENY ALL OTHER
###########################################################
И еще.. чем больше в этот конфиг вписываю, тем больше понимаю что написан он
очень криво (еще бы). Хотя все порты кроме 25 закрыты - сканировал из инета,
а 25 порт подвергал DOS-атакам. Может поделиться кто-нибудь надежным и
железобетонным конфигом?)))) Дошло до того, что после бессонных ночей с ipfw,
программируя на delphi начал писать ipfw add deny bla-bla-bla....
Спасибо за внимание.