Компилим ядро freebsd http://argo-uln.blogspot.com/2006/07/freebsd-54.html
В файле
/etc/rc.conf
gateway_enable=”YES”
defaultrouter=”xxx.xxx.xxx.xxx”
ifconfig_fxp0=”inet xxx.xxx.xxx.xxx netmask 255.255.255.0”
ifconfig_fxp1=”inet 192.168.10.1 netmask 255.255.255.0”
firewall_enable=”YES”
firewall_quiet=”YES”
natd_enable=”YES”
natd_interface=”fxp0”
natd_flags=”-f /etc/natd.conf”
Файл
/etc/natd.conf
Пример:
redirect_port tcp 192.168.10.2:3389 3389
Перенаправить порт 3389 на 192.168.10.2:3389
Содержимое файла
/etc/rc.firewall
#/bin/sh -
#Изменено 24.10.2007
fwcmd="/sbin/ipfw -q add"
ipfw -q -f flush
wan_if="fxp0" # внешний интерфейс
lan_if="fxp1" # локальный интерфейс
dns_provaidera=”xxx.xxx.xxx.xxx” # ip днс провайдера
terminal_server=”192.168.10.2” # ip windows терминального сервера
good_ip=”192.168.10.100” # ip из локалки которому разрешаем ходить наружу
skip="skipto 500"
ks="keep-state"
good_tcp1="25,53,80,443,110,3389"
# разрешаем все через интерфейс локальной сети
$fwcmd 002 allow all from any to any via $lan_if
# разрешаем все через 127.0.0.1
$fwcmd 003 allow all from any to any via lo0
# разрешаем ssh снаружи
$fwcmd 020 allow tcp from any to me 22 via $wan_if
$fwcmd 021 allow tcp from me 22 to any via $wan_if
#разрешаем подключения с сервера к днс прова
$fwcmd 024 allow tcp from me to $dns_provaidera 53 via $wan_if $ks
$fwcmd 025 allow udp from me to $dns_provaidera 53 via $wan_if $ks
#разрешаем Пинги с сервера
$fwcmd 026 allow icmp from me to any out via $wan_if $ks
#разрешаем порты 80 21 443 3389 с сервера
$fwcmd 027 allow tcp from me to any $good_tcp1 out via $wan_if $ks
#Подменяем у пакетов из вне на внешнем интерфейсе адрес назначения на 192.168.10.1
$fwcmd 100 divert natd ip from any to me in via $wan_if
$fwcmd 101 check-state
#Разрешаем изнутри подключение к ДНС провайдера
$fwcmd 120 $skip tcp from any to $dns_provaidera 53 out via $wan_if $ks
$fwcmd 121 $skip udp from any to $dns_provaidera 53 out via $wan_if $ks
# Разрешаем снаружи подключение к терминал серверу внутри локалки
$fwcmd 122 allow tcp from any to $terminal_server 3389 in via $wan_if
$fwcmd 123 $skip tcp from $terminal_server 3389 to any out via $wan_if
# Разрешаем 192.168.10.100 доступ наружу к портам 25,53,80,443,110,3389
$fwcmd 125 $skip tcp from $good_ip to any $good_tcp1 out via $wan_if setup $ks
# Разрешаем изнутри icmp
$fwcmd 150 $skip icmp from any to any out via $wan_if $ks
$fwcmd 300 deny all from 192.168.0.0/16 to any in via $wan_if
$fwcmd 301 deny all from 172.16.0.0/12 to any in via $wan_if
$fwcmd 302 deny all from 10.0.0.0/8 to any in via $wan_if
$fwcmd 303 deny all from 127.0.0.0/8 to any in via $wan_if
$fwcmd 304 deny all from 0.0.0.0/8 to any in via $wan_if
$fwcmd 305 deny all from 169.254.0.0/16 to any in via $wan_if
$fwcmd 306 deny all from 192.0.2.0/24 to any in via $wan_if
$fwcmd 307 deny all from 204.152.64.0/23 to any in via $wan_if
$fwcmd 308 deny all from 224.0.0.0/3 to any in via $wan_if
# Разрешаем наружу все с самого сервера
$fwcmd 400 allow tcp from me to any via $wan_if $ks
$fwcmd 450 deny log ip from any to any
# Обратная подмена ip адреса из локалки на внешний
$fwcmd 500 divert natd ip from any to any out via $wan_if
$fwcmd 510 allow ip from any to any
4 комментария:
Немогу поянть логику работы ipfw... После iptables как-то всё непонятно и сложно....
Сперва ты что-то разрешаешь, а в конце правило которое разрешает всё всем? Зачем так? Получаеца что пакет, не попавший ни под одно правило, всё равно успешно пройдёт дальше!?
Внимательно смотри конфиг, 450 строка блокирует все, а до последнего правила надо добраться еще, если смущает отключи.
хм... действительно, не заметил.... прошу прощения.
еще
$fwcmd 401 allow udp from me to any via $wan_if $ks
а то у мня было
#ping ya.ru
ping: cannot resolve ya.ru: Host name lookup failure
добавил про udp пинг с фряхи пошел
Отправить комментарий