LINUX.ORG.RU
ФорумAdmin

PF и веб сервер в локальной сети


0

0

Всем привет!

Есть веб сервер расположенный за PF. Задача настроить НАТ таким образом,что бы сервер был доступен как из вне локалки так и из локальной сети.

ext_if = «fxp1»
www_web_local = «192.168.1.17»
ext_ip = «внешний ip»
rdr on $ext_if proto tcp from any to $ext_ip port www -> $www_web_local

так веб доступен из интернета, а из сети нет моршрутизации. Подскажите пожалюйта как реализовать доступ к веб серверу по 80 порту из локальной сети.


Ответ на: комментарий от iZEN

видел это правило не стал применять думал можно сделать проще, прочел, что binat это умеет и запутался. Спасибо, а то я пока носом не ткнут в решение не успокоюсь:)

osipen ()
int_if = "внутренний_интерфейс"
localnet = "адрес_сети/маска"
nat on $int_if proto tcp from $localnet to $www_web_local port www -> $int_if

Как-то так.

nnz ★★★★ ()
Ответ на: комментарий от osipen

Насколько я понял, схема такая:

LAN---int_if[gateway+PF]ext_if---|----WAN
                                 |
                            [Web-server]

???

Без NAT вряд ли получится сделать корректное преобразование адресов, так как используются две различные сетки — LAN и WAN, и клиенты LAN без NAT никак не увидят ответные IP-пакеты Web-сервера, расположенного в другой сети.

iZEN ★★★★★ ()
Ответ на: комментарий от osipen

>пробовал не катит

Тогда пара глупых вопросов:
1. Правило с nat идет после правила с rdr?
2. Айпишник $int_if является дефолтным шлюзом всей локалки?

nnz ★★★★ ()
Ответ на: комментарий от true_admin

>Откуда такие познания о pf у rhel-админа? :)

А кто сказал, что я только rhel'ом занимаюсь?
Меня интересуют практически все перспективные проекты по определенным тематикам.

nnz ★★★★ ()
Ответ на: комментарий от osipen

Да, и как вариант можно попробовать еще навесить rdr на $int_if.

nnz ★★★★ ()
Ответ на: комментарий от val-amart
# internet---ext_if[gateway+PF]int_if---|----local
                                 | 
                            [Web-server] 

#                                                                                 
##############ОПРЕДЕЛЕНИЕ ПЕРЕМЕННЫХ#################                             
#                                                                                 
# Внешние, vpn и внутренний интерфейсы.                                           
#                                                                                 
ext_if  = "fxp1"                                                                  
int_if  = "fxp0"                                                                  
vpn_if  = "tun0"                                                                  
#                                                                                 
# OpenVPN сеть                                                                    
vpn_network="{10.8.0.0/24}"                                                       
# Сервисы доступные из интернета                                                  
                                                    
www_web_local="{192.168.1.17}"                                                    
                                                            
# определение пользовательских ip адресов                                         
users="{192.168.1.0/24}"                                                          
                                                                         
##########ОПЕРЕДЕЛЕНИЕ ПЕРЕМЕННЫХ END################                             

##########ПРАВИЛА NAT###############
#                                   
# Выполнить нормализацию всех пакетов.
#                                     
scrub in all                          
#                                     
# Транслировать внутренние адреса в (основной) адрес внешнего интерфейса.
nat on $ext_if from $users to any -> $ext_if               
# Транслировать vpn адреса в локальную сеть(OpenVPN).                     
nat on $ext_if from $vpn_network to any -> $ext_if                        
#                                                                         
                                                                                 
######### Транслировать внешние соединения:                                                  
#                                                                                            
                      
# Транслировать внешние соединения c $ext_ip на www к web-local 
rdr on $ext_if proto tcp from any to $ext_if port www -> $www_web_local   


# Вот так работает:
rdr on $int_if proto tcp from $users to $ext_if port www -> $www_web_local 
no nat on $int_if proto tcp from $int_if to $ext_ip_141                                      
nat on $int_if proto tcp from  $users to $www_web_local port www ->  $int_if                               
osipen ()
Ответ на: комментарий от osipen

Пользователи (users=«{192.168.1.0/24}») по-любому видят веб-сервер (www_web_local=«{192.168.1.17}»), так как находятся в одной подсетке, и даже не обращаются к шлюзу == PF не обрабатывает IP-пакеты, не покидающие домен коллизий на интерфейсе $int_if.

iZEN ★★★★★ ()
Ответ на: комментарий от osipen

или ты намудрил с картой/настройкой ети, или тебе Изень правильно сказал, никаких правил в пф не надо, узлы в твоей сети будут обращаться напрямую к вебсерверу, не посылая пакетов на роутер

val-amart ★★★★★ ()
Ответ на: комментарий от val-amart

Не знаю на счет замудрил, помойму стандартный конфиг. Факт в том, что по полному днс имени страний не грузится. А с этим правилом все нормально.

osipen ()
Ответ на: комментарий от osipen

очевидно, потому что полное днс имя скорее всего указывает на внешнюю айпишку. правильное решение - split dns для твоей локальной сети

val-amart ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.