LINUX.ORG.RU
ФорумAdmin

IPFW + ядерный нат

 , , ,


0

1

Приветствую форумчане!
Прошу помощи не могу никак сделать редирект из сети 192.168.2.0 в интернет при этом из сети 192.168.1.0 редиректица в интернет.

Есть freebsd 12 c компилиным ядром:

options IPFIREWALL
options IPFIREWALL_NAT
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=40
options LIBALIAS
options DUMMYNET
options ROUTETABLES=4

Есть провайдер с 5 белыми адресами 1.1.1.1,2,3,4,5

Есть две локалки 192.168.1.0\24 192.168.2.1\24
Вот в первой локалке пользователи во второй некоторые сервисы.
Сделал пока alias для порта смотрящего в интернет.

Internet  
ifconfig_em0="inet 1.1.1.1 netmask 255.255.255.248"  
Alias internet ftp  
ifconfig_em0_alias0="inet 1.1.2.1 netmask 255.255.255.255"  
Local Network  
ifconfig_em1="inet 192.168.1.10 netmask 255.255.255.0"  
DMZ  
ifconfig_em2="inet 192.168.2.10 netmask 255.255.255.0"  

Сами правила IPFW

#!/bin/sh  

reset rules  
ipfw -q -f flush  

-------main network-------

macro  
net="em0"  
lan="em1"  
dmz="em2"  
cmd="ipfw -q add"  
skip="skipto 2000"  

kernel nat 1 config  
ipfw -q nat 1 config if $net same_ports unreg_only \  
redirect_port tcp 192.168.2.31:21 21 \  
redirect_port tcp 192.168.2.31:20 20 \  
redirect_port tcp 192.168.2.31:30000-31000 30000-31000 \  
redirect_port tcp 192.168.1.58:443 443 \  
redirect_port tcp 192.168.2.60:25 25  

-------rules network ------- 

allow networks  
$cmd 0001 allow all from any to any via $lan  
$cmd 0002 allow all from any to any via $dmz  
$cmd 0004 allow all from any to any via lo0  

kernel nat 1 in  
$cmd 0040 nat 1 ip from any to any in via $net  

dinamic rules  
$cmd 0050 check-state  

-------out network------- 
 
allow trafic from gate out  
$cmd 0060 $skip tcp from any to any out via $net setup keep-state  
$cmd 0061 $skip udp from any to any out via $net keep-state  
$cmd 0062 $skip icmp from any to any out via $net keep-state  

exchange trafic out  
$cmd 0070 $skip tcp from 192.168.1.58 443 to any  
$cmd 0071 $skip tcp from 192.168.2.60 25 to any  

dmz ftp trafic out  
$cmd 0072 $skip tcp from 192.168.2.31 20,21,30000-31000 to any  

-------in network-------
  
exchange trafic in  
$cmd 0130 allow tcp from any to 192.168.1.58 443  
$cmd 0131 allow tcp from any to 192.168.2.60 25  

dmz ftp trafic in  
$cmd 0130 allow tcp from any to 192.168.2.31 20,21,30000-31000  

-------end network------- 
  
deny all  
$cmd 0500 deny log all from any to any in via $net  
$cmd 0510 deny log all from any to any out via $net  

kernel nat 1 out  
$cmd 2000 nat 1 ip from any to any out via $net  
$cmd 3000 allow ip from any to any  

deny all other  
$cmd 4000 deny log all from any to any  

Прохождение пакетов net.inet.ip.fw.one_pass=1

Можно ли прокинуть ftp и edge на белые адреса из сети 192.168.2.0 таким способом:

redirect_address 192.168.2.31 1.1.1.2

redirect_address 192.168.2.60 1.1.1.3

Ответ на: комментарий от mord0d

Или же как вариант подкинуть еще одну сетевую карту к примеру $net2 em3 завести на нее адрес 1.1.1.2 и поднять еще один nat и все из сети 192.168.2.0 пропускать через него.

Я как понимаю так:

в rc.conf
Internet 2  
ifconfig_em3="inet 192.168.2.10 netmask 255.255.255.0"  

Сами правила
ipfw -q nat 2 config if $net same_ports unreg_only \  
redirect_port tcp 192.168.2.31:21 21 \  
redirect_port tcp 192.168.2.31:20 20 \  
redirect_port tcp 192.168.2.31:30000-31000 30000-31000 \
redirect_port tcp 192.168.2.60:25 25  

kernel nat 1 out  
$cmd 2000 nat 2 ip from 192.168.2.0/24 to any out via $net2  
$cmd 3000 allow ip from any to any 

kernel nat 1 in  
$cmd 0040 nat 2 ip from any to 192.168.2.0/24 in via $net2
 
deny all other  
$cmd 4000 deny log all from any to any  
devdet ()

Что за «options IPFIREWALL_NAT»?
Ты в handbook смотрел?

options IPDIVERT
This enables the use of NAT functionality.


И это?
In addition to the normal IPFW options in /etc/rc.conf, the following are needed.

natd_enable=«YES» # Enable NATD function
natd_interface=«rl0» # interface name of public Internet NIC
natd_flags="-dynamic -m" # -m = preserve port numbers if possible

https://docs.freebsd.org/doc/6.0-RELEASE/usr/share/doc/handbook/firewalls-ipf...

zgen ★★★★★ ()
Последнее исправление: zgen (всего исправлений: 1)
Ответ на: комментарий от zgen

options IPFIREWALL_NAT: насколько я знаю это включение базовых функций NAT, а options LIBALIAS для включения полной поддержки NAT.
options IPDIVERT насколько я знаю используется для трансляции адресов и используется для демона natd, но не для ядерного NAT насколько я знаю.
Если я не прав поправьте меня пожалуйста.

Брал отсюда
https://docs.freebsd.org/en/books/handbook/firewalls/#firewalls-ipfw
Пункт 31.4.6. IPFW Kernel Options

devdet ()

redirect_address 192.168.2.31 1.1.1.2

Я не понял, зачем?

Все пакеты пришедшие на 192.168.2.31 отправлять на 1.1.1.2?

system-root ★★★★★ ()
Ответ на: комментарий от system-root

Не совсем это нужно
Нужно чтобы порты были выкинуты наружу из сети 192.168.2.0\24
redirect_port tcp 192.168.2.31:21 21 \
redirect_port tcp 192.168.2.31:20 20 \
redirect_port tcp 192.168.2.31:30000-31000 30000-31000 \
redirect_port tcp 192.168.2.60:25 25
Грубо говоря 192.168.2.0\24 это дмз

devdet ()
Ответ на: комментарий от devdet

мм, написано «it is necessary to disable», какие-то слова непонятные?

anonymous ()
Ответ на: комментарий от devdet

Это я по ошибке на старую доку смотрел

zgen ★★★★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.