Страница 1 из 1

PF и проброс портов

Добавлено: 2011-03-18 19:07:05
beeka
в общем долго гулял по интернетам, но так и не пришел к рабочему варианту(( решил спросить здесь, у знающих людей
надо пробросить пару портов на машинку внутри сети, допустим это 27016 и 5004 порты
в /etc/rc.conf:

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

beeka# cat /etc/rc.conf
defaultrouter="188.231.218.1"
hostname="beeka.localhost"
ifconfig_fxp0="inet 192.168.1.1  netmask 255.255.255.0"
ifconfig_vr0="ether 00:1d:60:93:be:1d"
ifconfig_vr0_alias0="inet 188.231.218.186 netmask 255.255.255.0"
sshd_enable="YES"
gateway_enable="YES"
pf_enable="YES"
pf_rules="/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
в /etc/pf.conf

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

beeka# cat /etc/pf.conf
int_if="fxp0"
ext_if="vr0"
scrub in all

rdr pass on $ext_if proto { tcp, udp } from any to any port 5004 -> 192.168.1.10
rdr pass on $ext_if proto { tcp, udp } from any to any port 27016 -> 192.168.1.10
nat on $ext_if from 192.168.1.0/24 to any -> ($ext_if)
в логах такое:

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

beeka# tcpdump -n -e -ttt -r /var/log/pflog
reading from file /var/log/pflog, link-type PFLOG (OpenBSD pflog file)
00:00:00.000000 rule 4294967295/8(ip-option): pass in on vr0: 10.11.13.6 > 239.100.1.12: igmp query v2 [max resp time 10] [gaddr 239.100.1.12]
01:20:17.826175 rule 4294967295/8(ip-option): pass in on vr0: 10.11.13.6 > 239.99.3.2: igmp query v2 [max resp time 10] [gaddr 239.99.3.2]
00:16:55.202479 rule 4294967295/8(ip-option): pass in on vr0: 10.11.13.6 > 239.99.3.2: igmp query v2 [max resp time 10] [gaddr 239.99.3.2]
00:19:00.812796 rule 4294967295/8(ip-option): pass in on vr0: 10.11.13.6 > 239.100.1.12: igmp query v2 [max resp time 10] [gaddr 239.100.1.12]
00:00:00.995824 rule 4294967295/8(ip-option): pass in on vr0: 10.11.13.6 > 239.100.1.12: igmp query v2 [max resp time 10] [gaddr 239.100.1.12]
00:27:50.413625 rule 4294967295/8(ip-option): pass in on vr0: 10.11.13.6 > 239.100.1.12: igmp query v2 [max resp time 10] [gaddr 239.100.1.12]
00:13:56.537183 rule 4294967295/8(ip-option): pass in on vr0: 10.11.13.6 > 239.100.1.12: igmp query v2 [max resp time 10] [gaddr 239.100.1.12]
13:54:50.406582 rule 4294967295/8(ip-option): pass in on vr0: 89.252.49.14 > 224.0.0.2: igmp leave 224.0.0.252
00:00:00.038068 rule 4294967295/8(ip-option): pass in on vr0: 89.252.49.14 > 224.0.0.2: igmp leave 239.255.255.250
00:00:00.321754 rule 4294967295/8(ip-option): pass in on vr0: 89.252.49.14 > 224.0.0.2: igmp leave 224.0.0.252
00:00:00.031012 rule 4294967295/8(ip-option): pass in on vr0: 89.252.49.14 > 224.0.0.2: igmp leave 239.255.255.250
00:00:11.239184 rule 4294967295/8(ip-option): pass in on vr0: 94.76.110.149 > 224.0.0.2: igmp leave 224.0.0.252
02:19:23.117176 rule 4294967295/8(ip-option): pass in on vr0: 89.252.10.184 > 224.0.0.2: igmp leave 239.255.255.250
00:19:08.363275 rule 4294967295/8(ip-option): pass in on vr0: 10.11.13.6 > 239.100.1.12: igmp query v2 [max resp time 10] [gaddr 239.100.1.12]
00:00:00.999937 rule 4294967295/8(ip-option): pass in on vr0: 10.11.13.6 > 239.100.1.12: igmp query v2 [max resp time 10] [gaddr 239.100.1.12]
00:09:36.907174 rule 4294967295/8(ip-option): pass in on vr0: 89.252.49.39 > 224.0.0.22: igmp v3 report, 1 group record(s)
00:00:05.590748 rule 4294967295/8(ip-option): pass in on vr0: 89.252.49.89 > 224.0.0.2: igmp leave 239.255.255.250
00:00:01.630452 rule 4294967295/8(ip-option): pass in on vr0: 94.76.110.25 > 224.0.0.2: igmp leave 224.0.0.252
00:00:00.032669 rule 4294967295/8(ip-option): pass in on vr0: 94.76.110.25 > 224.0.0.2: igmp leave 224.0.0.252
01:20:28.234439 rule 4294967295/8(ip-option): pass in on vr0: 10.11.13.6 > 239.100.1.12: igmp query v2 [max resp time 10] [gaddr 239.100.1.12]
02:17:11.287066 rule 4294967295/8(ip-option): pass in on vr0: 89.252.49.104 > 224.0.0.22: igmp v3 report, 1 group record(s)
00:00:00.556870 rule 4294967295/8(ip-option): pass in on vr0: 89.252.49.104 > 224.0.0.22: igmp v3 report, 1 group record(s)
00:00:02.422566 rule 4294967295/8(ip-option): pass in on vr0: 89.252.10.4 > 224.0.0.2: igmp leave 239.255.255.250
00:00:06.843025 rule 4294967295/8(ip-option): pass in on vr0: 89.252.49.104 > 224.0.0.22: igmp v3 report, 1 group record(s)
00:01:16.489209 rule 4294967295/8(ip-option): pass in on vr0: 94.76.110.212 > 224.0.0.22: igmp v3 report, 1 group record(s)
00:00:00.851331 rule 4294967295/8(ip-option): pass in on vr0: 94.76.110.212 > 224.0.0.22: igmp v3 report, 1 group record(s)
00:17:30.566447 rule 4294967295/8(ip-option): pass in on vr0: 89.252.49.76 > 224.0.0.2: igmp leave 239.255.255.250
00:00:08.451175 rule 4294967295/8(ip-option): pass in on vr0: 10.11.13.6 > 239.100.1.9: igmp query v2 [max resp time 10] [gaddr 239.100.1.9]
00:00:05.165841 rule 4294967295/8(ip-option): pass in on vr0: 94.76.110.52 > 224.0.0.22: igmp v3 report, 1 group record(s)
00:00:00.860870 rule 4294967295/8(ip-option): pass in on vr0: 94.76.110.52 > 224.0.0.22: igmp v3 report, 1 group record(s)
00:11:04.220383 rule 4294967295/8(ip-option): pass in on vr0: 10.11.13.6 > 239.100.0.3: igmp query v2 [max resp time 10] [gaddr 239.100.0.3]
00:02:05.386893 rule 4294967295/8(ip-option): pass in on vr0: 10.11.13.6 > 239.100.1.12: igmp query v2 [max resp time 10] [gaddr 239.100.1.12]
00:00:00.991751 rule 4294967295/8(ip-option): pass in on vr0: 10.11.13.6 > 239.100.1.12: igmp query v2 [max resp time 10] [gaddr 239.100.1.12]
00:40:26.959332 rule 4294967295/8(ip-option): pass in on vr0: 10.11.13.6 > 239.100.1.12: igmp query v2 [max resp time 10] [gaddr 239.100.1.12]
ткните носом в ошибки, пожалуйста

Re: PF и проброс портов

Добавлено: 2011-03-21 10:16:12
unix-admin

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

rdr on $ext_if proto tcp from any to  $ext_if port 5004 -> 192.168.1.10 5004

Re: PF и проброс портов

Добавлено: 2011-03-21 17:08:33
beeka
к сожалению, такой вариант не прошел тоже... но теперь возникла другая необходимость, пробросить порт 27016 для игрового сервера, который тоже находится в локальной сети, добрые люди подсказали, что конфиг должен иметь примерно такой вид:

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

ext_if="vr0"
int_if="fxp0"
lan="192.168.1.0/24"
server="192.168.1.10"
scrub in all
rdr on $ext_if inet proto udp from any to $ext_if port 27016 -> 192.168.1.10 port 27016
nat on $ext_if from $lan to any -> ($ext_if)
pass in on $ext_if proto udp from any to $server port 27016 keep state
pass out on $int_if proto udp from any to $server port 27016
pass out on $int_if keep state
как бы мне не хотелось и как бы я не крутил конфиг, у меня ничего не получается... несколько дней живу в консоли уже... =(
помогите разобраться, пожалуйста

Re: PF и проброс портов

Добавлено: 2011-03-22 23:37:20
Гость
nat on $ext_if from $lan to any -> ($ext_if)
rdr pass on $ext_if inet proto udp from any to $ext_if (or ip) port 27016 -> 192.168.1.10 port 27016

or
rdr on $ext_if inet proto udp from any to $ext_if (or ip) port 27016 -> 192.168.1.10 port 27016
pass in on $ext_if proto udp from any to $ext_if port 27016 keep state

Учим матчасть

Re: PF и проброс портов

Добавлено: 2011-03-23 13:48:51
beeka
пробовал и так... без успеха =\

Re: PF и проброс портов

Добавлено: 2011-03-23 14:09:09
unix-admin
У ТС какой-то специфичный pf :shock:
У всех работает, а у него "без успеха =\"

Re: PF и проброс портов

Добавлено: 2011-03-23 15:13:50
beeka
я тоже диву даюсь... как так, епт
net.inet.ip.forwarding=1 добавил в sysctl.conf, в rc.conf gateway_enable="YES" дописал тоже... может еще какие-то нюансы есть ?

Re: PF и проброс портов

Добавлено: 2011-03-23 15:17:17
beeka
могу дать доступ по ssh тому, кто может разобраться и кому не лень помочь новичку в данной проблеме... помогите, а ? :)

Re: PF и проброс портов

Добавлено: 2011-03-28 17:27:02
beeka
в общем нашел я пакет rinetd и попытался через него пробросить порт на внутренний фтп, лог фтп клиента пишет, что подключение осуществляется с адреса 192.168.1.1 но не заходит на фтп, мазила пишет, что не может установить соединение...

вот такие "правила" в конфиге пф:

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

ee /etc/pf.conf

ext_if="vr0"
int_if="fxp0"

lan="192.168.1.0/24"
ext_ip="188.231.218.186/32"
server="192.168.1.10/32"

ports="{ 21, 22, 25, 80, 27016, 27015, 27005 }"

set skip on lo0
scrub in all

nat on $ext_if inet from $lan to any -> $ext_if

pass in on $int_if proto tcp from any to $server
pass out on $int_if proto tcp from $server to any

pass in on $ext_if proto tcp from any to any
pass out on $ext_if proto tcp from any to any 
ммм... как быть ?