FreeBSD ipfw + kernel nat + squid - NEED HELP!

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
mr_friendly_FreeBSD
проходил мимо
Сообщения: 1
Зарегистрирован: 2017-12-21 13:11:02

FreeBSD ipfw + kernel nat + squid - NEED HELP!

Непрочитанное сообщение mr_friendly_FreeBSD » 2017-12-21 14:15:34

Всем хорошего дня.
Уважаемые участники форума прошу вашей помощи.
До недавнего времени работники ходили в интернет без ограничений по сайтам но с ограничениями по скорости (шейпинг).
Была поставлена задача сделать ограничение по заходу на определенные сайты и собирать статистику.
Для этого решил использовать всем хорошо известный squid.
Но вот никак не могу добавить в текущие правила фаервола заворот на прозрачный прокси.
Прошу помочь подсказать куда их нужно добавить.

Собственно сами правила:

Код: Выделить всё

#!/bin/sh

################################################################################

debug=0

################################################################################

################################################################################

ipfw="/sbin/ipfw -q"
scripts_dir="/usr/home/noc/data/cgi/ipfw"
data_dir="/usr/home/noc/data/conf/ipfw"

################################################################################

${ipfw} flush
${ipfw} queue flush
${ipfw} pipe flush
${ipfw} nat flush
#${ipfw} table all flush
${ipfw} table 1 flush
${ipfw} table 2 flush
${ipfw} table 3 flush
${ipfw} table 4 flush
${ipfw} table 5 flush
${ipfw} zero

################################################################################

${ipfw} disable one_pass
#${ipfw} enable one_pass

################################################################################

####

ext_if="vlan213"
ip_of_ext_if="xxx.xxx.xxx.xxx"
#alias0_of_ext_if="xxx.xxx.xxx.xxx"

####

ext_if_replacement=${ip_of_ext_if}
ext_if_alias0_replacement=${alias0_of_ext_if}
net_if="vlan213"
int_if="vlan223"
wlan_if="vlan60"
www_jail_if="vlan223"
mail_jail_if="vlan223"
ip_of_int_if="192.168.0.1"
ip_of_www_server_if="192.168.0.3"
#ip_of_mail_server_if="192.168.0.2"

####

ip_of_winserv="192.168.0.10"

####

wlan_ip="192.168.20.254"

####

int_if_replacement=${ip_of_int_if}
www_jail_if_replacement=${ip_of_www_server_if}
mail_jail_if_replacement=${ip_of_mail_server_if}

####

SSH_GW_INT_PORT="5612"
SSH_WWW_EXT_PORT="5622"
SSH_WWW_INT_PORT="5722"

####

# mail
# http://mostlygeek.com/tech/smtp-on-port-587/
IMAP4_PORT="143"
POP3_PORT="110"
SMTP_PORT="25"
SMTPS_PORT="465"
SMTP_SUBMISSION_PORT="587"
ALL_SMTP="$SMTP_PORT, $SMTPS_PORT, $SMTP_SUBMISSION_PORT"

####

# www
HTTP_PORT="80"
HTTPS_PORT="443"
####

# FTP server default port
FTP_SR_D_PORT="21"
FTP_PORT_INTERNAL="21"
FTP_PORT_EXTERNAL="2021"
FTP_PASV_PORT_1="37021"
FTP_PASV_PORT_2="37022"
FTP_PASV_PORT_3="37023"
FTP_PASV_PORT_4="37024"
FTP_PASV_PORT_5="37025"
FTP_PASV_PORT_6="37026"
FTP_PASV_PORT_7="37027"
FTP_PASV_PORT_8="37028"
FTP_PASV_PORT_9="37029"
FTP_PASV_PORT_10="37030"

####

# RDP default port
RDP_INT_PORT="3389"
RDP_EXT_PORT="3005"

####

# Внутренняя сеть
# work
localnet="192.168.0.0/21"
# Широковещательный адрес для локальной сети.
broadcast_ip_of_localnet="192.168.7.255"
# wlan - wifi local area network
wlannet="192.168.20.0/24"
# Широковещательный адрес для wi-fi сети.
broadcast_ip_of_wlannet="192.168.20.255"

####

################################################################################

#${ipfw} add allow ip from any to any
#exit

################################################################################

# Заполним таблицы:
# Мы
${scripts_dir}/table_fill.sh 1 ${data_dir}/switch_ips.txt
${scripts_dir}/table_fill.sh 1 ${data_dir}/we_ips.txt
# "Свои" люди
${scripts_dir}/table_fill.sh 2 ${data_dir}/vip_ips.txt
# Сотрудники
${scripts_dir}/table_fill.sh 3 ${data_dir}/employees_ips_3.txt
${scripts_dir}/table_fill.sh 3 ${data_dir}/employees_ips_5.txt
# "Редиски"
${scripts_directory}table_fill.sh 4 ${data_dir}/bad_radish_ips.txt
# Разрешённые ip-шники (должны быть в базе!)
${scripts_dir}/table_fill.sh 5 ${data_dir}/switch_ips.txt
${scripts_dir}/table_fill.sh 5 ${data_dir}/we_ips.txt
${scripts_dir}/table_fill.sh 5 ${data_dir}/vip_ips.txt
${scripts_dir}/table_fill.sh 5 ${data_dir}/employees_ips_3.txt
${scripts_dir}/table_fill.sh 5 ${data_dir}/employees_ips_5.txt
${scripts_dir}/table_fill.sh 5 ${data_dir}/bad_radish_ips.txt
# разрешим выход в интернет и подсети 192.168.6.0/24
${ipfw} table 5 add 192.168.6.0/24
# В таблицу 6 будем помещать ip-адреса, которым запрещён доступ в интернет!
${scripts_dir}/table_fill.sh 6 ${data_dir}/blocked_ips.txt
# дополнительно
# покуда не написал логику добавления ip в конфиг сети
# чтобы не генерировался в дхцп, но в фаерволе разрешался
${ipfw} table 1 add 192.168.0.21
${ipfw} table 7 add 192.168.0.21

################################################################################

# NAT (проброс портов)
# Если на интерфейсе статический ip, то лучше указывать его.
# Для EXTERNAL-канала.
${ipfw} nat 1 config log ip ${ip_of_ext_if} same_ports \
	redirect_port tcp ${ip_of_www_server_if}:${HTTP_PORT} ${HTTP_PORT} \
	redirect_port tcp ${ip_of_www_server_if}:${HTTPS_PORT} ${HTTPS_PORT} \
	redirect_port tcp ${ip_of_www_server_if}:${FTP_PORT_INTERNAL} ${FTP_PORT_EXTERNAL} \
	redirect_port tcp ${ip_of_www_server_if}:${FTP_PASV_PORT_1} ${FTP_PASV_PORT_1} \
	redirect_port tcp ${ip_of_www_server_if}:${FTP_PASV_PORT_2} ${FTP_PASV_PORT_2} \
	redirect_port tcp ${ip_of_www_server_if}:${FTP_PASV_PORT_3} ${FTP_PASV_PORT_3} \
	redirect_port tcp ${ip_of_www_server_if}:${FTP_PASV_PORT_4} ${FTP_PASV_PORT_4} \
	redirect_port tcp ${ip_of_www_server_if}:${FTP_PASV_PORT_5} ${FTP_PASV_PORT_5} \
	redirect_port tcp ${ip_of_www_server_if}:${FTP_PASV_PORT_6} ${FTP_PASV_PORT_6} \
	redirect_port tcp ${ip_of_www_server_if}:${FTP_PASV_PORT_7} ${FTP_PASV_PORT_7} \
	redirect_port tcp ${ip_of_www_server_if}:${FTP_PASV_PORT_8} ${FTP_PASV_PORT_8} \
	redirect_port tcp ${ip_of_www_server_if}:${FTP_PASV_PORT_9} ${FTP_PASV_PORT_9} \
	redirect_port tcp ${ip_of_www_server_if}:${FTP_PASV_PORT_10} ${FTP_PASV_PORT_10} \
	redirect_port tcp ${ip_of_www_server_if}:${SSH_WWW_INT_PORT} ${SSH_WWW_EXT_PORT} \
	redirect_port tcp ${ip_of_winserv}:${RDP_INT_PORT} ${RDP_EXT_PORT}

################################################################################

# START: EXTERNAL канал #

# Входящий канал 0 -> pipe 30 - для "служебного" (важного) трафика.
# Правда вопрос: что считать важным трафиком? - Я думаю это: TCP FIN, TCP SYN, TCP RST, TCP PSH ... (нужно продолжить :)
# bw (bandwidth) - A value of 0 (default) means unlimited bandwidth.
# У нас локальная сеть с маской /16 - поэтому 0x0000ffff
${ipfw} pipe 30 config bw 0Kbit/s mask dst-ip 0x0000ffff

# Входящий канал 1 -> pipe 31 (для нас и vip)
${ipfw} pipe 31 config bw 45000Kbit/s queue 60 gred 0.002/54/60/0.1

# Входящий канал 2 -> pipe 32 (для остальных)
${ipfw} pipe 32 config bw 25000Kbit/s queue 40 gred 0.002/36/40/0.1

# Входящий канал 3 -> pipe 33 (для 192.168.6.0/24)
${ipfw} pipe 33 config bw 25000Kbit/s queue 26 gred 0.002/23/26/0.1

# Исходящий канал 0 -> pipe 40 - для "служебного" (важного) трафика.
# bw (bandwidth) - A value of 0 (default) means unlimited bandwidth.
# У нас локальная сеть с маской /16 - поэтому 0x0000ffff
${ipfw} pipe 40 config bw 0Kbit/s mask src-ip 0x0000ffff

# Исходящий канал 1 -> pipe 41 (для нас и vip)
${ipfw} pipe 41 config bw 32000Kbit/s queue 30 gred 0.002/27/30/0.1

# Исходящий канал 2 -> pipe 42 (для остальных)
${ipfw} pipe 42 config bw 10000Kbit/s queue 26 gred 0.002/23/26/0.1

# Исходящий канал 3 -> pipe 43 (для 192.168.6.0/24)
${ipfw} pipe 43 config bw 8000Kbit/s queue 26 gred 0.002/23/26/0.1

# STOP: EXTERNAL канал #

################################################################################

# Шейпить будем, _исходящий_ от локальных пользователей трафик, до NAT-а;
# и после NAT-а - _входящий_ - трафик, возвращающийся обратно к локальным пользователям.
# Поэтому src-ip 0xffffffff и dst-ip 0xffffffff соответственно.
# Для оптимизации можно сделать src-ip 0x0000ffff и dst-ip 0x0000ffff (нужно проверить, а то эти маски я не до конца понял :(), так как
# у нас по сути 4-ре категории пользователей из подсетей 192.168.1.0 (и 192.168.0.0), 192.168.2.0, 192.168.3.0 (и 192.168.5.0) и 192.168.4.0,
# и мы разбрасываем эти подсети по очередям, учитывая маску сети.

# Очереди на входящий канал 1 (pipe 31) -> 31x
# Мы
${ipfw} queue 311 config pipe 31 weight 60 mask dst-ip 0x0000ffff
# "Свои" люди
${ipfw} queue 312 config pipe 31 weight 35 mask dst-ip 0x0000ffff

# Очереди на входящий канал 2 (pipe 32) -> 32x
# Сотрудники
${ipfw} queue 321 config pipe 32 weight 30 mask dst-ip 0x0000ffff
# "Редиски"
${ipfw} queue 322 config pipe 32 weight 5 mask dst-ip 0x0000ffff

# Очереди на входящий канал 3 (pipe 33) -> 33x
# 192.168.6.0/24
${ipfw} queue 331 config pipe 33 weight 30 mask dst-ip 0x0000ffff

# Очереди на исходящий канал 1 (pipe 41) -> 41x
# Мы
${ipfw} queue 411 config pipe 41 weight 60 mask src-ip 0x0000ffff
# "Свои" люди
${ipfw} queue 412 config pipe 41 weight 35 mask src-ip 0x0000ffff

# Очереди на исходящий канал 2 (pipe 42) -> 42x
# Сотрудники
${ipfw} queue 421 config pipe 42 weight 30 mask src-ip 0x0000ffff
# "Редиски"
${ipfw} queue 422 config pipe 42 weight 5 mask src-ip 0x0000ffff

# Очереди на исходящий канал 3 (pipe 43) -> 43x
# 192.168.6.0/24
${ipfw} queue 431 config pipe 43 weight 30 mask src-ip 0x0000ffff

################################################################################

${ipfw} add 10 set 1 allow ip4 from any to any via lo0
${ipfw} add 10 set 1 deny ip4 from any to 127.0.0.0/8
${ipfw} add 10 set 1 deny ip4 from 127.0.0.0/8 to any

# Если у нас 7.x FreeBSD, то фрагментированные пакеты (фрагменты) будем просто отбрасывать!
# Точнее мы заюзаем pf и необходимость в этом правиле отпадёт :)
# scrub all fragment reassemble
${ipfw} add 20 set 1 deny log logamount 500 all from any to any frag

# Для перестраховки :)
${ipfw} add 31 set 1 allow ip4 from 192.168.0.10 to 192.168.0.1 dst-port ${SSH_GW_INT_PORT} in
${ipfw} add 32 set 1 allow ip4 from 192.168.0.1 to 192.168.0.10 src-port ${SSH_GW_INT_PORT} out

# Для тестов
# wlan 60 begin
#${ipfw} add 41 set 1 allow ip4 from ${wlan_ip} to any
${ipfw} add 41 set 1 allow ip4 from ${wlan_ip} to ${wlannet}
${ipfw} add 42 set 1 allow ip4 from ${wlannet} to ${wlan_ip}

################################################################################

# DENY

# deny bad ips
bad_ips="217.69.128.91, 184.105.192.2"
${ipfw} add 51 set 1 deny log logamount 1000 ip4 from any to ${bad_ips} in recv ${int_if_replacement}
${ipfw} add 52 set 2 deny log logamount 1000 ip4 from ${bad_ips} to any in recv ${int_if_replacement}

################################################################################

#ext_ips="xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx"

${ipfw} add 61 allow ip from any to $ext_ips
${ipfw} add 62 allow ip from $ext_ips to any

################################################################################

# set 2 - EXTERNAL-канал

# *** IN *** #

# Правила для сервера.
# start
# В pf: set skip on ${int_if}

# Для dhcp-клиентов.
${ipfw} add 90 set 1 allow udp from 0.0.0.0 68 to 255.255.255.255 67 in recv ${int_if_replacement}

# Для bsnmpd.
${ipfw} add 90 set 1 deny ip4 from any to any 161 in

${ipfw} add 90 set 1 allow ip4 from ${localnet} to ${ip_of_int_if} in recv ${int_if_replacement}
${ipfw} add 90 set 1 allow ip4 from ${localnet} to ${ip_of_www_server_if} in recv ${www_jail_if_replacement}
##${ipfw} add 90 set 1 allow ip4 from ${localnet} to ${ip_of_mail_server_if} in recv ${mail_jail_if_replacement}
${ipfw} add 90 set 1 fwd ${ip_of_int_if} ip4 from ${localnet} to ${ip_of_ext_if} in recv ${int_if_replacement}

# Для www-server-а!
# from any to ${ip_of_ext_if} in recv ${ext_if_replacement}
${ipfw} add 90 set 2 allow ip4 from any to ${ip_of_www_server_if} in recv ${ext_if_replacement}
##${ipfw} add 90 set 2 allow ip4 from any to ${ip_of_mail_server_if} in recv ${ext_if_replacement}
#${ipfw} add 90 set 2 allow ip4 from any to ${ip_of_mail_server_if} in recv ${alias0_of_ext_if}

# stop

################################################################################

# Пакеты на исход.
if [ ${debug} -eq 1 ]
then
	printf "\n *** IN *** Пакеты на исход."
fi

provider_net="10.21.0.0/16, 10.22.0.0/16"
${ipfw} add 99 set 1 allow ip4 from any to $provider_net in recv ${int_if_replacement}

# Для шейпа.
${ipfw} add 100 set 1 deny ip4 from any to ${broadcast_ip_of_localnet} in recv ${int_if_replacement}
${ipfw} add 100 set 1 deny ip4 from any to 255.255.255.255 in recv ${int_if_replacement}
RFC1918="192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8"
#RFC1918="192.168.0.0/16, 172.16.0.0/12"
${ipfw} add 100 set 1 deny log logamount 1000 ip4 from any to ${RFC1918} in recv ${int_if_replacement}
${ipfw} add 100 set 2 skipto 1000 ip4 from table\(5\) to any in recv ${int_if_replacement}

################################################################################

#${ipfw} add 111 fwd 192.168.0.1,3129 tcp from 192.168.0.0/16 to any 443
#${ipfw} add 112 fwd 192.168.0.1,3128 tcp from 192.168.0.0/16 to any 80


################################################################################

# Пакеты на вход.
if [ ${debug} -eq 1 ]
then
	printf "\n *** IN *** Пакеты на вход."
fi

# Для EXTERNAL-интерфейса (NAT).
${ipfw} add 200 set 2 skipto 2000 ip4 from any to ${ip_of_ext_if} in recv ${ext_if_replacement}
# for mail-jail
##${ipfw} add 205 set 3 nat 2 ip4 from any to ${alias0_of_ext_if} \{ dst-port ${SMTP_PORT},${POP3_PORT},${IMAP4_PORT} or src-port ${SMTP_PORT},${POP3_PORT},${IMAP4_PORT} \} in recv ${ext_if_alias0_replacement}
##${ipfw} add 205 set 3 allow ip4 from any to ${ip_of_mail_server_if} \{ dst-port ${SMTP_PORT},${POP3_PORT},${IMAP4_PORT} or src-port ${SMTP_PORT},${POP3_PORT},${IMAP4_PORT} \} in recv ${ext_if_alias0_replacement}

#${ipfw} add 205 set 3 fwd ${ip_of_mail_server_if} ip4 from any to ${alias0_of_ext_if} dst-port ${SMTP_PORT},${POP3_PORT},${IMAP4_PORT} in recv ${ext_if_alias0_replacement}
#${ipfw} add 210 set 3 fwd ${ip_of_mail_server_if} ip4 from any to ${alias0_of_ext_if} dst-port ${POP3_PORT} in recv ${ext_if_alias0_replacement}
#${ipfw} add 215 set 3 fwd ${ip_of_mail_server_if} ip4 from any to ${alias0_of_ext_if} dst-port ${IMAP4_PORT} in recv ${ext_if_alias0_replacement}


# Запрещаем то, что не разрешено явно!
if [ ${debug} -eq 1 ]
then
	printf "\n *** IN *** Запрещаем то, что не разрешено явно!"
fi

${ipfw} add 495 set 1 deny log logamount 1000 ip4 from any to any in

################################################################################

# *** OUT *** #


# Правила для сервера.
# start
if [ ${debug} -eq 1 ]
then
	printf "\n *** OUT *** Правила для сервера."
fi

${ipfw} add 500 set 1 allow ip4 from ${ip_of_int_if} to ${localnet} out xmit ${int_if_replacement}

${ipfw} add 500 set 1 allow ip4 from ${ip_of_www_server_if} to ${localnet} out xmit ${www_jail_if_replacement}
${ipfw} add 500 set 1 allow ip4 from ${ip_of_ext_if} to ${localnet} out xmit ${int_if_replacement}
# stop


# Пакеты, возвращающиеся обратно к lan с EXTERNAL-интерфейса.
if [ ${debug} -eq 1 ]
then
	printf "\n *** OUT *** Пакеты, возвращающиеся обратно к lan с EXTERNAL-интерфейса."
fi


# Для шейпа.
${ipfw} add 500 set 2 skipto 5000 ip4 from any to table\(5\) out xmit ${int_if_replacement} recv ${ext_if_replacement}


# Пакеты на исход.
if [ ${debug} -eq 1 ]
then
	printf "\n *** OUT *** Пакеты на исход."
fi

${ipfw} add 700 set 2 skipto 7000 ip4 from any to any out xmit ${ext_if_replacement} recv ${int_if_replacement}

################################################################################

# Правила для сервера.
# Нужно будет указать явно какие пакеты разрешены, а всё остальное отбрасывать!
# Точнее, то что уходит от _сервера_ (через внешние интерфейсы) - пускай уходит,
# а нужно "рубать" на внутренних интерфейсах.
# start

if [ ${debug} -eq 1 ]
then
	printf "\n *** OUT *** Правила для сервера."
fi

# Для www-server-а!
${ipfw} add 900 set 2 allow ip4 from ${ip_of_www_server_if} to any src-port ${SSH_WWW_INT_PORT} out xmit ${ext_if_replacement}
${ipfw} add 900 set 2 nat 1 ip4 from ${ip_of_www_server_if} to any out xmit ${ext_if_replacement}

${ipfw} add 905 set 2 allow ip4 from ${ip_of_ext_if} to any out xmit ${ext_if_replacement}

# stop

################################################################################

# Запрещаем то, что не разрешено явно!
if [ ${debug} -eq 1 ]
then
	printf "\n *** OUT *** Запрещаем то, что не разрешено явно!"
fi
${ipfw} add 995 set 1 deny log logamount 1000 ip4 from any to any out


# in recv ${int_if_replacement}

# Все DNS-запросы должны обслуживаться _локальным_ DNS-сервером, а то, к примеру, некоторые вирусы могут
# подменить DNS-сервер на свой. Хотя они обычно правят файл hosts :) (C:\Windows\System32\drivers\etc\hosts)
${ipfw} add 1005 set 1 deny log logamount 1000 ip4 from any to any dst-port 53



# Те же рассуждения касаются и 25 TCP-порта (SMTP)
# http://mostlygeek.com/tech/smtp-on-port-587/
#mail_allowed_ips="xxx.xxx.xxx.xxx"
#${ipfw} add 1004 set 1 allow ip4 from $mail_allowed_ips to any dst-port ${ALL_SMTP}
#${ipfw} add 1005 set 1 deny log logamount 10000 ip4 from any to any dst-port ${SMTP_PORT}
#${ipfw} add 1005 set 1 deny log logamount 10000 ip4 from any to any dst-port ${SMTPS_PORT}
#${ipfw} add 1005 set 1 deny log logamount 10000 ip4 from any to any dst-port ${SMTP_SUBMISSION_PORT}


################################################################################

# !!! Следующее правило для того, чтобы те, кто явно не перечислен (кто не в базе), не вышли в интернет. !!!
if [ ${debug} -eq 1 ]
then
	printf "\n *** OUT *** Следующее правило для того, чтобы те, кто явно не перечислен (кто не в базе), не вышли в интернет."
fi

${ipfw} add 1005 set 2 deny log logamount 500 ip4 from not table\(5\) to any

# и + запрещаем выход тем, кто в таблице 6 !!!

if [ ${debug} -eq 1 ]
then
	printf "\n *** OUT *** и + запрещаем выход тем, кто в таблице 6 !!!"
fi

${ipfw} add 1005 set 2 deny log logamount 500 ip4 from table\(6\) to any

###

#${ipfw} add 1011 fwd 192.168.0.1,3129 tcp from 192.168.0.0/16 to any 443
#${ipfw} add 1012 fwd 192.168.0.1,3128 tcp from 192.168.0.0/16 to any 80

#${ipfw} add 1081 fwd 192.168.0.1,3129 tcp from 192.168.0.0/16 to any 443
#${ipfw} add 1082 fwd 192.168.0.1,3128 tcp from 192.168.0.0/16 to any 80

#${ipfw} add 1010 set 2 pipe 40 ip4 from any to any { tcpflags syn or tcpflags fin or tcpflags rst or tcpflags psh }

${ipfw} add 1030 set 2 queue 411 ip4 from table\(1\) to any

${ipfw} add 1040 set 2 queue 412 ip4 from table\(2\) to any

${ipfw} add 1050 set 2 queue 421 ip4 from table\(3\) to any

${ipfw} add 1060 set 2 queue 422 ip4 from table\(4\) to any

${ipfw} add 1065 set 2 queue 431 ip4 from 192.168.6.0/24 to any

###${ipfw} add 1070 set 2 netgraph 100 ip4 from any to any

${ipfw} add 1090 set 2 allow ip4 from any to any

###

# in recv ${ext_if_replacement}
# NAT

${ipfw} add 2010 set 2 nat 1 ip4 from any to any
${ipfw} add 2090 set 2 allow ip4 from any to any


# out xmit ${int_if_replacement} recv ${ext_if_replacement}

#${ipfw} add 5011 fwd 192.168.0.1,3129 tcp from 192.168.0.0/16 to any 443
#${ipfw} add 5012 fwd 192.168.0.1,3128 tcp from 192.168.0.0/16 to any 80

#${ipfw} add 5081 fwd 192.168.0.1,3129 tcp from 192.168.0.0/16 to any 443
#${ipfw} add 5082 fwd 192.168.0.1,3128 tcp from 192.168.0.0/16 to any 80

#${ipfw} add 5010 set 2 pipe 30 ip4 from any to any { tcpflags syn or tcpflags fin or tcpflags rst or tcpflags psh }

${ipfw} add 5030 set 2 queue 311 ip4 from any to table\(1\)

${ipfw} add 5040 set 2 queue 312 ip4 from any to table\(2\)

${ipfw} add 5050 set 2 queue 321 ip4 from any to table\(3\)

${ipfw} add 5060 set 2 queue 322 ip4 from any to table\(4\)

${ipfw} add 5065 set 2 queue 331 ip4 from any to 192.168.6.0/24

###${ipfw} add 5070 set 2 netgraph 100 ip4 from any to any

${ipfw} add 5090 set 2 allow ip4 from any to any

###

# out xmit ${ext_if_replacement} recv ${int_if_replacement}
# NAT


#${ipfw} add 7001 fwd 192.168.0.1,3129 tcp from 192.168.0.0/16 to any 443
#${ipfw} add 7002 fwd 192.168.0.1,3128 tcp from 192.168.0.0/16 to any 80

${ipfw} add 7010 set 2 nat 1 ip4 from any to any



${ipfw} add 7100 set 2 allow ip4 from any to any


################################################################################

# Запрещаем то, что не разрешено явно!
${ipfw} add 60000 set 1 deny log logamount 1000 ip4 from any to any


if [ ${debug} -eq 1 ]
then
	printf "\n\nFinish :)\n\n"
fi

################################################################################


Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35068
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

FreeBSD ipfw + kernel nat + squid - NEED HELP!

Непрочитанное сообщение Alex Keda » 2018-01-09 23:33:59

Код: Выделить всё

ipfw show
Убей их всех! Бог потом рассортирует...