Страница 1 из 1
mpd5,pf,NAT
Добавлено: 2009-12-12 12:08:50
legioner
Знаю что в интернете много статей но у меня не получаеться

.
Есть 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
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
в чем я ошибся

.
Re: mpd5,pf,NAT
Добавлено: 2009-12-12 13:05:56
legioner
получилось прописал
но это для всех. а как ограничить Nat
Re: mpd5,pf,NAT
Добавлено: 2009-12-12 13:39:08
FreeBSP
поищи на сайте 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"
и еще опиши поподробнее проблему. не очень понятно что не так работает/неработает..
Re: mpd5,pf,NAT
Добавлено: 2009-12-12 13:46:51
legioner
спс за информацию.
проблема вот в чем.
у меня в pf.conf вот что прописано.
Код: Выделить всё
nat on ng0 inet from 192.168.0.0/24 to any -> ng0
так у меня все работает.
но если я пропишу в pf.conf
инет пропадает так как я все блокирую.
у меня не получаеться прописать правило для vpn. чтобы доступ был из локальной сети по порту 80.
Re: mpd5,pf,NAT
Добавлено: 2009-12-12 14:25:38
FreeBSP
для этих целей я пользую ipfw - помоему у него более вменяемый вид правил. к тому же его пользуют bruteblock и некоторые другие проги...
Re: mpd5,pf,NAT
Добавлено: 2009-12-12 17:14:19
ban
legioner писал(а):у меня в pf.conf вот что прописано.
Код: Выделить всё
nat on ng0 inet from 192.168.0.0/24 to any -> ng0
так у меня все работает.
но если я пропишу в pf.conf
инет пропадает так как я все блокирую.
осмелюсь предположить: инет у тебя пропадает, т.к. ты блокируешь движение GRE пакетов. Может ты не весь pf.conf показал?
Покажи весь.
legioner писал(а):у меня не получаеться прописать правило для vpn. чтобы доступ был из локальной сети по порту 80.
локальной сетью считается 10.100.6.0/24, которая за rl1 находится? или что? Как ты пытался сделать этот доступ по 80 порту?
Re: mpd5,pf,NAT
Добавлено: 2009-12-12 18:01:11
legioner
Извиняюсь за не правильно сформулированный вопрос
на данный момент не могу написать полный pf.conf. только в понедельник.
насчет порта 80.
я просто хотел чтобы в локальной сети 192.168.0.0/24 интернет (который через mpd5) был доступен только по порту 80.
и закрыть все остальные.
Re: mpd5,pf,NAT
Добавлено: 2009-12-12 20:48:41
esp
если я правильно понял, то инет через 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 адрес на внешнем интерфейсе - лишнее (т.к PPP
oE)
Re: mpd5,pf,NAT
Добавлено: 2009-12-14 15:17:40
legioner
выкладываю 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 то все в порядке.
в сявзи с чем
Re: mpd5,pf,NAT
Добавлено: 2009-12-14 17:21:47
ban
поочередно комменть block in all и block out all - выясни при каком не пашет.
обрати внимание ты написал block on all, по-моему это не правильно
Re: mpd5,pf,NAT
Добавлено: 2009-12-15 11:08:44
legioner
при
vpn отрубаеться.
да там ошибка надо
Re: mpd5,pf,NAT
Добавлено: 2009-12-15 13:09:54
ban
все-таки мне кажется все дело в 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
Re: mpd5,pf,NAT
Добавлено: 2009-12-15 14:21:57
GRooVE
Код: Выделить всё
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 }
Re: mpd5,pf,NAT
Добавлено: 2009-12-17 14:25:28
legioner
GRooVE спасибо все вышло. но у меня при старте системы c слокалки нет доступа к . приходиться считывать правило заново
добавляеться вот это правило
Код: Выделить всё
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
Re: mpd5,pf,NAT
Добавлено: 2009-12-17 16:50:13
Jah
legioner писал(а):GRooVE спасибо все вышло. но у меня при старте системы c слокалки нет доступа к . приходиться считывать правило заново
Все дело в том, что pf у тебя запускается раньше чем мпд поднимает интерфейс, поэтому нат и не работает.
Как вариант могу предложить вставить в рутовый кронтаб строку:
Если кто-то предложит более другое решение то будет интересно ознакомиться и с ним.
Re: mpd5,pf,NAT
Добавлено: 2009-12-17 17:38:12
legioner
Jah сделал как вы советовали. прописал в
/etc/crontab только от пользователя root.
спасибо всем кто помогал

Re: mpd5,pf,NAT
Добавлено: 2009-12-17 19:02:11
GRooVE
правильней, все таки, было бы добавить в
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
Re: mpd5,pf,NAT
Добавлено: 2009-12-17 19:03:58
Dog
Вообще-то тема порядка очередности старта файрвола и mpd в интернете неоднократно поднималась - все разруливается при средствами mpd и pf.
Самый простой вариант - при старте pf'а скармливать ему конфиг с минимальным набором правил, которые разрешают стартовать mpd, а в mpd.conf указать скрипты up-script для подъема интерфейса, в котором будет вызываться pfctl -f файл_с_нужными_настройками и, если надо, перенастройка роутинга; и down-script, в котором, на случай падения интерфейса, будут соответствующим образом правила файрвола перелопачиваться.
Более сложный, но и более изящный вариант - курить гугль и ман по pf.conf в сторону anchor'ов, тогда можнобудет обойтись без up-script и down-script.
UPD: ну вот, насчет первого способа меня опередили
