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

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
vadim64
майор
Сообщения: 2098
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

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

Непрочитанное сообщение vadim64 » 2013-02-18 15:43:36

в статье терминуса net.inet.ip.fw.one_pass=0 потому что в те времена(8.1) ребята из freebsd поломали ядерный нат и net.inet.ip.fw.one_pass=1 не работал. вот зачем терминус в статье навтыкал тагов и скипов. сейчас вы можете смело ставить net.inet.ip.fw.one_pass=1(если конечно вы не используете 8.1 или другую ветку с кодом тех времен). это обьясняет пропажу трафика - пакеты проходили через все наты.
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

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

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

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

Непрочитанное сообщение vadim64 » 2013-02-18 15:46:22

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

aleksandrium
рядовой
Сообщения: 17
Зарегистрирован: 2013-02-12 21:48:30
Откуда: Saint Petersburg

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

Непрочитанное сообщение aleksandrium » 2013-02-18 16:18:43

Alvares писал(а):С одним каналом и одним НАТом проблемы те же? Что-то в листинг вкурить тяжело...
С одним ip и натом получается пример 1 статьи, и все работает.
Alvares писал(а):

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

$fw add 10601 prob 0.2 nat 1 ip from

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

$ip_out 
[/b]

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

to any out xmit $if_out0
$fw add 10602 nat 1 ip from any to $ip_out0 in recv $if_out0
если заНАТить вот так? и поработать с этим IP?
Получается конфиг:

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

$fw add 100 allow ip from any to any via lo0
$fw add 200 deny log ip from any to 127.0.0.0/8
$fw add 300 deny log ip from 127.0.0.0/8 to any

$fw add 1040 allow ip from any to any via $if_in0

$fw add 1050 deny ip from any to 192.168.0.0/16 in recv $if_out0
$fw add 1060 deny ip from 192.168.0.0/16 to any in recv $if_out0
$fw add 1070 deny ip from any to 172.16.0.0/12 in recv $if_out0
$fw add 1080 deny ip from 172.16.0.0/12 to any in recv $if_out0
$fw add 1090 deny ip from any to 10.0.0.0/8 in recv $if_out0
$fw add 10100 deny ip from 10.0.0.0/8 to any in recv $if_out0
$fw add 10110 deny ip from any to 169.254.0.0/16 in recv $if_out0
$fw add 10120 deny ip from 169.254.0.0/16 to any in recv $if_out0

$fw nat 1 config log ip $ip_out0 same_ports reset deny_in

$fw add 10601 nat 1 ip from $ip_out0 to any out xmit $if_out0
$fw add 10602 nat 1 ip from any to $ip_out0 in recv $if_out0

$fw add 65534 deny log all from any to any

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

net.inet.ip.fw.one_pass=1
кажется так пакеты не доходят до ната

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

00050    0      0 deny log logamount 256 ip from any to any not antispoof in
00100   12    720 allow ip from any to any via lo0
00200    0      0 deny log logamount 256 ip from any to 127.0.0.0/8
00300    0      0 deny log logamount 256 ip from 127.0.0.0/8 to any
01040 2510 232742 allow ip from any to any via bge1
01050    0      0 deny ip from any to 192.168.0.0/16 in recv bge0
01060    0      0 deny ip from 192.168.0.0/16 to any in recv bge0
01070    0      0 deny ip from any to 172.16.0.0/12 in recv bge0
01080    0      0 deny ip from 172.16.0.0/12 to any in recv bge0
01090    0      0 deny ip from any to 10.0.0.0/8 in recv bge0
10100    0      0 deny ip from 10.0.0.0/8 to any in recv bge0
10110    0      0 deny ip from any to 169.254.0.0/16 in recv bge0
10120    0      0 deny ip from 169.254.0.0/16 to any in recv bge0
10601    4    304 nat 1 ip from 11.22.33.44 to any out xmit bge0
10602    9    584 nat 1 ip from any to 11.22.33.44 in recv bge0
65534  329  33198 deny log logamount 256 ip from any to any
65535    0      0 deny ip from any to any
В логе сообщения вида:

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

kernel: ipfw: 65534 Deny UDP 10.1.100.10:42361 121.128.164.81:59421 in via bge1.100
vadim64 писал(а):так то, да
Спасибо, попробую с учетом этой информации.

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

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

Непрочитанное сообщение vadim64 » 2013-02-18 16:50:01

да просто верните всё как было в сообщении http://forum.lissyara.su/viewtopic.php? ... 75#p342659 и выставьте net.inet.ip.fw.one_pass=1
до завтра
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

aleksandrium
рядовой
Сообщения: 17
Зарегистрирован: 2013-02-12 21:48:30
Откуда: Saint Petersburg

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

Непрочитанное сообщение aleksandrium » 2013-02-18 17:28:41

vadim64 писал(а):да просто верните всё как было в сообщении http://forum.lissyara.su/viewtopic.php? ... 75#p342659 и выставьте net.inet.ip.fw.one_pass=1
до завтра
Вернул, теперь пиг до интернета есть, но браузер выдает "Соединение было сброшено".

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

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

Непрочитанное сообщение vadim64 » 2013-02-19 7:18:34

добрый день
если вы вернули состояние http://forum.lissyara.su/viewtopic.php? ... 75#p342659 и выставили net.inet.ip.fw.one_pass=1, то давайте посмотрим следующее

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

ipfw show
ipfw add 10101 allow ip from $ip_out0 to any out xmit $if_out0
ipfw add 10102 allow ip from $ip_out0_0  to any out xmit $if_out0
ipfw add 10103 allow ip from $ip_out0_1 to any out xmit $if_out0
ipfw add 10104 allow ip from $ip_out0_2 to any out xmit $if_out0
ipfw add 10105 allow ip from $ip_out0_3 to any out xmit $if_out0
ipfw show
боритесь с мыслями забить и сделать опять через кучу правил
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

aleksandrium
рядовой
Сообщения: 17
Зарегистрирован: 2013-02-12 21:48:30
Откуда: Saint Petersburg

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

Непрочитанное сообщение aleksandrium » 2013-02-19 9:05:12

vadim64 писал(а):боритесь с мыслями забить и сделать опять через кучу правил
А говорят что телепатов не бывает =) Здравствуйте!

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

serv# ipfw show
00050    0      0 deny log logamount 256 ip from any to any not antispoof in
00100   48   2400 allow ip from any to any via lo0
00200    0      0 deny log logamount 256 ip from any to 127.0.0.0/8
00300    0      0 deny log logamount 256 ip from 127.0.0.0/8 to any
01040 5619 443063 allow ip from any to any via bge1
01050    0      0 deny log logamount 256 ip from any to 192.168.0.0/16 in recv bge0
01060    0      0 deny log logamount 256 ip from 192.168.0.0/16 to any in recv bge0
01070    0      0 deny log logamount 256 ip from any to 172.16.0.0/12 in recv bge0
01080    0      0 deny log logamount 256 ip from 172.16.0.0/12 to any in recv bge0
01090    0      0 deny log logamount 256 ip from any to 10.0.0.0/8 in recv bge0
10100    1     56 deny log logamount 256 ip from 10.0.0.0/8 to any in recv bge0
10110    0      0 deny log logamount 256 ip from any to 169.254.0.0/16 in recv bge0
10120    0      0 deny log logamount 256 ip from 169.254.0.0/16 to any in recv bge0
10201  472  57435 prob 0.200000 nat 1 ip from any to any out xmit bge0
10202  493  59296 prob 0.250000 nat 2 ip from any to any out xmit bge0
10203  465  56590 prob 0.333000 nat 3 ip from any to any out xmit bge0
10204  522  61019 prob 0.500000 nat 4 ip from any to any out xmit bge0
10205  465  56024 nat 5 ip from any to any out xmit bge0
10301  489  98615 nat 1 ip from any to 11.22.33.44 in recv bge0
10302  348  82782 nat 2 ip from any to 11.22.33.45 in recv bge0
10303  454  89699 nat 3 ip from any to 11.22.33.46 in recv bge0
10304  394  86805 nat 4 ip from any to 11.22.33.47 in recv bge0
10305  538 103110 nat 5 ip from any to 11.22.33.48 in recv bge0
20620 4616 729949 allow ip from any to any
65534    0      0 deny log logamount 256 ip from any to any
65535    0      0 deny ip from any to any
Добавил правила 10101-10105, IMHO в них ничего не попадает:

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

serv# ipfw show
00050    0      0 deny log logamount 256 ip from any to any not antispoof in
00100   32   1600 allow ip from any to any via lo0
00200    0      0 deny log logamount 256 ip from any to 127.0.0.0/8
00300    0      0 deny log logamount 256 ip from 127.0.0.0/8 to any
01040 3378 262248 allow ip from any to any via bge1
01050    0      0 deny log logamount 256 ip from any to 192.168.0.0/16 in recv bge0
01060    0      0 deny log logamount 256 ip from 192.168.0.0/16 to any in recv bge0
01070    0      0 deny log logamount 256 ip from any to 172.16.0.0/12 in recv bge0
01080    1     56 deny log logamount 256 ip from 172.16.0.0/12 to any in recv bge0
01090    0      0 deny log logamount 256 ip from any to 10.0.0.0/8 in recv bge0
10100    2    371 deny log logamount 256 ip from 10.0.0.0/8 to any in recv bge0
10101    0      0 allow ip from 81.222.88.154 to any out xmit bge0
10102    0      0 allow ip from 81.222.88.155 to any out xmit bge0
10103    0      0 allow ip from 81.222.88.156 to any out xmit bge0
10104    0      0 allow ip from 81.222.88.157 to any out xmit bge0
10105    0      0 allow ip from 81.222.88.158 to any out xmit bge0
10110    0      0 deny log logamount 256 ip from any to 169.254.0.0/16 in recv bge0
10120    0      0 deny log logamount 256 ip from 169.254.0.0/16 to any in recv bge0
10201  439  50497 prob 0.200000 nat 1 ip from any to any out xmit bge0
10202  428  50041 prob 0.250000 nat 2 ip from any to any out xmit bge0
10203  378  43946 prob 0.333000 nat 3 ip from any to any out xmit bge0
10204  396  45391 prob 0.500000 nat 4 ip from any to any out xmit bge0
10205  432  50155 nat 5 ip from any to any out xmit bge0
10301  476  81803 nat 1 ip from any to 11.22.33.44 in recv bge0
10302  423  81367 nat 2 ip from any to 11.22.33.45 in recv bge0
10303  363  75235 nat 3 ip from any to 11.22.33.46 in recv bge0
10304  509  86397 nat 4 ip from any to 11.22.33.47 in recv bge0
10305  461  85190 nat 5 ip from any to 11.22.33.48 in recv bge0
20620 3764 570809 allow ip from any to any
65534    0      0 deny log logamount 256 ip from any to any
65535    0      0 deny ip from any to any

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

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

Непрочитанное сообщение vadim64 » 2013-02-19 9:48:39

убедитесь что в /etc/sysctl.conf не задаётся никакое значение для net.inet.ip.fw.on_pass=0
приведите скрипт ipfw к виду

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

$fw -f flush
ipfw enable one_pass

$fw add 50 deny log ip from any to any not antispoof in

$fw add 100 allow ip from any to any via lo0
$fw add 200 deny log ip from any to 127.0.0.0/8
$fw add 300 deny log ip from 127.0.0.0/8 to any

$fw add 5061 allow all from any to any via $if_in0

$fw add 9080 deny log ip from any to 192.168.0.0/16 in recv $if_out0
$fw add 9090 deny log ip from 192.168.0.0/16 to any in recv $if_out0
$fw add 9100 deny log ip from any to 172.16.0.0/12 in recv $if_out0
$fw add 9110 deny log ip from 172.16.0.0/12 to any in recv $if_out0
$fw add 9120 deny log ip from any to 10.0.0.0/8 in recv $if_out0
$fw add 9130 deny log ip from 10.0.0.0/8 to any in recv $if_out0
$fw add 9140 deny log ip from any to 169.254.0.0/16 in recv $if_out0
$fw add 9150 deny log ip from 169.254.0.0/16 to any in recv $if_out0
$fw add 9160 deny log icmp from any to 255.255.255.255 in recv $if_out0
$fw add 9170 deny log icmp from any to 255.255.255.255 out xmit $if_out0

$fw nat 1 config log ip $ip_out0 same_ports reset deny_in
$fw nat 2 config log ip $ip_out0_0 same_ports reset deny_in
$fw nat 3 config log ip $ip_out0_1 same_ports reset deny_in
$fw nat 4 config log ip $ip_out0_2 same_ports reset deny_in
$fw nat 5 config log ip $ip_out0_3 same_ports reset deny_in

$fw add 10201 prob 0.2 nat 1 ip from any to any out xmit $if_out0
$fw add 10202 prob 0.25 nat 2 ip from any to any out xmit $if_out0
$fw add 10203 prob 0.333 nat 3 ip from any to any out xmit $if_out0
$fw add 10204 prob 0.5 nat 4 ip from any to any out xmit $if_out0
$fw add 10205 prob 1 nat 5 ip from any to any out xmit $if_out0

$fw add 10301 nat 1 ip from any to $ip_out0 in recv $if_out0
$fw add 10302 nat 2 ip from any to $ip_out0_0 in recv $if_out0
$fw add 10303 nat 3 ip from any to $ip_out0_1 in recv $if_out0
$fw add 10304 nat 4 ip from any to $ip_out0_2 in recv $if_out0
$fw add 10305 nat 5 ip from any to $ip_out0_3 in recv $if_out0

#$fw add 20620 allow all from any to any

$fw add 65534 deny log all from any to any
сделайте

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

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

aleksandrium
рядовой
Сообщения: 17
Зарегистрирован: 2013-02-12 21:48:30
Откуда: Saint Petersburg

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

Непрочитанное сообщение aleksandrium » 2013-02-19 10:03:21

Сделал как Вы рекомендовали, в логе

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

serv# tail /var/log/security
Feb 19 10:57:46 serv kernel: ipfw: 65534 Deny UDP 10.1.100.10:61547 192.168.0.134:161 in via bge1.100
Feb 19 10:57:46 serv kernel: ipfw: 65534 Deny UDP 10.1.100.10:61547 192.168.0.182:161 in via bge1.100
Feb 19 10:57:46 serv kernel: ipfw: 65534 Deny UDP 10.1.100.10:53279 81.222.80.2:53 in via bge1.100
Feb 19 10:57:47 serv kernel: ipfw: 65534 Deny UDP 10.16.100.10:53279 81.222.84.2:53 in via bge1.100
Пакеты на 53 порт - это dns провайдера

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

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

Непрочитанное сообщение vadim64 » 2013-02-19 10:06:28

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

sysctl -a | grep one_pass
????
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

aleksandrium
рядовой
Сообщения: 17
Зарегистрирован: 2013-02-12 21:48:30
Откуда: Saint Petersburg

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

Непрочитанное сообщение aleksandrium » 2013-02-19 10:10:29

vadim64 писал(а):

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

sysctl -a | grep one_pass
????

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

net.inet.ip.fw.one_pass: 1

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

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

Непрочитанное сообщение vadim64 » 2013-02-19 10:15:43

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

METAJIJI
рядовой
Сообщения: 19
Зарегистрирован: 2009-09-08 21:12:05

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

Непрочитанное сообщение METAJIJI » 2013-02-19 12:13:09

Может кому-то пригодится, победил таки пример номер 3, но я обошелся одним экземпляром NAT'а, так и не понял зачем их два в примере. (честно пытался делать по примеру - ничего не заработало, пришлось думать самому :) )
У меня задача стояла так. Нужно было сделать так, чтобы:
1. Пользователи, которым нужен NAT были описаны в таблице table(1).
2. Веб сервер внутри сети с ip 192.168.1.179, был доступен по внешнему ip $EXT_IP0 как снаружи так и внутри локальной сети $localnet.

У меня получились вот такие правила:

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

localnet=192.168.0.0/16
EXT_IP0=8.8.8.8
EXT_IF=em0
LAN_IF=em1

# Описываем настройки НАТ для внешнего ip + описываем редиректы из локалки во внешнюю сеть.
nat 1 config ip $EXT_IP0 log reset same_ports \
   redirect_port tcp 192.168.1.175:5900 5900 \
   redirect_port tcp 192.168.1.179:80 80

# Отправляем весь трафик во внешний мир через сконфигурированный NAT.
add nat 1 ip from table(1) to any out { recv $LAN_IF or recv ng* } xmit $EXT_IF
add nat 1 ip from any to $EXT_IP0 in recv $EXT_IF

##### NAT LoopBack: BEGIN
# Натим локалку в сторону http сервера.
add nat 1 tcp from $localnet to 192.168.1.179 http out xmit $LAN_IF
add nat 1 tcp from $localnet to $EXT_IP0 http in recv $LAN_IF

# Натим http сервер в сторону локалки.
add nat 1 tcp from 192.168.1.179 http to $localnet out xmit $LAN_IF
add nat 1 tcp from 192.168.1.179 http to $EXT_IP0 in recv $LAN_IF
##### NAT LoopBack: END

# Squid transparent redirect
add fwd 127.0.0.1,3129 tcp from any to not 192.168.0.0/16 http via $LAN_IF

# все оставшееся разрешено
add 65000 allow all from any to any
Хотя если нужно, чтобы у всех был NAT без разбора, то все это можно просто заменить на 2 правила:

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

# Описываем настройки НАТ для внешнего ip + описываем редиректы из локалки во внешнюю сеть.
nat 1 config ip $EXT_IP0 log reset same_ports \
   redirect_port tcp 192.168.1.175:5900 5900 \
   redirect_port tcp 192.168.1.179:80 80

add nat 1 ip from any to any
Обратите внимание на последнее правило add nat 1 ip from any to any, никаких via и т.п. вещей не указывается, т.к. "натить" нужно будет, как на $EXT_IF так и на $LAN_IF, хотя можно написать 2, более конкретных правила, указав в каждом свой интерфейс, но это на любителя.

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

add nat 1 ip from any to any via $EXT_IF
add nat 1 ip from any to any via $LAN_IF

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

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

Непрочитанное сообщение vadim64 » 2013-02-19 12:41:15

vadim64 писал(а):давайте аську в личку или телефон
я сдаюсь
без тагов пакеты летят в экземпляры ната по принципу "куда аллах пашлёт"
пинги ходят ок, ибо это соединения запрос-ответ
остальные соединения - как повезёт
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

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

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

Непрочитанное сообщение vadim64 » 2013-02-19 13:10:31

METAJIJI писал(а): ##### NAT LoopBack
чуть со стула не упал
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

aleksandrium
рядовой
Сообщения: 17
Зарегистрирован: 2013-02-12 21:48:30
Откуда: Saint Petersburg

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

Непрочитанное сообщение aleksandrium » 2013-02-19 13:14:04

vadim64 писал(а): я сдаюсь
без тагов пакеты летят в экземпляры ната по принципу "куда аллах пашлёт"
пинги ходят ок, ибо это соединения запрос-ответ
остальные соединения - как повезёт
Все равно спасибо за оказанную помощь и консультации, продолжу эксперименты, о результатах сообщу =)

METAJIJI
рядовой
Сообщения: 19
Зарегистрирован: 2009-09-08 21:12:05

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

Непрочитанное сообщение METAJIJI » 2013-02-19 13:52:19

vadim64 писал(а):
METAJIJI писал(а): ##### NAT LoopBack
чуть со стула не упал
Именно такая терминология применяется у многих "вендоров" сетевого оборудования :) Еще есть SIP ALG и т.п. Это я для себя опорные слова оставил по которым гуглил :pardon:

sterid
проходил мимо
Сообщения: 1
Зарегистрирован: 2013-02-23 8:58:45

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

Непрочитанное сообщение sterid » 2013-02-23 9:21:10

приветствую всех.
Посоветуйте как правильно настроть IPFW nat + проброс портов внутрь.
Общая схема:

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

|TS_server |  <---3389----<  |de1-FreeBSD-de0| <-----3389----< |public_network 172.16.0.0/24|
|10.0.0.101|                 |  10.0.0.254   |
                             |  172.16.1.90  |
Что нужно получить:
1. доступ из вне по порту 3389
2. с внутреннего сервера нет возможности выходить в инетрнет по любым протоколам

имеются 2 интерфейса

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

de0 #external subnet (172.16.1.0/24)
de1 #internal subnet (10.0.0.0/24)
И собственно правила доступа:

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

ipfw add 50 check-state log
ipfw nat 1 config log ip 172.16.1.90 redirect_port tcp 10.0.0.101:3389 3389
ipfw add 100 nat 1 log tcp from any to me 3389 in via de0
ipfw add 101 nat 1 log tcp from any to 10.0.0.101 out via de1 keep-state
ipfw add 102 nat 1 log tcp from 10.0.0.101 3389 to any in via de1
все замечательно работает. Но мне кажется, что это не очень безопасное решение. т.к. в любой момент с хоста 10,0,0,101 и портом источника 3389 можно попасть в весь интернет (не проверял еще). подскажите более лучшую конфигурацию.

METAJIJI
рядовой
Сообщения: 19
Зарегистрирован: 2009-09-08 21:12:05

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

Непрочитанное сообщение METAJIJI » 2013-02-25 4:52:37

Все верно у вас, если запретить ходить в интернет по tcp протоколу и порту 3389, то ваш проброс работать не будет - "проброшенный сервер" не сможет ответить.

Да и найти прокси-сервер например, работающий на порту 3389 будет проблематично :) Хотя не исключен вариант с ssh тоннелем, но стоит ли оно того в конечном счете?

P.S. Более опасно держать открытый всему миру открытый RDP порт. Пробросили бы хотябы на 33890 или что-то в этом духе, главное, чтобы это был не стандартный порт, это я так к слову.

Аватара пользователя
Gamerman
капитан
Сообщения: 1715
Зарегистрирован: 2009-05-17 21:01:23
Откуда: Украина, Ужгород - Днепр
Контактная информация:

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

Непрочитанное сообщение Gamerman » 2013-02-25 11:04:17

Как пробросить порт х на порт у, на том же интерфейсе? Используя НАТ - знаю, но зачем городить огород для такой простой задачи?
Глюк глюком вышибают!

Аватара пользователя
Gamerman
капитан
Сообщения: 1715
Зарегистрирован: 2009-05-17 21:01:23
Откуда: Украина, Ужгород - Днепр
Контактная информация:

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

Непрочитанное сообщение Gamerman » 2013-02-25 11:19:11

Вспомнил:

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

 $cmd 00201 fwd $ip_ext,25 tcp from any to $ip_ext 590
 $cmd 00202 fwd $ip_int,25 tcp from any to $ip_int 590
Глюк глюком вышибают!

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

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

Непрочитанное сообщение vadim64 » 2013-02-26 6:59:45

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

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

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

Непрочитанное сообщение kshes » 2013-03-19 9:09:50

Добрый день. Имеется домашний роутер на FreeBSD 9.1-Stable
Использую связку IPFW+NAT (Первый пример в статье)
em0 смотрит к провайдеру, IP динамический.
em1 - в локалку.

One_pass в /etc/sysctl.conf имеется

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

net.inet.ip.fw.one_pass=1
/etc/rc.conf выглядит так:

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

hostname="gate"

#Configuring network interfaces
ifconfig_em0="DHCP -tso -rxcsum"
ifconfig_em1="inet 192.168.1.1 netmask 255.255.255.0"

sshd_enable="YES"       #Start ssh daemon
powerd_enable="YES"     #Start powerd daemon

# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="NO"

#Setup firewall
gateway_enable="YES"
firewall_enable="YES"
firewall_script="/etc/firewall"

#Starting DHCP-server
dhcpd_enable="YES"
dhcpd_ifaces="em1"
Скрипт с правилами файрвола (/etc/firewall)

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

#!/bin/sh

#Variables
FwCmd="/sbin/ipfw"
LanOut="em0"
LanIn="em1"
IpIn="192.168.1.1"

#Reset all entries
${FwCmd} -f flush

#Temporary rule
#add 100 allow all from any to any via em0

#Rules for lo0
${FwCmd} add 1000 allow ip from any to any via lo0
${FwCmd} add 1005 deny ip from any to 127.0.0.0/8
${FwCmd} add 1007 deny ip from 127.0.0.0/8 to any

#Enable NAT
${FwCmd} add 1009 nat 1 ip from any to any via ${LanOut}

#Allow some ICMP traffic
${FwCmd} add 1010 allow icmp from any to any icmptypes 0,8,11

#Allow all in local network
${FwCmd} add 1030 allow all from any to any in recv ${LanIn}
${FwCmd} add 1030 allow all from any to any out xmit ${LanIn}
#${FwCmd} add 1040 allow ip from ${LanIn} to any out via ${LanIn}
#${FwCmd} add 1040 allow ip from ${LanIn} to any out via ${LanIn}

#Disable private LAN on LanOut
${FwCmd} add 1050 deny log ip from any to 192.168.0.0/16 in recv ${LanOut}
${FwCmd} add 1060 deny log ip from 192.168.0.0/16 to any in recv ${LanOut}
${FwCmd} add 1070 deny log ip from any to 172.16.0.0/12 in recv ${LanOut}
${FwCmd} add 1080 deny log ip from 172.16.0.0/12 to any in recv ${LanOut}
${FwCmd} add 1090 deny log ip from any to 10.0.0.0/8 in recv ${LanOut}
${FwCmd} add 1100 deny log ip from 10.0.0.0/8 to any in recv ${LanOut}
${FwCmd} add 1110 deny log ip from any to 169.254.0.0/16 in recv ${LanOut}
${FwCmd} add 1120 deny log ip from 169.254.0.0/16 to any in recv ${LanOut}

#Deny broadcast
${FwCmd} add 1200 deny log icmp from any to 255.255.255.255 in recv ${LanOut}
${FwCmd} add 1210 deny log icmp from 255.255.255.255 to any out xmit ${LanOut}

#Allow SSH in local network
#${FwCmd} add 2010 allow tcp from any to any 22 in recv ${LanIn} #setup

#NAT rules
${FwCmd} nat 1 config log if ${LanOut} reset same_ports deny_in redirect_port tcp 192.168.1.10:51413 51314 redirect_port udp 192.168.1.10:51413 51413

#deny all other
${FwCmd} add 10140 deny log ip from any to any
На em1 работает dhcpd, но 192.168.1.10 зафиксирован по MAC, фиксированный и динамический диапазоны не пересекаются. При указанных настройках интернет работает, а вот порт, проброшенный на NAS, снаружи закрыт.
Помогите найти причину.

METAJIJI
рядовой
Сообщения: 19
Зарегистрирован: 2009-09-08 21:12:05

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

Непрочитанное сообщение METAJIJI » 2013-03-28 9:08:18

В конфиге nat'а, уберите опцию deny_in и все у вас заработает.

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

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

Непрочитанное сообщение kshes » 2013-04-01 11:48:02

Да, удаление deny_in помогло, но тут же открылся 22-й порт наружу, пришлось заставить его принудительно слушать только внутренний интерфейс. Искренне считал, что deny_in запрещает все, кроме перечисленного в redirect_port.