IPFW + ICMP

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Oviplokos
проходил мимо

IPFW + ICMP

Непрочитанное сообщение Oviplokos » 2010-10-05 14:36:22

Ситуация такая, юзаю

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

gw-local# uname -a
FreeBSD gw-local 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Fri Oct  1 17:10:49 NOVST 2010     root@gw-local.rzga.intra:/usr/obj/usr/src/sys
/main_kernell.2010-01-10  i386

gw-local# cat /usr/src/sys/i386/conf/main_kernell.2010-01-10
options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=100
options         IPFIREWALL_NAT
options         IPFIREWALL_FORWARD
options         LIBALIAS
options         ROUTETABLES=2
options         DUMMYNET
options         HZ="1000"

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

gw-local# cat /etc/rc.firewall
#!/bin/sh -
echo "Checking ng_ipfw..."
kldstatscript=`kldstat | grep ng_ipfw`
if [ "$kldstatscript" = "" ]; then
   echo "Starting ng_ipfw..."
      kldload ng_ipfw > /dev/null 2>&1
fi
echo -n "Starting firewall..."
ipfw="/sbin/ipfw"
eq_if="bge0"
eq_ip="Внешний IP"
lan_if="rl1"
lan_ip="Внутренний IP"
lan_net="192.168.x.0/24"
${ipfw} -q flush
${ipfw} -q pipe flush
${ipfw} -q queue flush
${ipfw} -q table 1 flush
${ipfw} -q table 2 flush
${ipfw} -q table 3 flush
${ipfw} -q table 4 flush
${ipfw} -q table 5 flush
${ipfw} -q table 6 flush
${ipfw} -q table 7 flush
${ipfw} -q table 8 flush
${ipfw} -q table 9 flush
${ipfw} -q table 10 flush
${ipfw} -q table 11 flush
${ipfw} -q table 12 flush
${ipfw} -q table 13 flush
${ipfw} -q table 14 flush

# Доступ в Интернет по всем портам
${ipfw} table 1 add 192.168.x.0/24 #Сеть

# Бесплатные подсети на 100Mb\s ##############
${ipfw} table 10 add 192.198.x.0/24

#Доступ по IP к серверу
#${ipfw} table 11 add xxx.xxx.xxx.xxx

#Петля
${ipfw} add allow all from any to any via lo0
${ipfw} add deny all from any to 127.0.0.0/8
${ipfw} add deny all from 127.0.0.0/8 to any

################### Устанавливаем соединения #########################
${ipfw} add 00040 check-state

########## Блокируем подмену пакетов и всякий хлам ###################
${ipfw} add deny ip from any to 172.16.0.0/12 in via $eq_if
${ipfw} add deny ip from any to 172.16.0.0/12 in via $lan_if

${ipfw} add deny ip from any to 10.0.0.0/8 in via $eq_if
${ipfw} add deny ip from any to 10.0.0.0/8 in via $lan_if

${ipfw} add deny ip from any to 169.254.0.0/16 in via $eq_if
${ipfw} add deny ip from any to 169.254.0.0/16 in via $lan_if

${ipfw} add deny ip from any to 240.0.0.0/4 in via $eq_if
${ipfw} add deny ip from any to 240.0.0.0/4 in via $lan_if

${ipfw} add deny ip from any to 224.0.0.0/4 in via $eq_if
${ipfw} add deny ip from any to 224.0.0.0/4 in via $lan_if

##################### Сервер в интернет ###############################
#EQ
${ipfw} add allow tcp from $eq_ip to any setup keep-state via $eq_if
${ipfw} add allow udp from $eq_ip to any keep-state via $eq_if

##################### Доступ на сервер по портам #######################
#Дотуп на сервак по IP
#EQ
${ipfw} add allow all from "table(11)" to $eq_ip via $eq_if
${ipfw} add allow all from $eq_ip to "table(11)" via $eq_if

#EQ
${ipfw} add allow tcp from any to $eq_ip 80 setup keep-state via $eq_if
${ipfw} add allow tcp from any to $eq_ip 25 setup keep-state via $eq_if
${ipfw} add allow tcp from any to $eq_ip 110 setup keep-state via $eq_if
${ipfw} add allow tcp from any to $eq_ip 3389 setup keep-state via $eq_if
${ipfw} add allow tcp from any to $eq_ip 33892 setup keep-state via $eq_if
${ipfw} add allow tcp from any to $eq_ip 33893 setup keep-state via $eq_if
${ipfw} add allow tcp from any to $eq_ip 33894 setup keep-state via $eq_if
${ipfw} add allow tcp from any to $eq_ip 33895 setup keep-state via $eq_if
${ipfw} add allow tcp from any to $eq_ip 33896 setup keep-state via $eq_if
${ipfw} add allow tcp from any to $eq_ip 33897 setup keep-state via $eq_if
${ipfw} add allow tcp from any to $eq_ip 33898 setup keep-state via $eq_if
${ipfw} add allow tcp from any to $eq_ip 33899 setup keep-state via $eq_if
${ipfw} add allow tcp from any to $eq_ip 33900 setup keep-state via $eq_if
${ipfw} add allow tcp from any to $eq_ip 33901 setup keep-state via $eq_if
${ipfw} add allow tcp from any to $eq_ip 2222 setup keep-state via $eq_if

################ Обмен трафиком между сервером и сетью. #####################
${ipfw} add allow all from $lan_net to $lan_net via $lan_if

#Загоняем всех в шейпер и делим на всех скорость
${ipfw} pipe 1 config bw 3Mbit/s
${ipfw} queue 1 config pipe 1 mask dst-ip 0xffffffff
${ipfw} add queue 1 all from not "table(10)" to "table(1)" out

#Конфигурация NAT.
#EQ
${ipfw} nat 1 config ip $eq_ip same_ports deny_in unreg_only

#NAT для EQ
${ipfw} add allow all from "table(1)" to any in via $lan_if
${ipfw} add nat 1 all from "table(1)" to any out via $eq_if
${ipfw} add allow all from $eq_ip to any out via $eq_if
${ipfw} add nat 1 all from any to $eq_ip in via $eq_if
${ipfw} add allow all from any to "table(1)" in via $eq_if
${ipfw} add allow all from any to "table(1)" out via $lan_if

#Блок флуда виндовозников
${ipfw} 65532 add deny all from any 137, 138, 139 to any

#Всё что не папало в правила.
${ipfw} 65533 add deny log ip from any to any
gw-local# cat /etc/sysctl.conf
# $FreeBSD: src/etc/sysctl.conf,v 1.8.34.1.4.1 2010/06/14 02:09:06 kensmith Exp $
#
# This file is read when going to multi-user and its contents piped thru
# ``sysctl'' to adjust kernel values. ``man 5 sysctl.conf'' for details.
#

# Uncomment this to prevent users from seeing information about processes that
# are being run under another UID.
#security.bsd.see_other_uids=0
net.inet.ip.fw.one_pass=1

Прикол в том что когда я использую IPFW двойное прохождение правил net.inet.ip.fw.one_pass=1 пинг во внешку с любой машины идет в интернет, но самого сервера пинги не идут.... также как и с внешнки на сервер....

Я соответственно пишу правила: вставляю их в раздел "Сервер в интернет"
${ipfw} add allow icmp from any to $eq_ip via $eq_if
${ipfw} add allow icmp from $eq_ip to any via $eq_if

Тогда пинг с сервера в интернет идет, также с интернета на меня, но не кто с локалки не могужет пинговать внешние ресурсы... Пробовал писать выше этих двух правил правила skipto
${ipfw} add skipto 03800 icmp from any to $lan_net
${ipfw} add skipto 03800 icmp from $lan_net to any
до правил NAT'a... эфект тотже... Как мне так реализовать это все, чтобы с локалки могли пинговать внешку, и внешка меня, также сам сервер мог пинговать интернет.

Хостинговая компания 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/

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: IPFW + ICMP

Непрочитанное сообщение hizel » 2010-10-05 15:03:16

двойное прохождение правил net.inet.ip.fw.one_pass=1
:shock: вы невнимательно прочитали man ipfw

да и правила надо ставить между nat
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

malike
проходил мимо
Сообщения: 8
Зарегистрирован: 2009-10-04 18:04:23

Re: IPFW + ICMP

Непрочитанное сообщение malike » 2010-10-05 15:04:08

Ошибся я,
gw-local# cat /etc/sysctl.conf
# $FreeBSD: src/etc/sysctl.conf,v 1.8.34.1.4.1 2010/06/14 02:09:06 kensmith Exp $
#
# This file is read when going to multi-user and its contents piped thru
# ``sysctl'' to adjust kernel values. ``man 5 sysctl.conf'' for details.
#

# Uncomment this to prevent users from seeing information about processes that
# are being run under another UID.
#security.bsd.see_other_uids=0
net.inet.ip.fw.one_pass=0

one_pass стоит 0 ;)

Просто тестировал, с одинарым проходом и забыл переставить... а cat взял когда тестировал... про "да и правила надо ставить между nat" можно подробней и с примером.

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: IPFW + ICMP

Непрочитанное сообщение hizel » 2010-10-05 15:18:07

примеры есть в хэндбуке, если их осилите будете почти без ошибак клепать правила ;]
да и на сайте lissyara.su есть статья о nat, дикая портянка
Последний раз редактировалось hizel 2010-10-05 15:18:41, всего редактировалось 1 раз.
Причина: да и
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

malike
проходил мимо
Сообщения: 8
Зарегистрирован: 2009-10-04 18:04:23

Re: IPFW + ICMP

Непрочитанное сообщение malike » 2010-10-05 16:33:02

hizel писал(а):примеры есть в хэндбуке, если их осилите будете почти без ошибак клепать правила ;]
да и на сайте lissyara.su есть статья о nat, дикая портянка
ды есть, 1. она устарела конкретно шейпа... также фаервол с надписью any to any это дыра....
2рое если не можете что-то дельное посоветовать кроме как тыкать хэндбук, просьба не посещайте данную тему.

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: IPFW + ICMP

Непрочитанное сообщение hizel » 2010-10-05 16:38:39

то есть не тыкать в хэндбук, даже если там решение, гг, фиерия :]
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

malike
проходил мимо
Сообщения: 8
Зарегистрирован: 2009-10-04 18:04:23

Re: IPFW + ICMP

Непрочитанное сообщение malike » 2010-10-05 23:27:25

hizel писал(а):то есть не тыкать в хэндбук, даже если там решение, гг, фиерия :]
Я смотрю вы такой умный, а толком помочь не можете.
В хендбуке про подобный мой случай не чего нету... Тут теория не поможет.