URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 94195
[ Назад ]

Исходное сообщение
"Реальный IP за фаерволлом"

Отправлено momai , 26-Дек-12 11:00 
Дано: шлюз на freebsd, все пользователи выходят в инет через nat. Используется kernel nat и ipfw. Имеется пул адресов от провайдера.
1.2.3.4 - 8 Client IP
Маска 255.255.255.248
Шлюз 1.2.3.3
+ внешний один адрес a.b.c.d, натящиеся абоны ходят во внеху через него.

re0 - внеха
re1 - локалка

Задача: Выделить определённой клиентской машине (для примера 172.16.0.20) реальный ип адрес.

Что было сделано:
Установлен natd. rc.conf выглядит так
gaetway_enable="YES"
hostname="billing"
ifconfig_re0="a.b.c.d" netmask 255.255.255.252" # внешний интерфейс (Internet)
ifconfig_re1="172.16.0.1 netmask 255.255.255.0" # внутренний интерфейс
ifconfig_re1_alias0="1.2.3.3 netmask 255.255.255.248" #выделен алиас из пула адресов, выданых провайдером.
defaultrouter="a.b.c.q" # внешний шлюз по умолчанию
firewall_enable="YES"
firewall_type="/etc/firewall-nat"
dummunet_enable="YES"
natd_enable="YES"
#natd_flags="-f /etc/natd.conf"
natd_interface="re0"

Рестартимся, что бы применить все изменения, смотрим ifconfig
re1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC>
        ether XXXXXXX
        inet 172.16.0.1 netmask 0xffffff00 broadcast 172.16.0.255
        inet 1.2.3.3 netmask 0xfffffff8 broadcast 1.2.3.9

re0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC>
        ether XXXXXXXXXX
        inet a.b.c.d netmask 0xfffffffc broadcast a.b.c.e


Добавлены правила:
divert 8668 ip from 172.16.0.20 to any out via re0
divert 8668 ip from any to any in via re0

Правила для данного адреса в целом выглядят так:

01100 292647  39374983 allow ip from 172.16.0.0/24 to any via re1
05007      0         0 divert 8668 ip from 172.16.0.20 to any out via re0
05008      0         0 divert 8668 ip from any to any in via re0
05011      0         0 allow ip from any to 172.16.0.20 via re1


Выставляю на клиентской машине адрес 172.16.0.20 выхожу в инет и вижу, что ИП a.b.c.d а не
1.2.3.X Что я делаю не так?
Пробовал ещё добавить redirect_address 172.16.0.20 1.2.3.X в конфиг natd.


Содержание

Сообщения в этом обсуждении
"Реальный IP за фаерволлом"
Отправлено sirius , 26-Дек-12 11:25 
без natd

ipfw nat 1 config ip a.b.c.d redirect_addr 172.16.0.20 a.b.c.x

правила в неправильном порядке указаны, до ната не доходит.


"Реальный IP за фаерволлом"
Отправлено momai , 26-Дек-12 11:34 
> без natd
> ipfw nat 1 config ip a.b.c.d redirect_addr 172.16.0.20 a.b.c.x
> правила в неправильном порядке указаны, до ната не доходит.

Вы имели ввиду ipfw nat 1 config ip 1.2.3.4 redirect_addr 172.16.0.20 1.2.3.x ?

1.2.3.4 это ип из пула адресов выданных провайдером, которые я должен редиректить до абонента
a.b.c.d это натящийся ип для серых адресов

При попытке сделать так
ipfw nat 1 config ip a.b.c.d redirect_addr 172.16.0.20 a.b.c.x упал инет)


"Реальный IP за фаерволлом"
Отправлено user , 26-Дек-12 13:14 
> Дано: шлюз на freebsd, все пользователи выходят в инет через nat. Используется
> kernel nat и ipfw. Имеется пул адресов от провайдера.

Уважаемый, кто вам поручил конфигурировать файервол. Вы не можете оличит kernel nat от userland nat (aka natd)

>[оверквотинг удален]
> Что было сделано:
> Установлен natd. rc.conf выглядит так
> gaetway_enable="YES"
> hostname="billing"
> ifconfig_re0="a.b.c.d" netmask 255.255.255.252" # внешний интерфейс (Internet)
> ifconfig_re1="172.16.0.1 netmask 255.255.255.0" # внутренний интерфейс
> ifconfig_re1_alias0="1.2.3.3 netmask 255.255.255.248" #выделен алиас из пула адресов,
> выданых провайдером.
> defaultrouter="a.b.c.q" # внешний шлюз по умолчанию
> firewall_enable="YES"

   firawall_nat="YES" <- вот теперь будет ядерный
  
>[оверквотинг удален]
>         ether XXXXXXX
>         inet 172.16.0.1 netmask 0xffffff00
> broadcast 172.16.0.255
>         inet 1.2.3.3 netmask 0xfffffff8
> broadcast 1.2.3.9
> re0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
>         options=209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC>
>         ether XXXXXXXXXX
>         inet a.b.c.d netmask 0xfffffffc
> broadcast a.b.c.e

   Далее каша... Читаем man ipfw
   А в целом вам уже ответили. Копаем в сторону redirect_addr. Учтите нюансы, связанные с deny_in. Если ядерный нат сконфигурирован с этой опцией, то редирект адресов работать не будет.
Еще, допустим на внешнем у вас основной адрес и дополнительный (как алиас), который вам нужно пробросить во внутрь сети. Тогда в конфиге ната
ipfw nat 1 config if re0 redirect_addr ...
не указывайте if re0, так как парсер будет ругаться на несуществующий адрес.
Лично у меня сделано так: по одному инстансу ната на каждой внешней сетевой, который так же редиректит порты + один инстанс ната, который только редиректит адреса внуть сети и настроени как я упомянул выше.


>[оверквотинг удален]
> 05008      0      
>    0 divert 8668 ip from any to any
> in via re0
> 05011      0      
>    0 allow ip from any to 172.16.0.20 via
> re1
> Выставляю на клиентской машине адрес 172.16.0.20 выхожу в инет и вижу, что
> ИП a.b.c.d а не
> 1.2.3.X Что я делаю не так?
> Пробовал ещё добавить redirect_address 172.16.0.20 1.2.3.X в конфиг natd.