Ru-Board.club
← Вернуться в раздел «UNIX»

» FreeBSD+NAT

Автор: misha24
Дата сообщения: 19.06.2005 14:49
Доброе время суток.
Имеется следующая проблема:

Есть внешняя сеть с 5-ю реальными IP и прямым выходом в интернет.
Задача настроить NAT на FreeBSD5.3 таким образом, чтобы все 5 внешних IP были прописаны на внешнем сетевом адапторе (на том, на котором включен NAT ), а весть трафик из внутренней сети был разбит на 5 групп (по IP адресам) и каждая группа выходила через свой внешний IP.

x.x.x.1 ---|--------||------|| 192.168.1.0/24
x.x.x.2 ---|--fxp0-||------|| 192.168.2.0/24
x.x.x.3 ---|--------||------|| 192.168.3.0/24
x.x.x.4 ---|--------||------|| 192.168.4.0/24
x.x.x.5 ---|--------||------|| 192.168.5.0/24

В rc.conf с помощью функции alias я присвоил внешнему сетевому адаптеру все 5 IP.
Были созданы фиктивные сетевые адаптеры с именами fxp0_alias0, fxp0_alias1 и т.д.

Каким образом я могу перенаправить трафик от каждой из групп на соответствующий внешний IP?
Автор: Ambal
Дата сообщения: 20.06.2005 15:26
повесить пять натов с разными конфигами на разных портах,
и файрвольными рулезами каждую внутреннию сетку отправить на определенный нат.
Автор: guess
Дата сообщения: 20.06.2005 23:57
В принципе, если адреса будут использоваться только под нат
можно не прописывать алиасы. Использовать только один ИП на интерфейсе.
Автор: misha24
Дата сообщения: 21.06.2005 08:22
Ambal: Как это сделать практически? Создать несколько файлов rc.conf? Или как?

guess: В том-то и состоит задача, чтобы каждая группа уходила в интернет через свой IP, но через один сетевой адаптер.

С помощью команды redirect_address в natd.conf мне удалось перенаправить один IP из внутренней сети на один из фиктивных IP ната. Но, с помощью этой команды можно перенаправлять только 1 IP внутренней сети на 1 IP ната. Для группы внутренних IP мне это сделать не удалось.
Автор: Ambal
Дата сообщения: 21.06.2005 16:32
в /etc/rc.local например пропиши
/sbin/natd -f /etc/natd1.conf
/sbin/natd -f /etc/natd2.conf
....
/sbin/natd -f /etc/natd5.conf


а в конфигах :
alias_addres x.x.x.1
port 32001

и т.д.

в ipfw

/sbin/ipfw add divert 32001 all from 192.168.1.0/24 to any via fxp0
/sbin/ipfw add divert 32002 all from 192.168.2.0/24 to any via fxp0
/sbin/ipfw add divert 32003 all from 192.168.3.0/24 to any via fxp0
...
Автор: misha24
Дата сообщения: 22.06.2005 07:54
Ambal:Попробовал, но не срабатывает. Очевидно, я что-то делаю не так. Помоги разобраться плииз.
нат у меня изначально был включен в rc.conf, который подгружается при перегрузке системы. Было написано так:
natd_enable="YES"
natd_interface="fxp0"
natd_flags="-f /etc/natd.conf"

В /etc/natd.conf написал
alias_addres x.x.x.1
port 32001

В /etc/firewall.conf написал
ipfw add divert 32001 all from 192.168.1.0/24 to any via fxp0

На самой внешней сетевой карте прописан IP x.x.x.50

При такой конфигурации при перезагрузка система зависает и пишет о том, что не может создать alias так как он уже существует.
Что и где я делаю не так?
Автор: Ambal
Дата сообщения: 22.06.2005 08:38
alias_addres x.x.x.1
тут должен быть внешний адрес с которого будут уходить пакеты наружу.

пиши не иксы а нормальные адреса, тогда путаницы меньше будет.
Автор: misha24
Дата сообщения: 22.06.2005 12:53
Нормальные адреса:
62.218.75.1
62.218.75.2
62.218.75.3
62.218.75.4
62.218.75.5

Непонятно как и где прописывается файл rc.local для того, чтобы он запустился при загрузке?
И что при этом надо записывать в rc.conf?

Почему та конфигурация, что приведена ниже не срабатывает?
Автор: Ambal
Дата сообщения: 22.06.2005 16:17
создать его нужно /etc/rc.local и все, при загрузке он обработается.
из rc.conf про наты убрать все можно.

в конифиге ната так и пиши
alias_addres 62.218.75.1
port 32001

в следующем
alias_addres 62.218.75.2
port 32002
Автор: Drron
Дата сообщения: 23.06.2005 16:47
В rc.conf :
ipnat_enable="YES"
ipnat_rules=/etc/ipnat.rules

В ipnat.rules :
map fxp0 192.168.0.0/24 -> 62.218.75.1/32 portmap tcp/udp 40000:60000
map fxp0 192.168.0.0/24 -> 62.218.75.1/32

map fxp0 192.168.1.0/24 -> 62.218.75.2/32 portmap tcp/udp 40000:60000
map fxp0 192.168.1.0/24 -> 62.218.75.2/32
...
и тд.

В ядре необходимы опции:
options IPFILTER
options IPFILTER_LOG
device pf


Добавлено:
Да еще измерял загрузку процессора совместно с ipnat и natd при перекачке одного и тогоже файла. С использованием natd загрузка выше, скорости перекачки ниже, а для меня это было критично поэтому от natd отказался.
Поэтому для http использую squid, для nat ipnat, а для ограничения скорости ipfw.


Добавлено:
Для примера смотри /usr/share/examples/ipfilter/BASIC.NAT
Автор: guess
Дата сообщения: 24.06.2005 00:35
cоздать 5 конфигов natd с разными строчками alias_address
запустить на разных портах (как писал Ambal )

потом примерно так (место в конфиге важно!)

# заворачиваем пакеты в диверт
add divert 32001 all from 192.168.1.0/24 to any out via fxp0
add divert 32002 all from 192.168.2.0/24 to any out via fxp0
add divert 32003 all from 192.168.3.0/24 to any out via fxp0
...

#выпускаем переписанные пакеты
add pass ip from 62.218.75.0/30 to any out via fxp0

# заворачивем входящие пакеты в нужный диверт
add divert 32001 all from any to 62.218.75.1 in via fxp0
add divert 32002 all from any to 62.218.75.2 in via fxp0
add divert 32003 all from any to 62.218.75.3 in via fxp0
...

#впускаем пакеты в машину ( транзитные)
add pass ip from any to 192.168.0.0/16 in via fxp0

# Анализируем пакеты которые предназначены для машины

add deny all from any to any via fxp0

# Тут правила для других интерфейсов ( можно вначале поставить skipto)

------------------
Все же рекомендую не создавать 4 alias на интерфейсах. Во всяком случае в этом нет никакой необходимости, судя по постановке задачи, а мусора валиться будет меньше.

-----------------

Drron
ipnat действительно быстрее работает, так как он в ядре реализован.

К сожелению ipf забросили, а использовать 2 пакетных фильтра накладно.
Вот сильно смотрю на pf.



Автор: misha24
Дата сообщения: 27.06.2005 13:47
Всем спасибо за ответы. Буду пробовать.
Автор: tankistua
Дата сообщения: 26.11.2005 02:44
кто-нибудь ng_nat уже пробовал в действии ? люди пишут что все ок

http://lists.freebsd.org/pipermail/freebsd-net/2005-February/006417.html

Буду в понедельник заводить. А то айпинат как-то не шибко мне нравиться, но пока пока приходится использовать его

misha24
попробуй использовать ipfilters

Пересобрать ядро с :
-----
src/sys/i386/conf/GENERIC

+options IPFILTER
+options IPFILTER_LOG

-----
/etc/rc.conf
ipnat_enable="YES"
ipnat_rules="/etc/ipnat.rules"
ipmon_enable="YES"
ipmon_flags="-Ds"

----
/etc/ipnat.rules
map fxp0 192.168.1.0/24 -> x.x.x.1/32 proxy port ftp ftp/tcp
map fxp0 192.168.1.0/24 -> x.x.x.1/32

map fxp0_alias0 192.168.2.0/24 -> x.x.x.2/32 proxy port ftp ftp/tcp
map fxp0_alias0 192.168.2.0/24 -> x.x.x.2/32


Не сильно я уверен , что айпинат нормально воспримет fxp0_alias0, но чем черт ( тоесть демон :) не шутит.

Страницы: 1

Предыдущая тема: Установка Win4Lin TS на ASPLinux


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.