Страница 1 из 1

IPFW не работает NAT

Добавлено: 2014-10-08 14:11:14
birds
rc.conf

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

hostname="Aurora"
ifconfig_em0="*локальный айпи*"
ifconfig_em1="*внешний айпи*"
defaultrouter="*ip*"
sshd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"
gateway_enable="YES"

sendmail_enable="NONE"
sendmail_submit_enable="NONE"
sendmail_outbound_enable="NONE"
sendmail_msp_enable="NONE"

firewall_enable="YES"
firewall_nat_enable="YES"
firewall_nat_interface="em1"
firewall_logging="YES"
firewall_script="/etc/ipfw"

squid_enable="YES"
IPFW

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

ipfw -q flush
local="192.168.10.0/24, 10.1.1.0/24, 192.168.0.0/24"

ipfw add allow tcp from me to any out via em1 keep-state uid squid # разрешить машине ходить через squid

ipfw add allow ip4 from any 80 to any out     # набор для теста
ipfw add allow ip4 from any 80 to any in
ipfw add allow ip4 from any to any 80 out
ipfw add allow ip4 from any to any 80 in

ipfw add fwd 127.0.0.1,3128 ip4 from $local to any 80,443 out via em1 # Заворачивание на squid

ipfw nat 1 config log if em1 reset same_ports \ #Сам нат
        redirect_port tcp 192.168.10.8:80 80
ipfw add nat 1 log ip4 from any to any via em1

ipfw add allow ip from any to any via lo0
ipfw add deny ip from 127.0.0.1/24 to any
ipfw add deny ip from any to 127.0.0.1/24
ipfw add allow icmp from any to any
ipfw add allow ip4 from any to any via em0

ipfw add deny log all from any to any

Что не так? Почему не работает?

Re: IPFW не работает NAT

Добавлено: 2014-10-08 14:22:39
birds
Если быть точным - не работает проброс портов

Re: IPFW не работает NAT

Добавлено: 2014-10-08 15:26:05
birds
Не работает даже с таким конфигом (rc.conf без изменений)

ipfw

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

ipfw -q flush
ipfw nat 1 config log if em1 reset same_ports \
        redirect_port tcp 192.168.10.8:80 80 \
        redirect_port tcp site2.domain.local:80 3333
ipfw add nat 1 log ip4 from any to any via em1

ipfw add allow all from any to any via em0 in
ipfw add allow all from any to any via em0 out
ipfw add allow all from any to any via em1 in
ipfw add allow all from any to any via em1 out


ipfw add deny log all from any to any

Re: IPFW не работает NAT

Добавлено: 2014-10-08 21:18:26
InventoR
Попробуйте не использовать проброс портов, если он не работает.

Re: IPFW не работает NAT

Добавлено: 2014-10-09 9:40:57
birds
А что можно использовать вместо проброса для публикации локальных ресурсов?
И ещё вопрос - каким образом можно осуществить редирект входящего трафика извне на локальные сервера по хидерам?
(например существует сервер-шлюз 1.1.1.1(внешний айпи), на нем висят домены test.mydomain.ru, testquest.mydomain.ru, testquestnest.mydomain.ru, и при вводе адреса в адресную строку запрос попадает на шлюз и там определяется локальный айпи адрес , на который должен попасть пользователь. Тоесть грубо говоря публикация локальных ресурсов, только не по портам а по хидерам)

Re: IPFW не работает NAT

Добавлено: 2014-10-09 14:05:53
InventoR
birds писал(а):А что можно использовать вместо проброса для публикации локальных ресурсов?
Могу порекомендовать использовать nat который будет работать.


nginx c прокси для сайтов.

Re: IPFW не работает NAT

Добавлено: 2014-10-12 9:42:37
Гость
Поднять версию FreeBSD до современного stable, использовать tcpdump на разных интерфейсах при выполнении тестов.

Re: IPFW не работает NAT

Добавлено: 2014-10-13 9:19:30
birds
Гость писал(а):Поднять версию FreeBSD до современного stable, использовать tcpdump на разных интерфейсах при выполнении тестов.
юзаю последнюю версию freebsd
tcpdump'ом отдебажить не вышло

Re: IPFW не работает NAT

Добавлено: 2014-10-14 10:33:31
Гость
Не запустился чтоль?

Re: IPFW не работает NAT

Добавлено: 2014-10-14 13:41:14
birds
Запустился, ничего странного уловить не получилось.
Как оказалось дело в клиентах - основным был прописан старый шлюз
Из практики программиста - в мега сложных вопросах решение всегда оказывается подобным или ещё банальнее.

Re: IPFW не работает NAT

Добавлено: 2014-10-14 14:22:06
Гость
ловить так:
на внешнем интерфейсе
tcpdump -pni em1 host <внешний тестовый ip> and port <пробрасываемый порт>

на внутреннем интерфейсе
tcpdump -pni em0 host <внешний тестовый ip>
по отсутствию ответных пакетов на внутреннем интерфейсе признать виновным внутренний сервис.

Re: IPFW не работает NAT

Добавлено: 2014-10-14 17:09:49
InventoR
А как запустить одновременно два tcpdump :)

Re: IPFW не работает NAT

Добавлено: 2014-10-15 13:12:17
DocenT
InventoR писал(а):А как запустить одновременно два tcpdump :)
на двух разных консолях не прокатит?

Re: IPFW не работает NAT

Добавлено: 2015-01-19 8:17:21
j001n
привет всем. не буду плодить тему она актуальна. не работает NAT. причина такова , что пришлось разносить провайдеров и теперь они находятся на одном vlan (внутри 2е подсети). простой заменой интерфейсов IF на IP в настройках IPFW не приводит к результату. NATится только 1 провайдер.
задача такая : занатить на 2го провайдера несколько машин из локалки.

в наличии 8.1-RELEASE, 1 - сетевая , 2 - провайдера + корпоративная сеть.
что есть :

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

#пустить через второго провайдера
${ipfw} table 10 add 192.168.0.100

setfib -F0 route add default ${gw1}
setfib -F1 route add default ${gw2}


${ipfw} add setfib 1 all from table\(10\) to any in

###NAT-1

${ipfw} nat 1 config log ip ${nat1} deny_in same_ports \
redirect_port tcp ${mail}:25 25 


#${ipfw} add nat 1 ip from 192.168.0.0/24 to not table\(10\) out via ${LanOut}
${ipfw} add nat 1 ip from any to any out via ${LanOut}
${ipfw} add nat 1 ip from any to ${nat1} in via ${LanOut}


###NAT-2
${ipfw} nat 2 config log ip ${nat2} deny_in same_ports \
redirect_port tcp ${mail}:25 25

#${ipfw} add nat 2 ip from table\(10\) to any out via ${LanOut}
${ipfw} add nat 2 ip from any to ${nat2} in via ${LanOut}
:-D

Re: IPFW не работает NAT

Добавлено: 2015-01-19 14:04:35
mzroot
j001n писал(а):привет всем. не буду плодить тему она актуальна. не работает NAT. причина такова , что пришлось разносить провайдеров и теперь они находятся на одном vlan (внутри 2е подсети). простой заменой интерфейсов IF на IP в настройках IPFW не приводит к результату. NATится только 1 провайдер.
задача такая : занатить на 2го провайдера несколько машин из локалки.

в наличии 8.1-RELEASE, 1 - сетевая , 2 - провайдера + корпоративная сеть.
что есть :

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

#пустить через второго провайдера
${ipfw} table 10 add 192.168.0.100

setfib -F0 route add default ${gw1}
setfib -F1 route add default ${gw2}


${ipfw} add setfib 1 all from table\(10\) to any in

###NAT-1

${ipfw} nat 1 config log ip ${nat1} deny_in same_ports \
redirect_port tcp ${mail}:25 25 


#${ipfw} add nat 1 ip from 192.168.0.0/24 to not table\(10\) out via ${LanOut}
${ipfw} add nat 1 ip from any to any out via ${LanOut}
${ipfw} add nat 1 ip from any to ${nat1} in via ${LanOut}


###NAT-2
${ipfw} nat 2 config log ip ${nat2} deny_in same_ports \
redirect_port tcp ${mail}:25 25

#${ipfw} add nat 2 ip from table\(10\) to any out via ${LanOut}
${ipfw} add nat 2 ip from any to ${nat2} in via ${LanOut}
:-D
Не читали вот это http://birdofluck.livejournal.com/8778.html ?

IPFW не работает NAT

Добавлено: 2015-01-19 17:10:24
j001n
тебя удивит если я скажу, что в некоторых недалеких(во всех смыслах) странах ЖЖ находится под запретом.
изложи вкратце, что в статье :roll:

IPFW не работает NAT

Добавлено: 2015-01-19 19:39:27
mzroot
j001n писал(а):тебя удивит если я скажу, что в некоторых недалеких(во всех смыслах) странах ЖЖ находится под запретом.
изложи вкратце, что в статье :roll:
Нет, не удивит. А разве в некоторых странах нет "обходных решений" для таких ситуаций?

Излагать вкратце не буду, приаттачу pdf'ку со статьей.

IPFW не работает NAT

Добавлено: 2015-06-02 23:41:51
sergio
ipfw nat 1 config log if em1 reset same_ports \
redirect_port tcp 192.168.10.8:80 80 \
redirect_port tcp site2.domain.local:80 3333
пишите в одну строку без переносов. С "\" в конце строки оно не работает....

IPFW не работает NAT

Добавлено: 2015-06-03 0:36:34
mzroot
sergio писал(а):
ipfw nat 1 config log if em1 reset same_ports \
redirect_port tcp 192.168.10.8:80 80 \
redirect_port tcp site2.domain.local:80 3333
пишите в одну строку без переносов. С "\" в конце строки оно не работает....
Хм, странно с чего бы это. У меня с "\" всё прекрасно работает.