The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"FreeBSD не работает NAT"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"FreeBSD не работает NAT"  +/
Сообщение от noris on 18-Янв-15, 13:15 
Добрый день коллеги Решил настроить на шлюзе с FreeBSD NAT интересует именно ядерный NAT но нат работать не хочет ТЕСТОВАЯ СИСТЕМА
LAN 192.168.5.0 em1
WAN 192.168.35.0 em0
Настраивал http://www.lissyara.su/articles/freebsd/tuning/ipfw_nat/ Пример1

Не работает NAT
Не работает перенаправление портов

ОС FreeBSD 8.4 x64 Ядро пересобрано с опциями

/usr/src/sys/amd64/conf/ROUTER

options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=50
options IPFIREWALL_NAT
options LIBALIAS
options IPFIREWALL_FORWARD
options IPDIVERT
options ROUTETABLES=2
options DUMMYNET
options HZ=«1000»

Добавил в /etc/sysctl.conf

ee /etc/sysctl.conf

net.inet.ip.fw.one_pass=1

Добавил в /etc/rc.conf

#ee /etc/rc.conf

defaultrouter=«192.168.35.1»
hostname=«NAT»
ifconfig_em0=«inet 192.168.35.20 netmask 255.255.255.0»
ifconfig_em1=«inet 192.168.5.5 netmask 255.255.255.0»
gateway_enable=«YES»
keymap=«ru.koi8-r»
sshd_enable=«YES»
firewall_enable=«YES»
firewall_nat_enable=«YES»
firewall_type=«/etc/firewall»

создал файл /etc/firewall
сделал chmod +x fireall

ee firewall

#!/bin/sh

# правила разрешающие трафик через локальный интерфейс lo0
# будут добавляться автоматически сами при старте фаервола
# 100 allow ip from any to any via lo0
# 200 deny ip from any to 127.0.0.0/8
# 300 deny ip from 127.0.0.0/8 to any

# разрешаем все через интерфейс локальной сети

ipfw add 1040 allow ip from any to any via em1

# боимся непонятного
ipfw add 1050 deny ip from any to 192.168.0.0/16 in recv em0
ipfw add 1060 deny ip from 192.168.0.0/16 to any in recv em0
ipfw add 1070 deny ip from any to 172.16.0.0/12 in recv em0
ipfw add 1080 deny ip from 172.16.0.0/12 to any in recv em0
ipfw add 1090 deny ip from any to 10.0.0.0/8 in recv em0
ipfw add 10100 deny ip from 10.0.0.0/8 to any in recv em0
ipfw add 10110 deny ip from any to 169.254.0.0/16 in recv em0
ipfw add 10120 deny ip from 169.254.0.0/16 to any in recv em0

# настройка ната
# опции переноса строк «\» надо убрать все должно быть в одну строчку
# опции redirect_port приведены для примера - как делать «проброс портов»
nat 1 config log if em0 reset same_ports deny_in
redirect_port tcp 192.168.5.2:3389 3389
redirect_port udp 192.168.5.3:4444 4444
redirect_port tcp 192.168.5.4:25 25

# заварачиваем все что проходит через внешний интерфейс в нат

ipfw add 10130 nat 1 ip from any to any via em0 #
боимся непонятного
ipfw add 65534 deny all from any to any

когда я пытаюсь запустить скрипт не все правила отрабатывают и соответственно не работает NAT не работает проброс портов

root@NAT:/etc # ./firewall
add: not found 01050 deny ip from any to 192.168.0.0/16 in recv em0
01060 deny ip from 192.168.0.0/16 to any in recv em0
01070 deny ip from any to 172.16.0.0/12 in recv em0
01080 deny ip from 172.16.0.0/12 to any in recv em0
01090 deny ip from any to 10.0.0.0/8 in recv em0
10100 deny ip from 10.0.0.0/8 to any in recv em0
10110 deny ip from any to 169.254.0.0/16 in recv em0
10120 deny ip from 169.254.0.0/16 to any in recv em0
nat: not found
redirect_port: not found
redirect_port: not found
redirect_port: not found
10130 nat 1 ip from any to any via em0 65534 deny ip from any to any

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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "FreeBSD не работает NAT"  +1 +/
Сообщение от PavelR (??) on 18-Янв-15, 14:05 
>[оверквотинг удален]
> работает NAT не работает проброс портов
> root@NAT:/etc # ./firewall
> add: not found 01050 deny ip from any to 192.168.0.0/16 in recv
> nat: not found
> redirect_port: not found
> redirect_port: not found
> redirect_port: not found
> 10130 nat 1 ip from any to any via em0 65534 deny
> ip from any to any
> Помогите разобраться в чем проблема где я допустил ошибку

1) Вы делаете не по статье. Вы взяли и сделали из /etc/firewall скрипт. Приведенное вами содержимое файла не совпадает с тем, что приведено в статье. При этом вы не знаете, что с этим делать дальше. Вы либо по статье делайте, либо уж говорите о том, чего поняли и что начали делать самостоятельно.

В статье

firewall_enable="YES"
firewall_type="/etc/firewall"

прописаны в rc.conf не просто так.


2) Догадавшись, что как скрипт /etc/firewall не работает и что для того, чтобы он работал "как хотите вы, но не как задумал автор статьи", надо в начало строк добавить "ipfw", вы не довели это до конца.

3) Вы бы комментарии в примерах читали повнимательнее, а?

Там русским по белому написано про "одну строчку" и "опции переноса строк".

Было:

# опции переноса строк «\» надо убрать все должно быть в одну строчку
# опции redirect_port приведены для примера - как делать «проброс портов»
nat 1 config log if em0 reset same_ports deny_in \
redirect_port tcp 192.168.5.2:3389 3389 \
redirect_port udp 192.168.5.3:4444 4444 \
redirect_port tcp 192.168.5.4:25 25

Стало:

nat 1 config log if em0 reset same_ports deny_in
redirect_port tcp 192.168.5.2:3389 3389
redirect_port udp 192.168.5.3:4444 4444
redirect_port tcp 192.168.5.4:25 25

Опции переноса строк убраны, а "в одну строчку" - не появилось.
Теперь это 4 (четыре) независимых команды, т.к. /etc/firewall это теперь скрипт, а ipfw перед nat так и не появилось.

В целом, на мой взгляд, изначальная проблема есть и  в некоторой неприспособленности статьи для "совсем начинающих" - не указано, как запускать файрволл, что заставляет проявлять творческий подход..

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "FreeBSD не работает NAT"  +/
Сообщение от noris on 18-Янв-15, 15:20 
Исправил но NAT не работает


# правила разрешающие трафик через локальный интерфейс lo0
# будут добавляться автоматически сами при старте фаервола
# 100 allow ip from any to any via lo0
# 200 deny ip from any to 127.0.0.0/8
# 300 deny ip from 127.0.0.0/8 to any


# разрешаем все через интерфейс локальной сети
ipfw add 1040 allow ip from any to any via em1

# боимся непонятного
ipfw add 1050 deny ip from any to 192.168.0.0/16 in recv em0
ipfw add 1060 deny ip from 192.168.0.0/16 to any in recv em0
ipfw add 1070 deny ip from any to 172.16.0.0/12 in recv em0
ipfw add 1080 deny ip from 172.16.0.0/12 to any in recv em0
ipfw add 1090 deny ip from any to 10.0.0.0/8 in recv em0
ipfw add 10100 deny ip from 10.0.0.0/8 to any in recv em0
ipfw add 10110 deny ip from any to 169.254.0.0/16 in recv em0
ipfw add 10120 deny ip from 169.254.0.0/16 to any in recv em0

# настройка ната
# опции переноса строк «\» надо убрать все должно быть в одну строчку
# опции redirect_port приведены для примера - как делать «проброс портов»
ipfw nat 1 config log if em0 reset same_ports deny_in  redirect_port tcp 192.168.5.2:3389 3389
ipfw nat 1 config log if em0 reset same_ports deny_in redirect_port udp 192.168.5.3:4444 4444
ipfw nat 1 config log if em0 reset same_ports deny_in redirect_port tcp 192.168.5.4:25 25

# заварачиваем все что проходит через внешний интерфейс в нат

ipfw add 10130 nat 1 ip from any to any via em0

# боимся непонятного
ipfw add 65534 deny all from any to any

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "FreeBSD не работает NAT"  +1 +/
Сообщение от gfd on 18-Янв-15, 16:25 
Начните с простого.
А именно нат в 2 команды, первой инстанс ната сконфигурировать на адресе или интерфейсе, другой - запустить нужный трафик в этот инстанс. а потом усложнять, по мере надобности.
Кстати, а gateway_enable="YES" есть (оно же net.inet.ip.forwarding=1)
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "FreeBSD не работает NAT"  +/
Сообщение от noris on 18-Янв-15, 16:40 
gateway_enable="YES"

в /etc/rc.conf есть

А именно нат в 2 команды, первой инстанс ната сконфигурировать на адресе или интерфейсе, другой - запустить нужный трафик в этот инстанс. а потом усложнять, по мере надобности.

Мене не понятно какие именно правила на добавить  чтобы заработал NAT

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "FreeBSD не работает NAT"  +/
Сообщение от Сергей (??) on 18-Янв-15, 16:56 
> firewall_type=«/etc/firewall»

firewall_script="/etc/firewall", а у вас ищем метку /etc/firewall в файле /etc/rc.firewall

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "FreeBSD не работает NAT"  +/
Сообщение от noris on 18-Янв-15, 17:12 
изменил в /etc/rc.conf

firewall_script="/etc/firewall"

NAT всеравно не работает

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "FreeBSD не работает NAT"  +/
Сообщение от gfd on 18-Янв-15, 18:03 
> gateway_enable="YES"
> в /etc/rc.conf есть
> А именно нат в 2 команды, первой инстанс ната сконфигурировать на адресе
> или интерфейсе, другой - запустить нужный трафик в этот инстанс. а
> потом усложнять, по мере надобности.
> Мене не понятно какие именно правила на добавить  чтобы заработал NAT

убрать всё лишнее.

ipfw -f flush
ipfw nat 1 config if em0 log same_ports
ipfw nat 1 ip from any to any via em0

вот так работает?

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

8. "FreeBSD не работает NAT"  +/
Сообщение от noris on 18-Янв-15, 18:25 
убрал все из скрипта
/etc/firewall

добавил в скрипт

ipfw -f flush
ipfw nat 1 config if em0 log same_ports
ipfw nat 1 ip from any to any via em0

запустил скрипт
#./firewall

Flushed all rules.
ipfw nat 1 config if em0 log same ports
ipfw: bad command 'ip'

NAT не работает сервак 5.5 не пингуется


#ipfw show

65535 1269 116087 deny ip from any to any

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "FreeBSD не работает NAT"  +1 +/
Сообщение от gfd on 18-Янв-15, 19:30 
>[оверквотинг удален]
> ipfw nat 1 config if em0 log same_ports
> ipfw nat 1 ip from any to any via em0
> запустил скрипт
> #./firewall
> Flushed all rules.
> ipfw nat 1 config if em0 log same ports
> ipfw: bad command 'ip'
> NAT не работает сервак 5.5 не пингуется
> #ipfw show
> 65535 1269 116087 deny ip from any to any

а документацию почитать лень? закралась у меня досадная ошибка, которая и привела к
"ipfw: bad command 'ip' "

правильно скрипт читать как  

ipfw -f flush
ipfw nat 1 config if em0 log same_ports
ipfw add nat 1 ip from any to any via em0

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "FreeBSD не работает NAT"  +/
Сообщение от noris on 18-Янв-15, 19:54 
исправил

ipfw -f flush
ipfw nat 1 config if em0 log same_ports
ipfw add nat 1 ip from any to any via em0

но так тоже ничего не работает шлюз не пингуется

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "FreeBSD не работает NAT"  +/
Сообщение от PavelR (??) on 18-Янв-15, 20:18 
> исправил
> ipfw -f flush
> ipfw nat 1 config if em0 log same_ports
> ipfw add nat 1 ip from any to any via em0
> но так тоже ничего не работает шлюз не пингуется

Откройте для себя tcpdump.

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "FreeBSD не работает NAT"  +/
Сообщение от gfd on 18-Янв-15, 20:18 
> исправил
> ipfw -f flush
> ipfw nat 1 config if em0 log same_ports
> ipfw add nat 1 ip from any to any via em0
> но так тоже ничего не работает шлюз не пингуется

что говорит
sysctl net.inet.ip.forwarding
и
ipfw show

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

13. "FreeBSD не работает NAT"  +/
Сообщение от noris on 18-Янв-15, 20:25 
net.inet.ip.forwarding: 1


#ipfw show
00100 nat 1 ip from any to any via em0
65535 deny ip from any to any

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "FreeBSD не работает NAT"  +/
Сообщение от gfd on 18-Янв-15, 20:34 
> net.inet.ip.forwarding: 1
> #ipfw show
> 00100 nat 1 ip from any to any via em0
> 65535 deny ip from any to any

вот тут прямо так без счетчиков? tcpdump на интерфейсах, и смотреть заголовки.

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

15. "FreeBSD не работает NAT"  +/
Сообщение от Сергей (??) on 18-Янв-15, 21:50 
> net.inet.ip.forwarding: 1
> #ipfw show
> 00100 nat 1 ip from any to any via em0
> 65535 deny ip from any to any

Начните сначала
firewall_enable=«YES»
firewall_nat_enable=«YES»
firewall_nat_interface="em0"
firewall_type=«Open»

и добавить в /etc/sysctl.conf
net.inet.ip.fw.one_pass=0.

После чего попингуйте из локалки ваши интерфейсы и дайте ваши ipfw -a list

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

16. "FreeBSD не работает NAT"  +/
Сообщение от Сергей (??) on 18-Янв-15, 21:53 
И вообще, зачем свое ядро собирать, заюзать generic, вам ведь в правилах forward то не нужен, а остальное подгрузить модулями
Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

17. "FreeBSD не работает NAT"  +/
Сообщение от gfd on 19-Янв-15, 11:22 
>  И вообще, зачем свое ядро собирать, заюзать generic, вам ведь в
> правилах forward то не нужен, а остальное подгрузить модулями

BTW с 9.3 fwd в ядре уже

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру