The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"FreeBSD 6.1 + natd + redirect_addreess"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"FreeBSD 6.1 + natd + redirect_addreess"  
Сообщение от gray_xor email(ok) on 03-Авг-07, 07:46 
Добрый день.
Помогите, пожалуйста, новичку решить вот такую проблему:

Есть роутер на FreeBSD 6.1, работает natd.
Внешний IP 213.59.235.218/29
Внутренний IP 10.172.0.1/24
В принципе, все устраивает. Маршрутизация работает, Адреса подменяются.
Но возникла потребность выпустить несколько адресов из внутренний сети под реальными IP в большой мир.
Конкретно:
Адрес 10.172.0.90 -> 213.59.235.219
Адрес 10.172.0.91 -> 213.59.235.220
Адрес 10.172.0.92 -> 213.59.235.221

При этом, все остальные внутренние адреса должны ходить через нат как и раньше.

Содержимое файла rc.conf
#--------------------------------------------------------------------
defaultrouter="213.59.235.217"
gateway_enable="YES"
hostname="router.mydomain.ru"
ifconfig_myk0="inet 213.59.235.218 netmask 255.255.255.0 up"
ifconfig_em0="inet 10.172.0.1  netmask 255.255.255.0 up"
#--------------------------------------------------------------------
firewall_enable="YES"
inetd_enable="YES"
natd_enable="YES"
natd_interface="myk0"
#--------------------------------------------------------------------

Нашел кучу статей про то, как легко и непринужденно люди делают редирект (в т.ч. и на этом форуме). Однако, не все так просто. Ни один совет не помог. А проблема вот в чем:
При существующей конфиге делаем так:
# natd -redirect_address 10.172.0.90 213.59.235.219
Получаем вот это:
# natd: instance default: aliasing address not given
Хорошо. Алиас, так алиас. Делаем так:
# natd -a 213.59.235.219
Получаем вот это:
# natd: Unable to bind divert socket.: Address already in use
Какой именно адрес занят - дошло не сазу. Сокет 8668! Ну хорошо. Пусть будет сокет:

# natd -p 8669 -a 213.59.235.219 -redirect_address 10.175.0.90 213.59.235.219

Прожувал молча. Однако, отвалился основной нат, и этот не заработал.
Причем sockstat показывает, что natd юзает два сокета 8668 и 8669

Че мне с ним сделать?
P:S использую natd по религиозным соображениям. ipnat пока юзать не хочу.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

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


1. "FreeBSD 6.1 + natd + redirect_addreess"  
Сообщение от grimnir (??) on 03-Авг-07, 12:19 

>Пусть будет сокет:
>
># natd -p 8669 -a 213.59.235.219 -redirect_address 10.175.0.90 213.59.235.219
>
>Прожувал молча. Однако, отвалился основной нат, и этот не заработал.
>Причем sockstat показывает, что natd юзает два сокета 8668 и 8669
>
>Че мне с ним сделать?
>P:S использую natd по религиозным соображениям. ipnat пока юзать не хочу.

У меня второй natd пускается так:

# grep natd1 /etc/rc.conf

natd1_enable="YES"
natd1_interface="192.168.3.254"
natd1_flags="-f /etc/natd.conf -p 8778"

# cat /etc/natd.conf

log yes
use_sockets no
dynamic yes
same_ports yes

Соответственно, нужно скопировать /etc/rc.d/natd в /etc/rc.d/natd1 (или лучше в /usr/local/etc/rc.d )


Да, кстати, а не хотите попробовать использовать ng_nat для той же цели?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "FreeBSD 6.1 + natd + redirect_addreess"  
Сообщение от DN (ok) on 03-Авг-07, 12:22 
>[оверквотинг удален]
>Есть роутер на FreeBSD 6.1, работает natd.
>Внешний IP 213.59.235.218/29
>Внутренний IP 10.172.0.1/24
>В принципе, все устраивает. Маршрутизация работает, Адреса подменяются.
>Но возникла потребность выпустить несколько адресов из внутренний сети под реальными IP
>в большой мир.
>Конкретно:
>Адрес 10.172.0.90 -> 213.59.235.219
>Адрес 10.172.0.91 -> 213.59.235.220
>Адрес 10.172.0.92 -> 213.59.235.221

В /etc/natd.conf :

interface               myk0
redirect_address 10.172.0.90 213.59.235.219
redirect_address 10.172.0.91 213.59.235.220
redirect_address 10.172.0.92 213.59.235.221


В /etc/rc.conf :
    
natd_enable="YES"              
natd_interface="myk0"          
natd_flags="-f /etc/natd.conf"

Настраиваешь ipfw .

На ps -ax :
...
...     /sbin/natd -f /etc/natd.conf -n myk0
...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "FreeBSD 6.1 + natd + redirect_addreess"  
Сообщение от alexey (ok) on 06-Авг-07, 16:41 
>[оверквотинг удален]
>natd_enable="YES"
>natd_interface="myk0"
>natd_flags="-f /etc/natd.conf"
>
>Настраиваешь ipfw .
>
>На ps -ax :
>...
>...     /sbin/natd -f /etc/natd.conf -n myk0
>...

Если я не ошибаюсь алиас нужно делать на сетевой карте
т.е ifconfig myk0 alias 213.59.235.219 netsmask ****
а потом уже natd -redirect_address 10.172.0.90 213.59.235.219

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "FreeBSD 6.1 + natd + redirect_addreess"  
Сообщение от DN (??) on 07-Авг-07, 12:42 
>[оверквотинг удален]
>>Настраиваешь ipfw .
>>
>>На ps -ax :
>>...
>>...     /sbin/natd -f /etc/natd.conf -n myk0
>>...
>
>Если я не ошибаюсь алиас нужно делать на сетевой карте
>т.е ifconfig myk0 alias 213.59.235.219 netsmask ****
>а потом уже natd -redirect_address 10.172.0.90 213.59.235.219

Естественно, как само собой разумеющееся. Даже забыл.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "FreeBSD 6.1 + natd + redirect_addreess"  
Сообщение от HappyS email(ok) on 20-Авг-07, 10:24 
Помогите и мне. нужно весь поток данных на внутренний интерфейс PC1 переадресовать на LAN другого компьютера PC2 для  обработки трафика. Важно отсуствие маскарадинга, чтобы ip адреса запросов остались правильными. Чувствую что проблема схожа. Экспериментировать не хочется. Если просто поставить шлюз в PC1 смотрящий на PC2, то срабатывает подмена адресов. Это надо обойти. Спасибо.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "FreeBSD 6.1 + natd + redirect_addreess"  
Сообщение от psn1982 email(ok) on 20-Авг-07, 10:35 
>Помогите и мне. нужно весь поток данных на внутренний интерфейс PC1 переадресовать
>на LAN другого компьютера PC2 для  обработки трафика. Важно отсуствие
>маскарадинга, чтобы ip адреса запросов остались правильными. Чувствую что проблема схожа.
>Экспериментировать не хочется. Если просто поставить шлюз в PC1 смотрящий на
>PC2, то срабатывает подмена адресов. Это надо обойти. Спасибо.

Попробовать заюзать правило fwd в ipfw.
fwd не меняет содержимое пакета, а именно адрес источника и адрес назначения, а просто добавляет лишний прыжок.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "FreeBSD 6.1 + natd + redirect_addreess"  
Сообщение от HappyS email(ok) on 20-Авг-07, 11:45 
>>Помогите и мне. нужно весь поток данных на внутренний интерфейс PC1 переадресовать
>>на LAN другого компьютера PC2 для  обработки трафика. Важно отсуствие
>>маскарадинга, чтобы ip адреса запросов остались правильными. Чувствую что проблема схожа.
>>Экспериментировать не хочется. Если просто поставить шлюз в PC1 смотрящий на
>>PC2, то срабатывает подмена адресов. Это надо обойти. Спасибо.
>
>Попробовать заюзать правило fwd в ipfw.
>fwd не меняет содержимое пакета, а именно адрес источника и адрес назначения,
>а просто добавляет лишний прыжок.

получается, что мне надо заменить правило в фаэрволе
/sbin/ipfw add 8000 divert natd ip from any to any via xl0, где xl0 - WAN адрес
на
/sbin/ipfw add 8000 fwd ip from any to 1.2.3.4 via tl0, где tl0 - LAN адрес
и на LAN 1.2.3.4 будет приходить то же, что и на LAN PC1 (будет дублироваться трафик)
?
Спасибо psn1982

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "FreeBSD 6.1 + natd + redirect_addreess"  
Сообщение от psn1982 email(ok) on 20-Авг-07, 12:18 
>[оверквотинг удален]
>получается, что мне надо заменить правило в фаэрволе
>/sbin/ipfw add 8000 divert natd ip from any to any via xl0,
>где xl0 - WAN адрес
>на
>/sbin/ipfw add 8000 fwd ip from any to 1.2.3.4 via tl0, где
>tl0 - LAN адрес
>и на LAN 1.2.3.4 будет приходить то же, что и на LAN
>PC1 (будет дублироваться трафик)
>?
>Спасибо psn1982

Если я правильно понял то нужно весь трафик который идет через tl0 завернуть на другую машину, с адресом 1.2.3.4
ipfw add 8000 fwd 1.2.3.4 ip from any to any via tl0
Запустить tcpdump на обеих машинах и посмотреть что реально происходит

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "FreeBSD 6.1 + natd + redirect_addreess"  
Сообщение от HappyS email(ok) on 20-Авг-07, 12:25 
>[оверквотинг удален]
>>и на LAN 1.2.3.4 будет приходить то же, что и на LAN
>>PC1 (будет дублироваться трафик)
>>?
>>Спасибо psn1982
>
>Если я правильно понял то нужно весь трафик который идет через tl0
>завернуть на другую машину, с адресом 1.2.3.4
>ipfw add 8000 fwd 1.2.3.4 ip from any to any via tl0
>
>Запустить tcpdump на обеих машинах и посмотреть что реально происходит

да, понял правильно, но у меня собрано ядро без FIREWALL_FORWARD. Пересобирать боюсь, могу потерять текущие настройки. Можно ли эту задачу выполнить с правилом ipfw divert?
например таким правилом
/sbin/ipfw add 8000 divert natd ip from any to 1.2.3.4 via tl0  
?
Спасибо psn1982

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "FreeBSD 6.1 + natd + redirect_addreess"  
Сообщение от psn1982 email(ok) on 20-Авг-07, 12:48 
>[оверквотинг удален]
>>Запустить tcpdump на обеих машинах и посмотреть что реально происходит
>
>да, понял правильно, но у меня собрано ядро без FIREWALL_FORWARD. Пересобирать боюсь,
>могу потерять текущие настройки. Можно ли эту задачу выполнить с правилом
>ipfw divert?
>например таким правилом
>/sbin/ipfw add 8000 divert natd ip from any to 1.2.3.4 via tl0
>
>?
>Спасибо psn1982

ipfw add 8000 divert natd ip from any to 1.2.3.4 via tl0
Означает что пакеты идущие с любого адреса на адрес 1.2.3.4 через интерфейс tl0, нужно отдать на дальнейшую обработку демону natd.
Насчет пересобирать ядро, можно в случае неудачи загрузится со старым.
Как наиболее безопасно пересобрать.
Если из /usr/src/sys/i386/conf не удаляли текущую конфигурацию, то делается cp curent new (current и new имена файлов соответсвующих текущей конфигурации и создаваемой). new файл будет полной копией curent. Затем в файл new дописываем
options         IPFIREWALL_FORWARD
Затем компилируем конфигурацию new, затем инсталируем.
В /usr/src/sys/i386/conf рекомендую обзывать конфигурации по порядку установки, к примеру conf1, conf2 и т.п. и никогда не удалять файлы конфигурации после установки, чтобы в любой момент можно было посмотреть что на текущий момент в ядре, и что было раньше.
Можно сделать полный бэкап системы перед экспериментами.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "FreeBSD 6.1 + natd + redirect_addreess"  
Сообщение от HappyS email(ok) on 20-Авг-07, 15:43 
>[оверквотинг удален]
>Если из /usr/src/sys/i386/conf не удаляли текущую конфигурацию, то делается cp curent new
>(current и new имена файлов соответсвующих текущей конфигурации и создаваемой). new
>файл будет полной копией curent. Затем в файл new дописываем
>options         IPFIREWALL_FORWARD
>Затем компилируем конфигурацию new, затем инсталируем.
>В /usr/src/sys/i386/conf рекомендую обзывать конфигурации по порядку установки, к примеру conf1, conf2
>и т.п. и никогда не удалять файлы конфигурации после установки, чтобы
>в любой момент можно было посмотреть что на текущий момент в
>ядре, и что было раньше.
>Можно сделать полный бэкап системы перед экспериментами.

Хорошо, я так и сделаю. Я вот думаю - обязателен ли natd, если у меня gateway=yes. Может быть правило ipfw divert в таком случае лишнее?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "FreeBSD 6.1 + natd + redirect_addreess"  
Сообщение от psn1982 email(ok) on 20-Авг-07, 15:59 
>[оверквотинг удален]
>>Затем компилируем конфигурацию new, затем инсталируем.
>>В /usr/src/sys/i386/conf рекомендую обзывать конфигурации по порядку установки, к примеру conf1, conf2
>>и т.п. и никогда не удалять файлы конфигурации после установки, чтобы
>>в любой момент можно было посмотреть что на текущий момент в
>>ядре, и что было раньше.
>>Можно сделать полный бэкап системы перед экспериментами.
>
>Хорошо, я так и сделаю. Я вот думаю - обязателен ли natd,
>если у меня gateway=yes. Может быть правило ipfw divert в таком
>случае лишнее?

gateway_enable="YES"
Разрешает маршрутизацию на машине (пересылка пакетов между интерфейсами). А natd применяется для преобразования сетевых адресов. Позволяет машинам в локальной сети не имеющим внешнего адреса ходить в инет. Когда пакет идет от машины в локальной сети в инет, адрес отправителя заменяется на внешний адрес машины на шлюзе с NAT, заполняется таблица преобразования, поэтому когда пакет идет из инета обратно, просматривается таблица, и выполняется обратное преобразование, адрес назначения с внешнего на шлюзе, меняется на адрес машины в локальной сети.
Тут подробно
http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/network-natd.html

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "FreeBSD 6.1 + natd + redirect_addreess"  
Сообщение от HappyS email(ok) on 29-Авг-07, 09:43 
сделал как говорили - 1)отключил nat (в rc.conf закоментировал) 2)gateway_enabled="YES" оставил, 3)в фаэрволе закоментировал правило DIVERT - интернет не пошел, пинговать наружу не смог? все откатил назад
Кто скажет причину?


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "FreeBSD 6.1 + natd + redirect_addreess"  
Сообщение от psn1982 email(ok) on 29-Авг-07, 09:55 
>сделал как говорили - 1)отключил nat (в rc.conf закоментировал) 2)gateway_enabled="YES" оставил, 3)в
>фаэрволе закоментировал правило DIVERT - интернет не пошел, пинговать наружу не
>смог? все откатил назад
>Кто скажет причину?

Если машина с которой пинговали с серым адресом, то без NAT и не будет работать

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

16. "FreeBSD 6.1 + natd + redirect_addreess"  
Сообщение от HappyS email(ok) on 29-Авг-07, 10:08 
Что значит Серый адрес - у меня внешний выделенный ip адрес типа 212.74.229.xxx/28 А пинговать не могу свой внешний шлюз сразу же после тех трех шагов


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

17. "FreeBSD 6.1 + natd + redirect_addreess"  
Сообщение от psn1982 email(ok) on 29-Авг-07, 10:25 
>Что значит Серый адрес - у меня внешний выделенный ip адрес типа
>212.74.229.xxx/28 А пинговать не могу свой внешний шлюз сразу же после
>тех трех шагов

Если адреса внешние, маска подсети правильная, на шлюзе сделано gateway_enable="YES", на машине на которой пингуете указан адрес шлюза (внутренний интерфейс сервера на котором gateway_enable="YES"), то все должно работать и без NAT

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "FreeBSD 6.1 + natd + redirect_addreess"  
Сообщение от VArtem (ok) on 20-Авг-07, 18:46 
Я думаю, что нат здесь действительно лишнее. На сколько я понял вам провайдер дал подсеть из этих адресов (предположим что подсеть из 8-ми адресов), значит один ip-адрес вы даете серверу на внутреннем интерфейсе, а всем остальным вы пишете свои реальные адреса и гейтом указываете тот адрес, который вы дали серверу. Еще обратите внимание на маску подсети - она должна быть правильна указана. При gateway_enable="YES" такая схема будет работать
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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