Здравствуйте.
Есть серая сетка с NAT и шлюз на FreeBSD 10.2. Надо настроить доступ из неё наружу, к внешним сетям VPN (PPTP), более чем одному пользователю одновременно.
То, есть нужно пробросить протокол GRE и TCP/1723.
Раньше делал это на IPFW, но на новом шлюзе уговорили поставить PF - типа он гибче. Вышел облом...Оказывается этот хвалёный PF не дружит с GRE и с ещё некоторыми вещами - надо прикручивать сбоку костыль в виде IPFW с каким-то скриптом. Выглядит это гадко... Знал бы заранее - поставил бы IPFW и не парился.
Но, все эти заметки старые, им уже несколько лет - может быть PF уже доработали и я топчусь на ровном месте и просто не разобрался?Как в итоге пробросить VPN малой кровью?
(PPTP и L2TP до кучи)
тут недавно подымали эту тему, гляньте ссылки http://www.opennet.me/openforum/vsluhforumID1/96393.html#2
Видел, но по-моему там нет решения... если не углядел - поправьте.
> Видел, но по-моему там нет решения... если не углядел - поправьте.где ваши правила PF? в студию их
Правила на работе. По памяти что-то вроде этого:
pass quick on $ext_if inet proto tcp from any to any port 1723
pass quick on $ext_if inet proto tcp from any port 1723 to any
pass quick on $ext_if inet proto gre from any to anyНаписал ЭТО только для того, чтобы показать, что ни редиректов, ни таблиц, ни других заморочек не применял - только открыл 1723 и разрешил GRE напрополую. Всё.
Завтра скину то, что на самом деле, но особой разницы там не будет. Пока не скинул, коротко - можно VPN c GRE через PF пробросить или нет? Спрашиваю потому, что везде писали, что если и можно, то не более одного соединения одновременно.
>[оверквотинг удален]
> pass quick on $ext_if inet proto tcp from any port 1723 to
> any
> pass quick on $ext_if inet proto gre from any to any
> Написал ЭТО только для того, чтобы показать, что ни редиректов, ни таблиц,
> ни других заморочек не применял - только открыл 1723 и разрешил
> GRE напрополую. Всё.
> Завтра скину то, что на самом деле, но особой разницы там не
> будет. Пока не скинул, коротко - можно VPN c GRE через
> PF пробросить или нет? Спрашиваю потому, что везде писали, что если
> и можно, то не более одного соединения одновременно.Может вот это поможет?
http://bezopasnik.org/unix/dok/FreeBSD/dok/675.htm
> Раньше делал это на IPFW, но на новом шлюзе уговорили поставить PF
> - типа он гибче. Вышел облом...а что мешает обратно поставить ipfw?
> а что мешает обратно поставить ipfw?Пожалуйста, не надо уводить в сторону :)
Я спросил про PF.
>> а что мешает обратно поставить ipfw?
> Пожалуйста, не надо уводить в сторону :)
> Я спросил про PF.так вам шашечки или таки ехать ;)
https://www.opennet.me/tips/2245_pf_firewall_ipfw_freebsd.shtml
видел, я про эту статью и писал, что выглядит жутко - костыль...
> видел, я про эту статью и писал, что выглядит жутко - костыль...VPN сервер завести на самом шлюзе и ничего прокидывать не придется?
Я спрашивал про доступ к внешним VPN-сетям из локалки наружу. Свой VPN мне ни заводить ни прокидывать не надо.
> Я спрашивал про доступ к внешним VPN-сетям из локалки наружу. Свой VPN
> мне ни заводить ни прокидывать не надо.Хорошо, подними на шлюзе vpn клиента, который будет подключаться к необходимому vpn шлюзу.
Я просто не в курсе, pf реально не пропускает vpn подключение от клиентской машины наружу?
Теоретически пропускает, но грабли с одним из видов VPN - с PPTP, а точнее с протоколом GRE, который в нём используется. Ещё точнее - проблемы с NAT для GRE, насколько я понял. Приляпывать IPFW сбоку - ни за что.
Для себя тему PF я закрыл - он только для поиграться.
> Как в итоге пробросить VPN малой кровью?
> (PPTP и L2TP до кучи)Если l2tp без ipsec, то должно натится и так, там же udp.
В случае pptp проблема не в натировании gre, а в правке CallingStationID в управляющем tcp соединении. Сам pf такого не умеет, но контрольный линк можно завернуть в прокси, например frickin, который будет делать это сам. Из портов его выкосили, но можно взять в сети.
PF никогда не умел в ALG (Application Layer Gateway). Без него вы поимеете проблемы с натом следующего трафика:
-активным FTP
-PPTP
-SIP
-IRC DCC (не думаю что это кому-то сейчас нужно правда..)Самый простой способ решения проблемы - миграция на ipfw (или Linux :))