mpd5,pf,NAT

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
legioner
ефрейтор
Сообщения: 62
Зарегистрирован: 2009-09-17 18:34:08
Откуда: Чебоксары

mpd5,pf,NAT

Непрочитанное сообщение legioner » 2009-12-12 12:08:50

Знаю что в интернете много статей но у меня не получаеться :oops: .
Есть FreeBsd 7.2, mpd5.3, pf
Хочу сделать NAT спомошью pf.
есть 2 интерфеса rl0 ,rl1 вот ifconfig

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

rl0: flags=8843<UP, BROADCAST,RUNING,SIMPLEX,MULTICAST>metric 0 mtu 1500
		options=8<VLAN_MTU>
		ether 00:00:00:00:00:00
		inet 192.168.0.11 netmask 0xffffff00 broadcast 192.168.0.255
		media: Ethernet autoselect (100baseTX<full-duplex>)
		status: active
rl1: flags=8843<UP, BROADCAST,RUNING,SIMPLEX,MULTICAST>metric 0 mtu 1500
		options=8<VLAN_MTU>
		ether 00:00:00:00:00:00
		inet 10.100.6.58 netmask 0xffffff00 broadcast 10.100.6.255
		media: Ethernet autoselect (100baseTX<full-duplex>)
		status: active
plip0: flags=108810<POINTOPOINT, SIMPLEX,MULTICAST,NEEDSGIANT> metric 0 mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNING,MULTICAST>metric 0 mtu 16384
		inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
		inet6 ::1 prefixlen 128
		inet 127.0.0.1 netmask 0xff000000
ng0: flags=8890<UP,POINTOPOINT, RUNNING, NOARP, SIMPLEX, MULTICAST> metric 0 mtu 1460 
	inet 10.100.105.39 ---> 10.100.96.1 netmask 0xffffffff
sysctl net.inet.ip.forwarding

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

net.inet.ip.forwarding: 1
netstat -rn

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

Internet
Destination             Gateway                        Flags     Refs      Use Netif Expire
default 			     	10.100.96.1						UGS		   0         2   ng0  
10.0.0.0/8              10.100.6.1                      UGS        0         23  rl1
10.100.6.0/24           link#2                          UC         0         0   rl1
10.100.6.1              00:15:17:25:5f:92               UHLW       2         2   rl1
10.100.96.1             10.100.105.39                   UH         1         0   ng0
127.0.0.1               127.0.0.1                       UH         0         0   lo0
192.168.0.0/24          link#1                          UC         0         0   rl0
arp -a

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

ns0.orionet.ru (10.100.6.1) at  00:15:17:25:5f:92 on rl1 [ethernet]
в pf.conf

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

if_1 = "rl0"
if_2 = "rl1"
lan = "192.168.0.0/24"
nat on ng0 inet from $lan to any -> (ng0)
на WinXP ip 192.168.0.10 netmask 255.255.255.0 defaultrouter 192.168.0.11
в чем я ошибся :unknown: .
Если требуется достичь максимальной эффективности то следует пользоваться своей силой открыто и честно (c) Дарт Вейдер

Хостинговая компания 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/

Аватара пользователя
legioner
ефрейтор
Сообщения: 62
Зарегистрирован: 2009-09-17 18:34:08
Откуда: Чебоксары

Re: mpd5,pf,NAT

Непрочитанное сообщение legioner » 2009-12-12 13:05:56

получилось прописал

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

 
nat from 192.168.0.0/24 to any->ng0
но это для всех. а как ограничить Nat
Если требуется достичь максимальной эффективности то следует пользоваться своей силой открыто и честно (c) Дарт Вейдер

Аватара пользователя
FreeBSP
майор
Сообщения: 2020
Зарегистрирован: 2009-05-24 20:20:19
Откуда: Москва

Re: mpd5,pf,NAT

Непрочитанное сообщение FreeBSP » 2009-12-12 13:39:08

поищи на сайте homenet.corbina.net тему типа домашний роутер на freebsd для чайников
там есть кинфиг pf. он там кривой в плане безопасности, но работает. (http://freebsp.homeip.net/~FreeBSP/stuff/pf.conf)
кроме того в /etc/rc.conf надо прописать gateway_enable="YES"
кроме того, в pf.conf лучше не использовать пробелы в с-style . то есть лучше писать типа if_1="rl0" а не if_1 = "fxp3"

и еще опиши поподробнее проблему. не очень понятно что не так работает/неработает..
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!

Аватара пользователя
legioner
ефрейтор
Сообщения: 62
Зарегистрирован: 2009-09-17 18:34:08
Откуда: Чебоксары

Re: mpd5,pf,NAT

Непрочитанное сообщение legioner » 2009-12-12 13:46:51

спс за информацию.
проблема вот в чем.
у меня в pf.conf вот что прописано.

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

         nat on ng0 inet from 192.168.0.0/24 to any -> ng0
так у меня все работает.
но если я пропишу в pf.conf

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

block in   all
block out all
инет пропадает так как я все блокирую.
у меня не получаеться прописать правило для vpn. чтобы доступ был из локальной сети по порту 80.
Если требуется достичь максимальной эффективности то следует пользоваться своей силой открыто и честно (c) Дарт Вейдер

Аватара пользователя
FreeBSP
майор
Сообщения: 2020
Зарегистрирован: 2009-05-24 20:20:19
Откуда: Москва

Re: mpd5,pf,NAT

Непрочитанное сообщение FreeBSP » 2009-12-12 14:25:38

для этих целей я пользую ipfw - помоему у него более вменяемый вид правил. к тому же его пользуют bruteblock и некоторые другие проги...
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!

Аватара пользователя
ban
мл. сержант
Сообщения: 145
Зарегистрирован: 2009-07-22 22:36:29
Откуда: г.Волжский Волг. обл.

Re: mpd5,pf,NAT

Непрочитанное сообщение ban » 2009-12-12 17:14:19

legioner писал(а):у меня в pf.conf вот что прописано.

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

         nat on ng0 inet from 192.168.0.0/24 to any -> ng0
так у меня все работает.
но если я пропишу в pf.conf

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

block in   all
block out all
инет пропадает так как я все блокирую.
осмелюсь предположить: инет у тебя пропадает, т.к. ты блокируешь движение GRE пакетов. Может ты не весь pf.conf показал? Покажи весь.
legioner писал(а):у меня не получаеться прописать правило для vpn. чтобы доступ был из локальной сети по порту 80.
локальной сетью считается 10.100.6.0/24, которая за rl1 находится? или что? Как ты пытался сделать этот доступ по 80 порту?
кто никуда не торопится, тот везде успевает

Аватара пользователя
legioner
ефрейтор
Сообщения: 62
Зарегистрирован: 2009-09-17 18:34:08
Откуда: Чебоксары

Re: mpd5,pf,NAT

Непрочитанное сообщение legioner » 2009-12-12 18:01:11

Извиняюсь за не правильно сформулированный вопрос :pardon:
на данный момент не могу написать полный pf.conf. только в понедельник.
насчет порта 80.
я просто хотел чтобы в локальной сети 192.168.0.0/24 интернет (который через mpd5) был доступен только по порту 80.
и закрыть все остальные.
Если требуется достичь максимальной эффективности то следует пользоваться своей силой открыто и честно (c) Дарт Вейдер

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

Re: mpd5,pf,NAT

Непрочитанное сообщение esp » 2009-12-12 20:48:41

если я правильно понял, то инет через pppoe.
в данном случаи использовать mpd излишне, так как в самой фре есть поддержка оного (обе реализации основаны на netgraph):
http://www.freebsd.org/doc/ru/books/handbook/pppoe.html
man 8 ppp
man 4 ng_pppoe
у ppp есть собственный nat (смотри man 5 rc.conf на предмет ppp_nat)

вариант с pf:

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

$if_ext0="external interface"
$if_int0="internal interface"

nat on $if_ext0 from $if_int:network -> ($if_ext0:0)

block all

pass out on $if_ext0 inet proto tcp from ($if_ext0:0) to any modulate state
pass in on $if_int0 inet proto tcp from $if_int0:network port >1023 to any port 80 flags S/SA modulate state
PS ip адрес на внешнем интерфейсе - лишнее (т.к PPPoE)

Аватара пользователя
legioner
ефрейтор
Сообщения: 62
Зарегистрирован: 2009-09-17 18:34:08
Откуда: Чебоксары

Re: mpd5,pf,NAT

Непрочитанное сообщение legioner » 2009-12-14 15:17:40

выкладываю pf.conf

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

set block-policy return
set skip on lo0

scrub in all

nat on ng0 inet from 192.168.0.0/24 to any -> (ng0:0)

block in all
block on all

antispoof log quick for {lo0,rl0,rl1}

такой конфиг не работоспособен. если закоментировать block in all, block on all то все в порядке.
в сявзи с чем
Если требуется достичь максимальной эффективности то следует пользоваться своей силой открыто и честно (c) Дарт Вейдер

Аватара пользователя
ban
мл. сержант
Сообщения: 145
Зарегистрирован: 2009-07-22 22:36:29
Откуда: г.Волжский Волг. обл.

Re: mpd5,pf,NAT

Непрочитанное сообщение ban » 2009-12-14 17:21:47

поочередно комменть block in all и block out all - выясни при каком не пашет.
обрати внимание ты написал block on all, по-моему это не правильно
кто никуда не торопится, тот везде успевает

Аватара пользователя
legioner
ефрейтор
Сообщения: 62
Зарегистрирован: 2009-09-17 18:34:08
Откуда: Чебоксары

Re: mpd5,pf,NAT

Непрочитанное сообщение legioner » 2009-12-15 11:08:44

при

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

block in all 
vpn отрубаеться.
да там ошибка надо

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

block out all
Если требуется достичь максимальной эффективности то следует пользоваться своей силой открыто и честно (c) Дарт Вейдер

Аватара пользователя
ban
мл. сержант
Сообщения: 145
Зарегистрирован: 2009-07-22 22:36:29
Откуда: г.Волжский Волг. обл.

Re: mpd5,pf,NAT

Непрочитанное сообщение ban » 2009-12-15 13:09:54

все-таки мне кажется все дело в gre, вот так попробуй:

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

set block-policy return
set skip on lo0

scrub in all

nat on ng0 inet from 192.168.0.0/24 to any -> (ng0:0)

block all

antispoof log quick for {lo0,rl0,rl1}

pass in on ВнешнийИнтерфейс proto gre from any to any
незапашет если, то tcpdump
кто никуда не торопится, тот везде успевает

Аватара пользователя
GRooVE
ст. сержант
Сообщения: 309
Зарегистрирован: 2009-01-04 10:33:43
Откуда: Odessa, UA
Контактная информация:

Re: mpd5,pf,NAT

Непрочитанное сообщение GRooVE » 2009-12-15 14:21:57

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

if_1 = "rl0"
if_2 = "rl1"
lan = "192.168.0.0/24"
nat on ng0 inet from $lan to any -> (ng0)
#Блокируем все по умолчанию
block all
#Разрешаем народу подключения в инет только на 80-й порт
pass in on { $if_1, $if_2 } proto { tcp, udp } from $lan to any port 80 keep state
#Разрешаем все подключения, что инициализированы сервером (сюда же относим и впн; зачем городить с GRE? мы же доверяем сами себе, не так ли?)
pass from self to any keep state
#Из icmp разрешаем только echoreq и unreach
pass inet proto icmp all icmp-type { echoreq, unreach }

Аватара пользователя
legioner
ефрейтор
Сообщения: 62
Зарегистрирован: 2009-09-17 18:34:08
Откуда: Чебоксары

Re: mpd5,pf,NAT

Непрочитанное сообщение legioner » 2009-12-17 14:25:28

GRooVE спасибо все вышло. но у меня при старте системы c слокалки нет доступа к . приходиться считывать правило заново

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

pfctl -f /etc/pf.conf
добавляеться вот это правило

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

pass inet from 10.100.105.39 to any flags S/SA keep state
ifconfig

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

rl0: flags=8843<UP, BROADCAST,RUNING,SIMPLEX,MULTICAST>metric 0 mtu 1500
		options=8<VLAN_MTU>
		ether 00:00:00:00:00:00
		inet 192.168.0.11 netmask 0xffffff00 broadcast 192.168.0.255
		media: Ethernet autoselect (100baseTX<full-duplex>)
		status: active
rl1: flags=8843<UP, BROADCAST,RUNING,SIMPLEX,MULTICAST>metric 0 mtu 1500
		options=8<VLAN_MTU>
		ether 00:00:00:00:00:00
		inet 10.100.6.58 netmask 0xffffff00 broadcast 10.100.6.255
		media: Ethernet autoselect (100baseTX<full-duplex>)
		status: active
plip0: flags=108810<POINTOPOINT, SIMPLEX,MULTICAST,NEEDSGIANT> metric 0 mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNING,MULTICAST>metric 0 mtu 16384
		inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
		inet6 ::1 prefixlen 128
		inet 127.0.0.1 netmask 0xff000000
ng0: flags=8890<UP,POINTOPOINT, RUNNING, NOARP, SIMPLEX, MULTICAST> metric 0 mtu 1460 
	inet 10.100.105.39 ---> 10.100.96.1 netmask 0xffffffff
Если требуется достичь максимальной эффективности то следует пользоваться своей силой открыто и честно (c) Дарт Вейдер

Аватара пользователя
Jah
ефрейтор
Сообщения: 60
Зарегистрирован: 2007-09-19 12:42:38
Откуда: Воронеж
Контактная информация:

Re: mpd5,pf,NAT

Непрочитанное сообщение Jah » 2009-12-17 16:50:13

legioner писал(а):GRooVE спасибо все вышло. но у меня при старте системы c слокалки нет доступа к . приходиться считывать правило заново

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

pfctl -f /etc/pf.conf
Все дело в том, что pf у тебя запускается раньше чем мпд поднимает интерфейс, поэтому нат и не работает.
Как вариант могу предложить вставить в рутовый кронтаб строку:

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

@reboot /sbin/pfctl -f /etc/pf.conf
Если кто-то предложит более другое решение то будет интересно ознакомиться и с ним.

Аватара пользователя
legioner
ефрейтор
Сообщения: 62
Зарегистрирован: 2009-09-17 18:34:08
Откуда: Чебоксары

Re: mpd5,pf,NAT

Непрочитанное сообщение legioner » 2009-12-17 17:38:12

Jah сделал как вы советовали. прописал в /etc/crontab только от пользователя root.

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

@reboot           root      /sbin/pfctl -f /etc/pf.conf
спасибо всем кто помогал :good:
Если требуется достичь максимальной эффективности то следует пользоваться своей силой открыто и честно (c) Дарт Вейдер

Аватара пользователя
GRooVE
ст. сержант
Сообщения: 309
Зарегистрирован: 2009-01-04 10:33:43
Откуда: Odessa, UA
Контактная информация:

Re: mpd5,pf,NAT

Непрочитанное сообщение GRooVE » 2009-12-17 19:02:11

правильней, все таки, было бы добавить в mpd - up-script:
в mpd.conf

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

set iface up-script "/usr/local/etc/run.sh"

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

# echo /usr/local/etc/run.sh
#!/bin/sh
/sbin/pfctl -f /etc/pf.conf

Аватара пользователя
Dog
лейтенант
Сообщения: 723
Зарегистрирован: 2006-09-21 10:34:36
Откуда: Kharkiv, Ukraine
Контактная информация:

Re: mpd5,pf,NAT

Непрочитанное сообщение Dog » 2009-12-17 19:03:58

Вообще-то тема порядка очередности старта файрвола и mpd в интернете неоднократно поднималась - все разруливается при средствами mpd и pf.
Самый простой вариант - при старте pf'а скармливать ему конфиг с минимальным набором правил, которые разрешают стартовать mpd, а в mpd.conf указать скрипты up-script для подъема интерфейса, в котором будет вызываться pfctl -f файл_с_нужными_настройками и, если надо, перенастройка роутинга; и down-script, в котором, на случай падения интерфейса, будут соответствующим образом правила файрвола перелопачиваться.
Более сложный, но и более изящный вариант - курить гугль и ман по pf.conf в сторону anchor'ов, тогда можнобудет обойтись без up-script и down-script.

UPD: ну вот, насчет первого способа меня опередили :)
Oh my God, they killed init! Bastards!