Редирект трафика from LAN to LAN с помощью PF

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
ail-man
рядовой
Сообщения: 16
Зарегистрирован: 2010-03-18 20:08:30

Редирект трафика from LAN to LAN с помощью PF

Непрочитанное сообщение ail-man » 2012-08-10 17:43:04

Хелло Алл!!
Есть интересная задачка!
Как сделать перенаправление трафика из локалки, адресованного на внешний интерфейс, обратно в локалку на веб-сервер, работающий на порту 3000/tcp (Mdaemon)?
Вот конфиг:

Код: Выделить всё

table <firewall> const { self }
....
#################
## Translation ##
#################

nat on $ext_if from $lan_net to any -> ($ext_if)
rdr on $ext_if proto tcp from any to <firewall> port 80 -> 192.168.254.15 port 3000
rdr on $int_if proto tcp from $lan_net to <firewall> port 80 -> 192.168.254.15 port 3000

###############
## Filtering ##
###############

block in on $ext_ifs all
antispoof quick for $int_if inet

# Rules for lan-interface
pass in quick on $int_if all
pass out quick on $int_if all

# Rules for out-traffic
pass out quick on $ext_if proto tcp from any to any flags S/SA modulate state
pass out quick on $ext_if proto { udp, icmp } from any to any keep state

# Rules to INBOUND connections
pass in quick on $ext_if proto tcp from $routers to any port 3000
Эти правила редиректа позволяют перенаправить трафик только из внешки на внутренний сервер. А из локалки на внутренний сервер аналогичное правило rdr не работает :-o
RINETD очень неплохо справляется с этой задачей, но хочется, чтобы все было в одном флаконе PF.
Это нужно для того, чтобы пользователи, указывая в браузере только одно DNS-имя сервера, могли попасть на него как с внешки, так и из локалки (проклятые юзвери, их не научишь разным адресам :smile:

Настраивать локальный DNS-сервер - не вариант, т.к. он настроен на другие зоны, и не хотелось бы из-за одного адреса заводить целую зону.
Пробовал настраивать как тут: http://house.hcn-strela.ru/BSDCert/BSDA ... reflection - но никак не получается :st:
Помогите дописать данные правила, чтобы работало!
Последний раз редактировалось f_andrey 2012-08-10 19:03:48, всего редактировалось 1 раз.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

mak_v_
проходил мимо

Re: Редирект трафика from LAN to LAN с помощью PF

Непрочитанное сообщение mak_v_ » 2012-08-13 9:16:23

обычно данный "возврат" реализовывают проще - через named, прописывая разные views.

ail-man
рядовой
Сообщения: 16
Зарегистрирован: 2010-03-18 20:08:30

Re: Редирект трафика from LAN to LAN с помощью PF

Непрочитанное сообщение ail-man » 2012-08-13 10:24:54

mak_v_ писал(а):обычно данный "возврат" реализовывают проще - через named, прописывая разные views.
Да, все верно, сначала так и хотел сделать, но по вышесказанным причинам зону заводить не хотелось.
Однако мне все же удалось завернуть трафик по статье! Вот как будут выглядеть правила после преобразования:

Код: Выделить всё

table <firewall> const { self }
....
#################
## Translation ##
#################

#вот здесь добавляем 3 правила, а предыдущее нижнее правило rdr убираем, оно нам больше не нужно
rdr on $int_if proto tcp from $lan_net to $ext_if port 80 -> 192.168.254.15 port 3000
no nat on $int_if proto tcp from $int_if to $lan_net
nat on $int_if proto tcp from $lan_net to 192.168.254.15 port 3000 -> $int_if

nat on $ext_if from $lan_net to any -> ($ext_if)
rdr on $ext_if proto tcp from any to <firewall> port 80 -> 192.168.254.15 port 3000

###############
## Filtering ##
###############

block in on $ext_ifs all
antispoof quick for $int_if inet

# Rules for lan-interface
pass in quick on $int_if all
pass out quick on $int_if all

# Rules for out-traffic
pass out quick on $ext_if proto tcp from any to any flags S/SA modulate state
pass out quick on $ext_if proto { udp, icmp } from any to any keep state

# Rules to INBOUND connections
pass in quick on $ext_if proto tcp from $routers to any port 3000
Надеюсь, кому-нибудь это пригодится. :smile:
Тема закрыта! Спасибо.