Подробное руководство по ipfw nat

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

Хостинговая компания 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/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
NickSmith
ефрейтор
Сообщения: 56
Зарегистрирован: 2008-08-10 15:08:47

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение NickSmith » 2011-05-27 16:03:15

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

em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC>
        ether 70:71:bc:cd:1d:14
        inet 1.5.8.4 netmask 0xfffffffc broadcast 1.5.8.5
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
        ether f0:7d:68:c8:aa:cc
        inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
        inet 1.5.8.05 netmask 0xfffffff8 broadcast 1.5.8.11
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active

Я проблвал RXCSUM,TXCSUM отключать пока разбирался, все вроде работало и с ним и без них..
а почему у меня при net.inet.ip.fw.one_pass=0 в sysctl.conf все равно net.inet.ip.fw.one_pass=1???

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение vadim64 » 2011-05-27 18:59:45

оффтоп:
адреса как то через жопу прокинуты помоему
на мой взягляд вланами нада было
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Аватара пользователя
NickSmith
ефрейтор
Сообщения: 56
Зарегистрирован: 2008-08-10 15:08:47

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение NickSmith » 2011-05-27 19:36:19

vadim64 писал(а):оффтоп:
адреса как то через жопу прокинуты помоему
на мой взягляд вланами нада было
В варианте с natd у меня они работали без всяких пробросов.
Их маршрутизит провайдер.
когда я сделал ядерный нат, то это работать перестало и это правило первое
, что пришло в голову. Т.к. это все делалось по живому, и когда народ в сети сидит, то особо не до экспериментов.
Заработало и хорошо. Со времен разберусь, как это сделать изящней..

Лучше подскажите как мне мою задачу решить и почему оно не работает как надо???

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение vadim64 » 2011-05-28 17:49:33

я хз, не имею опыта работы с шейперами, терминуса или ещё кого нить просите
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-06-07 18:50:16

Вот какой обнаружился косяк.
В файле /usr/local/etc/ipfw.rules пишу

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

${fwcmd} add allow ip from ${MyLan} to table\(1\) in via ${if_in}
${fwcmd} add allow ip from table\(1\) to ${MyLan} out via ${if_in}
Даю команду

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

ipfw table 1 add 10.29.61.0/24 {20-254}
Всё работает. До перезагрузки. После перезагрузки таблица оказывается пустой. В чём тут дело?

mak_v_
проходил мимо

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение mak_v_ » 2011-06-07 22:15:16

фаервол стартует до поднятия многих сервисов. возможно у вас поднимаются какие-то динамические интерфейсы (GIF tun ppp vlan) . вариантов рещения в таком случае несколько:
1) require before опции в стартовых скриптах фаервола и сервисов,создающих интерфейсы
2) up down скрипты их же
3) рестарт фаервола руками/кроном

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение vadim64 » 2011-06-08 6:23:34

slb51 писал(а):Вот какой обнаружился косяк.
В файле /usr/local/etc/ipfw.rules пишу

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

${fwcmd} add allow ip from ${MyLan} to table\(1\) in via ${if_in}
${fwcmd} add allow ip from table\(1\) to ${MyLan} out via ${if_in}
Даю команду

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

ipfw table 1 add 10.29.61.0/24 {20-254}
Всё работает. До перезагрузки. После перезагрузки таблица оказывается пустой. В чём тут дело?
после рестарта таблицы, как и правила, нужно по новой вводить. правила у вас вводит ваш /usr/local/etc/ipfw.rules, а кто таблицу наполнять будет? ;-)
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-06-08 12:23:26

Так что, ipfw table 1 add 10.29.61.0/24 {20-254} тоже надо в скрипте прописывать? Типа:
${fwcmd} table 1 add 10.29.61.0/24 {20-254}
Кстати после ipfw restart таблицы не очищаются, только при перезагрузке сервера.

mak_v_
проходил мимо

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение mak_v_ » 2011-06-08 12:27:06

Конечно, а каким макаром у вас таблица заполнится? Вообще-то предполагалось что эта команда уже есть в скрипте
з.ы. - очистить все записи таблицы можно

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

ipfw table 1 flush
, что собсвенно обычно помещают в самое начало скрипта

Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-06-08 14:03:41

В самом начале написано просто

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

${fwcmd} flush -f
. А таблицы первоначально заполнял вручную. А главное, что в дальнейшем нужно будет довольно часто редактировать таблицы. Удобнее делать это вручную. Хотя бы потому, что при этом не надо править скрипт и перезапускать IPFW. Есть ли способ добиться, чтобы таблицы не очищались при перезагрузке сервера?

mak_v_
проходил мимо

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение mak_v_ » 2011-06-08 14:12:42

есть - сохранять их состояние в файл, а потом его подгружать

Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-06-08 17:03:02

есть - сохранять их состояние в файл, а потом его подгружать
Если не затруднит, опишите как это сделать.

mak_v_
проходил мимо

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение mak_v_ » 2011-06-08 17:14:06

1) Стартуем правила фаервола
2) наполняем таблицы

В вашем случае вы хотите в 2 шага, соответственно:

напишите в самом конце запуска скрипта фаервола (тот что с правилами) строку с наполнением таблиц, например на sh:

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

exec /usr/local/etc/table_add.sh
, не забыв дать права на исполнение скрипту по наполнению таблиц.

где
table_add.sh имеет приблизительно такой вид:

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

#!/bin/sh -
fwcmd=/sbin/ipfw
${fwcmd} table 1 flush
${fwcmd} table 1 add 10.29.61.0/24 {20-254}
Где-то так

Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-06-08 17:57:39

Это понятно. Я спрашиваю о том, как подгрузить ипишники из текстового файла.

mak_v_
проходил мимо

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение mak_v_ » 2011-06-08 18:01:57

Ну вы блин злодей, делайте в скрипте перебор строк в своём файле, если вам это так надо, юзайте awk и/или grep, скрипты за вас писать никто не будет.

Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-06-09 7:33:04

скрипты за вас писать никто не будет
Жалко! а хотелось бы.

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение vadim64 » 2011-06-09 16:50:05

хотите договориться - в раздел "Работа" :smile:
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-06-10 14:55:09

Вот делюсь, если кому надо:
Создаём текстовый файл, (например, /etc/block7.txt),
ee /etc/block7.txt
и набиваем его IP-шниками
192.168.1.1
192.168.1.2
...........
ну и т.д.
В файл /usr/local/etc/ipfw.rules вставляем:
${fwcmd} table 7 flush
cat /etc/block7.txt | while read ip; do
# echo ${fwcmd} table 7 add $ip 1
${fwcmd} table 7 add $ip 1
done
${fwcmd} add allow ip from table\(7\) to any in via ${if_in}
${fwcmd} add allow ip from any to table\(7\) out via ${if_in}
Перезапускаем firewall:
etc/rc.d/ipfw restart
или даже перезагружаем сервер и пользуемся возможностью просто менять содержимое текстового файла.

Аватара пользователя
slb51
мл. сержант
Сообщения: 126
Зарегистрирован: 2009-10-27 12:04:47
Откуда: Нижний Новгород

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение slb51 » 2011-06-11 8:27:43

Плохо в этом варианте вот что. При создании таблиц и изменении их содержимого вручную ничего дополнительно предпринимать не надо. Как только написал "ipfw table 1 add 192.168.1.1, так сразу и применилось к этому аипишнику то, что предусмотрено правилами ipfw для этой таблицы. А при использовании скрипта для того, чтобы вступили в силу изменения, внесённые в текстовый файл, надо перезапустить ipfw. Можно, конечно, и при использовании скрипта добавлять и удалять аипишники вручную прямо в таблице всё той же командой, однак при перезагрузке сервера такие изменения будут потеряны.

pom
рядовой
Сообщения: 14
Зарегистрирован: 2010-12-31 15:08:44

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение pom » 2011-07-05 14:50:02

Помогите разобраться с редиректом портов.
Делал все по примеру, все работает, кроме части редиректов.

FreeBSD 8.1-RELEASE
ядро пересобрано с
options IPFIREWALL_NAT
options LIBALIAS

# sysctl net.inet.ip.fw.one_pass
net.inet.ip.fw.one_pass: 1

# cat /etc/rc.conf | grep firewall
firewall_enable="YES"
firewall_script="/etc/firewall.conf"
firewall_quiet="YES"
firewall_logging="YES"
firewall_nat_enable="YES"
firewall_nat_interface="ng0"

ifconfig

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

rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether 00:02:44:ad:a3:b3
        inet 192.168.20.250 netmask 0xffffff00 broadcast 192.168.20.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
nfe0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=80008<VLAN_MTU,LINKSTATE>
        ether 00:18:f3:e2:55:6a
        inet 192.168.1.250 netmask 0xffffff00 broadcast 192.168.1.255
        media: Ethernet autoselect (100baseTX <full-duplex,flag0,flag1>)
        status: active
plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> metric 0 mtu 1500
ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet 127.0.0.1 netmask 0xff000000

ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1412
        inet 82.207.xxx.xxx --> 195.5.xxx.xxx netmask 0xffffffff

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

# ipfw list
00010 allow ip from any to any via lo0
00020 deny ip from any to 127.0.0.0/8
00030 deny ip from 127.0.0.0/8 to any
00090 allow ip from any to any via nfe0
00095 allow ip from any to any via rl1
00100 deny ip from any to 0.0.0.0/8 via ng0
00110 deny ip from any to 169.254.0.0/16 via ng0
00120 deny ip from any to 192.0.2.0/24 via ng0
00130 deny ip from any to 224.0.0.0/4 via ng0
00140 deny ip from any to 240.0.0.0/4 via ng0
00260 skipto 300 ip from 193.108.xxx.xxx 25 to 192.168.1.0/24
00270 skipto 300 ip from 192.168.1.0/24 to 193.108.xxx.xxx dst-port 25
00280 deny ip from any to any dst-port 25,135-139,445
00300 deny ip from any to me dst-port 2601,2605
00310 allow ip from any to me dst-port 20,21,80,222,53,123 via ng0
00320 allow icmp from any to me
00370 skipto 2000 ip from any 21,80,443,110,465,995,5190-5193,3389,4398,3128,2121,53,123,7777,9704,1723,45000-50000 to 192.168.1.0/24 via ng0
00390 deny ip from any to 192.168.1.0/24 via ng0
02000 fwd 192.168.1.250,3128 tcp from 192.168.1.0/24 to any dst-port 80 out via ng0
02100 skipto 10000 ip from 192.168.1.0/24 to 193.108.xxx.xxx dst-port 21
02200 fwd 192.168.1.250,2121 tcp from 192.168.1.0/24 to any dst-port 21 out via ng0
10000 nat 1 ip from any to any via ng0
10100 allow ip from any to any
10500 allow tcp from any to me dst-port 1723
10600 allow gre from any to any
65535 allow ip from any to any

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

# ipfw nat show config
ipfw nat 1 config if ng0 log deny_in same_ports reset redirect_port tcp 192.168.1.2:3389 3390 redirect_port tcp 192.168.20.3:3389 3392 redirect_port tcp 192.168.20.14:7777 7777 redirect_port tcp 192.168.20.3:9704 9704 redirect_port tcp 192.168.20.10:3389 3395 redirect_port tcp 192.168.20.14:3389 3399
так же был вариант

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

# ipfw nat show config
ipfw nat 1 config ip 82.207.xxx.xxx log deny_in same_ports reset redirect_port tcp 192.168.1.2:3389 3390 redirect_port tcp 192.168.20.3:3389 3392 redirect_port tcp 192.168.20.14:7777 7777 redirect_port tcp 192.168.20.3:9704 9704 redirect_port tcp 192.168.20.10:3389 3395 redirect_port tcp 192.168.20.14:3389 3399
По итогам, интернет у юзеров работает, однако проброс портов работает только на адреса в сети 192.168.20.0/24, redirect_port tcp 192.168.1.2:3389 3390 и другие в 192.168.1.0/24 не работают. tcpdump на внешнем интерфейсе показывает приход без ответа. Помогите найти ошибку.

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение vadim64 » 2011-07-05 18:47:46

а tcpdump на внутреннем?
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

pom
рядовой
Сообщения: 14
Зарегистрирован: 2010-12-31 15:08:44

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение pom » 2011-07-06 10:01:06

На внутреннем тоже самое, только туда, без ответа. В тоже время если просто с сервера телнетом открыть порт на пробрасываемый адрес то все открывается, ответ есть.

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: Подробное руководство по ipfw nat

Непрочитанное сообщение vadim64 » 2011-07-06 11:52:53

на машинах ваш шлюз указан как шлюз по умолчанию?
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.