не работают перенаправления портов RDR-TO на 4.7

Поставил недавно на рабочий роутер опёнка 4.7 (x86). Перед этим на тестовом стенде проверил его на необходимый мне функционал (имею ввиду отличия PF от версии, что идет в опёнке 4.6). Всё проверил, забыл только проверить работу редиректа.

Дак и выяснилось, что не хотят работать правила перенаправления портов. Раньше не было проще задачи, чем перенаправить с одного из портов внешнего сестевого интерфейса на порт внутреннего интерфейса или на порт компьютера в локальной сети за роутером.

вот например такое правило:

ext_if="tun0" (подключение к провайдеру по pptp, поэтому внешним интерфейсом стал tun0)
comp2="192.168.0.2" (комп. в локалке за роутером)

pass in on $ext_if proto tcp from any to any port 5000 rdr-to $comp2 port 80

pass quick all

Уж я уварьировался, но никак не хочет работать это правило.
Другое правило:
Хочу чтоб из локальной сети можно было соединяться с Mysql сервером, запущенном на lo0 интерфейсе моего роутера.

pass in on $int_if proto tcp from to any port 3306 rdr-to 127.0.0.1 port 3306

pass quick all

и тоже не работает. Конфиг PF загружается нормально, ошибок не выдаёт. То, что сервер Mysql работает на 127.0.0.1:3306 исправно - это факт.

Больше года уже работаю с opebnsd ОС, много мануалов прочитал, несколько рабочих конфигураций сделал, но тут почувствовал себя полным тупорезом. Это, наверное, такой подарок от создателей Openbsd, чтобы, так сказать, жизнь мёдом не казалась.

Господа, если кто-нибудь знает, в чём тут грабли, посоветуйте пожалуйста решение.

Аватар пользователя Devon

Откуда проверяете?

Я когда только начал опенка исследовать столкнулся с граблями на редирктах.

http://www.obsd.ru/8/?q=node/1712

Аватар пользователя taras5

Я прочитал

Я прочитал тему, ссылку на которую вы привели выше. Проблема похожая (если не одна и та же). Тестировал и из локалки, и из интернета. Результат один - глухо как в танке. Дело в том, что раньше, во времена моего изучения openbsd 4.2-4.6 я мог сделать правило перенаправления портов что бы из локальной сети соединиться с сервисом, запущенным на loopback (lo0) интерфейсе опёнка. Теперь мне пришлось ту же mysql заставить работать на одном из адресов внутреннего интерфейса (того, который "смотрит" в локальную сеть). Редирект так и не получилось у меня настроить. По правде говоря, возможно это из-за того что я не использую самую последнюю версию опёнка (последнюю в смысле не current).

Пугает то, что вещи, которые без проблем работали ещё в опёнке 4.6 - сейчас совсем несовсем (или очень не очень) )))

До сих пор не могу только вкурить: на кой чёрт все эти муки с опёнком? и зачем его разработчики меняют годами работавший синтаксис своего знаменитого пакетного фильтра? (ладно, меняйте внутреннее устройство, но приемственность синтаксиса от версии ОС к версии наверно должна оставаться)

Хотя за поддержку кириллицы - им огромный РЕСПЕКТ!

Аватар пользователя Devon

Вот так например у меня отлично работает

Только что вот таким правилом проверил.

pass in on $ext_if inet proto tcp from any to any port 5005 rdr-to 127.0.0.1 port 22

Лично у меня все работает.

Аватар пользователя taras5

Да, кстати, у

Да, кстати, у меня тоже заработало похожее правило (пришлось только дописать quick после pass)

Но как тогда пробросить входящее соединение из интернета на компьютер в локальной сети?

допустим, хочу соединиться с точкой доступа, которая прямо за внутренним интерфейсом роутера находится, пишу правило, применяю его, но ответа нет:

а tcpdump выдаёт, что нужное мне подключение дошло до адресочка точки доступа

inet-host123.city.ru.53532 > 192.168.200.150.www: S 3215562443:3215562443(0) win 8192

но потом повторяются подряд попытки

arp who-has inet-host123.city.ru tell 192.168.200.150

где 192.168.200.150 - это и есть точка доступа за роутером (соединена с ним витой парой)

на кой вообще ARP тут нужен?
зачем физ адрес для " inet-host123.city.ru" понадобился?

точка доступа его всё равно ведь не узнает! я ж в интернете сижу, а не в локальной сети.

да, кстати, inet-host123.city.ru - это мой компьютер в интернете.

Подскажите, господа, почему не получается соединиться с точкой доступа?

Аватар пользователя Devon

>> Да, кстати, у

>> Да, кстати, у меня тоже заработало похожее правило (пришлось только дописать quick после pass)

Значит дальше где-то что-то рубится.

>> Но как тогда пробросить входящее соединение из интернета на компьютер в локальной сети?

pass in on $ext_if proto { tcp, udp } from any to $ext_if port $redir_ports rdr-to $winserver
Вот такое правило у меня прямо сейчас реально работает.

Аватар пользователя BABUT

..и в самом деле,

..и в самом деле, зачем?

зы: использование tag-tagged позволяет немного абстрагироваться от. забудте о мифическом дефолтном pass all, ставте первым block log(all) all и наблюдайте. в приведённом примере в первое правило следует добавить quick, в противном случае оно не сработает(срабатывает последнее подходящее), или же использовать match in bla-bla

Аватар пользователя taras5

По-правде

По-правде говоря, после замены openbsd 4.7 на 4.8 перенаправление портов в pf заработало. "Ух ты! Вот это чудеса" - сказал я себе

Аватар пользователя cade

RDR

Попробуй:
int_if="bge0"
ext_if="rl0"

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

pass in quick on $int_if from any to any
pass out quick keep state

block in on $ext_if proto udp from any to $ext_if
block in on $ext_if proto tcp from any to $ext_if

Аватар пользователя BABUT

как

как последовательный пользователь диапазона версий 37-current уверен- вы лукавите. в логике приведённого примера
pass in on $ext_if proto tcp from any to any port 5000 rdr-to $comp2 port 80
pass quick all
от смены версии с 47 на 48 не изменится ничего, т.е. редирект работать не будет и не должен

зы: ходатательствую о награждении участника cade медалью "совет в тему"

Аватар пользователя taras5

))) буквально

)))

буквально правило пишется так:

pass in quick on $ext_if inet proto tcp from any to ($ext_if:0) port 5000 rdr-to $comp2 port 80

Я действительно скопировал старый конфиг PF с 4.7 на 4.8.
Важно то, что на 4.8 перенаправление портов работает именно так, как написано в man pf.conf, чего про 4.7 сказать не могу. Кстати, ОС была вроде не current, а та, которая stable. Я только такими пользуюсь.(другими - не умею)