The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Настройка шлюза FreeBSD между двумя локалками и интернетом ч..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"Настройка шлюза FreeBSD между двумя локалками и интернетом ч..."  
Сообщение от sedfom (ok) on 10-Июл-06, 22:28 
Вводные:

Компьютер под FreeBSD5.4
Сетевые адаптеры:
fxp1: 10.200.10.36:255.255.255.0
fxp2: 192.168.0.1:255.255.255.0

Ядро скомпилировано GENERIC + опции
options BRIDGE
options IPDIVERT
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
options IPFIREWALL_FORWARD
options IPFIREWALL_FORWARD_EXTENDED # на всякий пожарный
device pf
device pflog
device pfsync

rc.conf:

natd_enable="YES"
natd_interface="fxp1"
defaultrouter="10.200.10.1"
firewall_enable="YES"
pf_enable="YES"
pf_rules="/etc/pf.conf"
pf_flags=""
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
pflog_flags=""

Сеть провайдера: 10.0.0.0:255.0.0.0
10.200.10.1 - gateway для моего сегмента
10.200.4.1 - VPN сервер
10.200.4.100 - Сервер с расшаренными по "Netbios over TCP/IP" папками с видеофильмами

Моя маленькая сеть 192.168.0.0:255.255.255.0
192.168.0.2 - Web, FTP, POP3, SMTP сервер
192.168.0.11 - рабочая станция 1
192.168.0.12 - рабочая станция 2

Возникшие вопросы:

1) Настроил ipfw для хождения с 192.168.0.11 на 10.200.4.100 через natd работает и сейчас. Затем настроил шлюз для хождения с 192.168.0.11 на 10.200.4.100, но на этот раз в качестве NAT выступал PF.

В pf.conf для этого я добавил только одну строку
nat on fxp1 from 192.168.0.0/24 to 10.0.0.0/8 -> (fxp1)

Работает, но ping -l 2000 10.200.4.100 работает только при NAT=natd, а при pf такой пинг не проходит. Ну и с natd соответственно файлы копируются с сервера на рабочую станцию 3-4 минуты, а с pf 9-10 минут. Для pf "магическая" длина пакета оказалась 1472 (мог соврать +/- 3, точно не помню)
При этом правило ipfw для nat выглядело вот так:
${fwcmd} add 500 divert natd all from any to any via fxp1

А для pf я такого не писал. Может как то тоже через divert передавать в pf. Или в pf.conf еще каких параметров надо добавить чтобы он пропускал пакеты до 25000 длиной?

PS использовать PF в качестве одного единственного файрвола пока не хочу, ибо пока я в нем совсем новичек.

2) Вот по этой статье
http://www.opennet.ru/base/net/pptp_client.txt.html
Добавил в ppp.conf секцию vpn со всеми описанными строками без изменений, за исключением пароля и логина. Установил пакет pptp
Затем прописал в /etc/rc.d/*NETWORKING
route add -host 10.200.4.1 10.200.10.1
route add -net 10.0.0.0 10.200.10.1
/usr/local/sbin/pptp 10.200.4.1 vpn &

В resolv.conf DNS провайдера записан

При загрузке все вроде идет без ошибок до появления приглашения login(ttyv0):
проходит пара секунд и появляется сообщение:
ppp[303]: tun0: Error: rt_Set: Cannot add a route with gateway 0.0.0.0

После чего интернет работает, но все попытки пропинговать интернет хосты проваливаются со 100% потерей. При просмотре счетчиков ipfw выяснилось что все пинги на интернет почемуто идут просто на fxp1, а не на tun0.

В случае с PPTP я организую второй NAT на PF
nat on tun0 from 192.168.0.0/24 to !10.0.0.0/8 -> (tun0)

Хочется добить icmp на интернет

Последняя непристойность: после всех перезагрузок и настроек появились файлы pptp.core в корне и в папке /root  - это нормально при shutdown -r now ?

В логах ppp просто куча сообщений:
15:00:04 ppp[303]: tun0: CPP: DeflateInput: Seq error: Got 110, expected 108
15:00:04 ppp[303]: tun0: CPP: deflink: SendResetReq(116) state = Openned
15:00:04 ppp[303]: tun0: CPP: deflink: RecvResetReq(116) state = Openned
15:00:04 ppp[303]: tun0: CPP: deflate: Input channel reset
15:00:08 ppp[303]: tun0: CPP: DeflateInput: Seq error: Got 83, expected 81
15:00:08 ppp[303]: tun0: CPP: deflink: SendResetReq(117) state = Openned
15:00:08 ppp[303]: tun0: CPP: deflink: RecvResetReq(117) state = Openned
15:00:08 ppp[303]: tun0: CPP: deflate: Input channel reset
15:00:11 ppp[303]: tun0: CPP: DeflateInput: Seq error: Got 157, expected 156
15:00:11 ppp[303]: tun0: CPP: deflink: SendResetReq(118) state = Openned
15:00:11 ppp[303]: tun0: CPP: deflink: RecvResetReq(118) state = Openned
15:00:11 ppp[303]: tun0: CPP: deflate: Input channel reset

и т.п и т.д.

Прошу помощи. Спасибо что не поленились дочитать. :)

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Настройка шлюза FreeBSD между двумя локалками и интернетом ч..."  
Сообщение от KlounAda email(??) on 12-Июл-06, 04:18 
АЙ.. не дочитал :-) Задачу твою нихрена не понял.

"PS использовать PF в качестве одного единственного файрвола пока не хочу, ибо пока я в нем совсем новичек." - а стОит!

Советы:
1. Выкить IPFW, используйю PF. И вообще, как ты два фаерволла собрался одновременно юзать?
2. В PF можеш прописывать НАТы хоть сотню, не надо никаких дивертов, т.е. можно отдельные адреса выпукать на отдельные адреса и ваще как угодно

Краткий пример:
В ядре
option altq
device pf
device pflog
device pfsync
и на компиляцию.

в rc.conf
pf_enable="YES"
pflog_enable="YES"
pflog_logfile="usr/var/pf"

В pf.conf
ext_if="fxp1"
int_if="fxp2"
ext_ip="10.200.10.36"
int_net="192.168.0/24"

nat on $ext_if from 192.168.0.11 to 10.200.4.100 -> $ext_if # НАТиш один одрес на один адрес
nat on $ext_if from {192.168.0.1 192.168.0.5} to 195.184.14/24 -> $ext_if #НАТиш два внутренних адреса на какую-то подсеть
nat on $ext_if proto tcp from 192.168.0/24 to any port {25 110} -> $ext_if # Выпускаешь всю сеть наружу по портам 25 и 110 - почту забирать
nat on $ext_if proto icmp from 192.168.0/24 to any -> $ext_if #Выпускаешь пинги

и т.д. хоть сотни НАТов

...
block in all
block out all

pass out from $ext_ip to any keep state

pass in from $int_net to $int_net
pass out from $int_net to $int_net
или pass on $int_if from any to any

...
для PPPoE
pass on tun0 from any to any

Если будут вопросы пиши мне на мыло, вышлю рабочие конфиги и нормальный хелп по ПФ

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Настройка шлюза FreeBSD между двумя локалками и интернетом ч..."  
Сообщение от MaximKat (ok) on 12-Июл-06, 15:02 
>Если будут вопросы пиши мне на мыло, вышлю рабочие конфиги и нормальный
>хелп по ПФ

Можешь мне выслать? Заодно поделись опытом как считать трафик? (по клиентам) Вроде встретил упоминания что IPA работает c PF но на оффсайте об этом ни слова :(

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Настройка шлюза FreeBSD между двумя локалками и интернетом ч..."  
Сообщение от sedfom (ok) on 12-Июл-06, 16:51 
>АЙ.. не дочитал :-) Задачу твою нихрена не понял.
>
>"PS использовать PF в качестве одного единственного файрвола пока не хочу, ибо
>пока я в нем совсем новичек." - а стОит!
>

Задача:

Есть сеть вот такой структуры:

http://www.opennet.ru/base/net/freebsd_2x_natd.jpg

Картинка не моя, но структура у меня такая же.

Напишите работоспособный конфиг для PF который позволит:

1) Натить мою локалку - если смотреть на этот рисунок, то 10.0.0.0/8 в любой сегмент локалки 192.168.xxx.0/24

2) Натить мою локалку - если смотреть на этот рисунок, то 10.0.0.0/8 в интернет через PPTP интерфейс tun0

3) В моей локалке 10.0.0.0/8 есть мой сервер web, ftp,pop3,smtp его надо промапить в локалку провайдера только по портам этих сервисов.

Проблемы с которыми я столкнулся в PF на этом пути:

1) строка
nat on fxp1 from 192.168.0.0/24 to 10.0.0.0/8 -> (fxp1)
срезает все пакеты превышающие длину 1472, что ведет к тормозам. Все парамерты в этой строке из моего первого поста выше, а не с рисунка   :-)

2) строка
nat on tun0 from 192.168.0.0/24 to !10.0.0.0/8 -> (tun0)

Все парамерты в этой строке из моего первого поста выше, а не с рисунка

Перед 10.0.0.0/8 стоит восклицательный знак

Вообще не пропукает пинг - все пакеты идут по прежнему в локалку провайдера, а не на ВПН тунель, но при этом http,ftp она пропускает в интернет нормально

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Настройка шлюза FreeBSD между двумя локалками и интернетом ч..."  
Сообщение от Johnrea email on 09-Окт-08, 12:24 
Проверте конфиг...Плиззз Кажись тут че-то нетак, я с pf столкнулся первый раз ))

и если можно расписать что строки обозначают.

ext_if="inet0"  # replace with actual external interface name i.e., dc0
int_if="lnet0"  # replace with actual internal interface name i.e., dc1
internel_net="192.168.1.3, 192.168.1.127, 192.168.1.125, 192.168.1.250"
internel_net1="192.168.1.25, 192.168.1.126, 192.168.1.125, 192.168.1.10, 192.168.1.12, 192.1

internal_net="192.168.1.0/24"
external_addr="192.168.1.1"

nat on $ext_if from $internal_net to any -> ($ext_if)

block in log all

pass  in  on $ext_if proto tcp from any to $ext_if port 22 keep state
pass  out on $ext_if proto { tcp, udp } all keep state
pass in on $int_if from $int_if:network to any keep state
pass out on $int_if from any to $int_if:network keep state
pass out on $ext_if proto tcp all modulate state flags S/SA
pass out on $ext_if proto { udp, icmp } all keep state
pass in on $ext_if proto { gre, tcp } all keep state
pass in on $ext_if proto {tcp, udp} from any to $ext_if port {1723,47,21,8080,443,80,1777,33
pass out on $ext_if proto {tcp, udp} from any to $ext_if port {1723,47,21,8080,80,443,1777}

и еще там 2 сетевых интерфейса lnet0 с разными айпи, один на внешку др. на лок. так может быть?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру