Форум портала Metropolis Галерея   
Добро пожаловать. Пожалуйста, войдите или зарегистрируйтесь.
06 Май 2024, 20:15 *

Фотогалерея Метрополиса
 
   Начало   Помощь Поиск Правила Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: ipfw + natd  (Прочитано 3821 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Intoxikata
Завсегдатай
****

Репутация: 22
Сообщений: 259


: 23 Август 2008, 21:59

Объясняю проблему.
Есть роутер под управлением FreeBSD с двумя сетевухами. Одна смотрит в антхилл 10.70.0.103/24 (rl1), другая в домашнюю сеть 192.168.0.1/24 (rl0)

В /etc/rc.conf разрешены роутинг, натд-демон и файрволл (ipfw)

Существуют два правила файрволла
099 divert natd all from any to any
100 allow all from any to any

Со стороны домашнего компьютера (192.168.0.100/24) не пингуются хосты за пределами роутера. Если убрать девяносто девятое правило, ситуация не изменится. Кто может сказать почему???

это мы придумали оружие массового поражения и ездим на нем!
vania-pooh
Житель форума
*****

Репутация: 20
Сообщений: 1278


Ubuntu 8.04 && Windows XP

Email
Ответ #1 : 24 Август 2008, 19:45

Ох... Я этого никогда не настраивал к сожалению. А может быть еще включить функции шлюза? Там что-то типа GATEWAY_ENABLED="YES" вроде было для /etc/rc.conf

Русские не сдаются... поэтому давайте бузить!
OdieZlo
Новичок
*

Репутация: 0
Сообщений: 41

Ответ #2 : 26 Август 2008, 11:40

я вообще не совсем в теме, но мне кажется что надо ещё DNS ностроить, то есть, если тв DNS не находит IP в своей базе он его не пропускает на внешнюю сеть.
З.Ы. если сказал гупость... прошу громко не смеяться)))

RGB
root/good/boot
vania-pooh
Житель форума
*****

Репутация: 20
Сообщений: 1278


Ubuntu 8.04 && Windows XP

Email
Ответ #3 : 26 Август 2008, 13:26

я вообще не совсем в теме, но мне кажется что надо ещё DNS ностроить, то есть, если тв DNS не находит IP в своей базе он его не пропускает на внешнюю сеть.
З.Ы. если сказал гупость... прошу громко не смеяться)))
Так ведь мы же без доменных имен работаем. Человек пытается сделать обычный пинг по адресу. Его зарезает фаервол. Ты имеешь в виду, что фаервол может "обмениваться" сведениями с DNS? Думаю он обменивается только, если обращение идет по доменному имени, хотя для точного понимания вопроса нужно читать документацию.

Русские не сдаются... поэтому давайте бузить!
OdieZlo
Новичок
*

Репутация: 0
Сообщений: 41

Ответ #4 : 26 Август 2008, 17:19

Если мы говорим о "трансляции IP" то это скорей всего андо сделать.
У меня настраена трансляция IP на OpenSuse 10.3, когда втарой рас ставил, сам мучался пол дня пока не вспомнил про DNS сервер!
вот монула с сайта linuxforum.ru

Цитировать
Автор: jura12 Feb 27 2008, в 20:33
Я настроил с помощью этой методики выложенной пользователем Olegator :

давайте попробую вам немного помочь, у вас в машине с opensuse должно стоять 2 сетевые карты, к одной подключается интернет(например eth0(ip 64.233.187.99)), а к другой локальная сеть (eth1(192.168.0.1)). нужно в брандмауре назначитть для eth0 внешнюю зону,а для eth1 внутреннюю. смотрим что бы все машины могли пинговать друг друга, на клиентских компах должен быть прописан шлюз 192.168.0.1
Заходим в брандмауер - Трансляция сетевых адресов, в верху ставим галочку Трансляция сетевых адресов,далее щёлкаем кнопку "Добавить", вводим следующее: сеть источника 192.168.0.0/24, протокол TCP, в полях "Требуемый порт" и "Перенаправление в порт" прописываем нули, требуемый IP вводим "0.0.0.0/0", т.е. любой. А в поле "Перенаправить в транслированный IP" 64.233.187.99, брандмауер должен быть запущен. Теперь можно проверить пингуется ли сетевой интерфейс eth0 с клиентских машин, должно работать и должны пинговаться сайты по ip например для яндекса ping 213.180.204.8
Потом необходимо поднять DNS сервер, для этого установите DNS пакеты для yast, появится пункт Yast2 -> "Сетевые службы" -> "Сервер DNS" и поставьте пакет bind(хотя не знаю для чего он нужен).
Открываем Yast2 -> "Сетевые службы" -> "Сервер DNS"
Ставим галочку "PPP Демон устанавливает направление запроса", это означает, что если наш локальный ДНС сервер не обнаружит в своей базе IP адреса требуемого домена, то он попросит его у ДНС провайдера, а в случае указанной конфигурации он автоматически определит ДНС провайдера и будет использовать его. Щелкаем далее.
ничего не трогаем на странице "Установка DNS сервера: DNS зоны" и щелкаем далее.
В поле "Запуск службы" ставим галочку "При загрузке системы" и жмем завершить, тем самым применяя настройки.
опять открываем Yast2 -> "Сетевые службы" -> "Сервер DNS" и помойму на первой вкладке открываем брандмауер
таперь на клиентских машинах прописываем сервер DNS 192.168.0.1, ну вроде всё

Единственное есть 3 замечания.
1.В Yast2 -> "Сетевые службы" -> "Сервер DNS" и помойму на первой вкладке открываем брандмауер - там делать ничего не надо. По умолчанию стоит eth0=0, eth1=1 этого достаточно.
2.на клиентских машинах прописываем ip адреса и gateway
3.перезагрузить линукс.


RGB
root/good/boot
ExclusivE
Завсегдатай
****

Репутация: 9
Сообщений: 372

Ответ #5 : 10 Ноябрь 2008, 01:35

в rc.conf:
Код:
gateway_enable="YES"
natd_enable="YES"
natd_interface="внешний интрефейс"
firewall_enable="YES"
firewall_script="скрипт ipfw"
Ну и в ядре должна быть поддержка IPFIREWALL, IPFIREWALL_FORWARD и IPDIVERT.
Да, ipfw+natd - решение сильно тормознутое, поскольку natd работает в юзерспейсе. Лучше натить ipnat'ом или чем-нибудь еще в ядре.
Intoxikata
Завсегдатай
****

Репутация: 22
Сообщений: 259


Ответ #6 : 10 Ноябрь 2008, 11:39

Проблема все еще актуальна. Натд работает без проблем, за тем лишь исключением, что не работает утилита traceroute или tracert в win. Конфиг файрволла выглядит примерно так:

Код:
$(wan) - внешний сетевой интерфейс (Антхилл)
$(lan) - малая локальная сеть

# разрешаю локальный интерфейс и малую локальную сеть
00012 allow ip from any to any via  $(lan)
00013 allow ip from any to any via lo0

# входящие соединения передаю natd
00014 divert 8668 ip from any to any in via $(wan)

# пропускаю динамически созданные правила
00015 check-state

# исходящие соединения перебрасываю демону natd
00030 skipto 800 tcp from any to any out via $(wan) setup keep-state
00040 skipto 800 udp from any to any out via $(wan) keep-state
00050 skipto 800 icmp from any to any out via $(wan) keep-state

# настройка входящих соединений
00350 allow tcp from any to any dst-port 80 in via $(wan)
00355 allow tcp from any to any dst-port 20,21 in via $(wan)
...
00380 allow tcp from any to any dst-port 31676 in via $(wan)

# запрет всех входящих соединений
00400 deny ip from any to any in via $(wan)

# исходящие соединения передаю демону natd
00800 divert 8668 ip from any to any out via $(wan)
00801 allow ip from any to any

# правило по умолчанию
65535 deny ip from any to any

в rc.conf:
Код:
gateway_enable="YES"
natd_enable="YES"
natd_interface="внешний интрефейс"
firewall_enable="YES"
firewall_script="скрипт ipfw"

все буквально так, как вы написали

Да, ipfw+natd - решение сильно тормознутое, поскольку natd работает в юзерспейсе. Лучше натить ipnat'ом или чем-нибудь еще в ядре.

По поводу оптимизации: "правило для программистов: не оптимизируй; правило для экспертов: не оптимизируй никогда" (c)rsdn.ru. Короче говоря, чем проше тем лучше, задача оптимизации не горит. Но если ipnat проше, чем natd, то конечно стоит попробовать.



это мы придумали оружие массового поражения и ездим на нем!
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines
Text only version | PDA version