Hi,Кто сталкивался с проблемой доступа из Интернета к корпоративному VPN серверу (WinServer2003), который находится за натом. NAT организован средствами PF.
В правилах есть разрешение на доступ к серверу ВПН
rdr pass on $ext_if inet proto tcp from any to $ext_if port 1723 -> $vpn_serv 1723
Правила для NATnat on $ext_if tag INET tagged INET -> $ext_if
pass out quick on $ext_if inet tagged INET
pass in quick on $int_if from $lan to any tag INET
В логах ВПН сервера следующее. Говорит что мол gre не проходит.
Description:
A connection between the VPN server and the VPN client xxx.xxx.xxx.xxx has been established, but the VPN connection cannot be completed. The most common cause for this is that a firewall or router between the VPN server and the VPN client is not configured to allow Generic Routing Encapsulation (GRE) packets (protocol 47). Verify that the firewalls and routers between your VPN server and the Internet allow GRE packets. Make sure the firewalls and routers on the user's network are also configured to allow GRE packets. If the problem persists, have the user contact the Internet service provider (ISP) to determine whether the ISP might be blocking GRE packets.
Вобщем нужна помощь.
Заранее благодарю.
>[оверквотинг удален]
>
> nat on $ext_if tag INET tagged INET -> $ext_if
>
> pass out quick on $ext_if inet tagged INET
>
> pass in quick on $int_if from $lan to any
>tag INET
>
> В логах ВПН сервера следующее. Говорит что мол gre не
>проходит.Конечно не пройдет - в правилах он у вас не прописан.
>[оверквотинг удален]
>>
>> pass out quick on $ext_if inet tagged INET
>>
>> pass in quick on $int_if from $lan to any
>>tag INET
>>
>> В логах ВПН сервера следующее. Говорит что мол gre не
>>проходит.
>
>Конечно не пройдет - в правилах он у вас не прописан.Почему не прописан?
pass in quick on $int_if from $lan to any - разве это конкретизирует протокол? здесь разрешено все. Или где я не прав?
>[оверквотинг удален]
>>>
>>> В логах ВПН сервера следующее. Говорит что мол gre не
>>>проходит.
>>
>>Конечно не пройдет - в правилах он у вас не прописан.
>
> Почему не прописан?
> pass in quick on $int_if from $lan to any -
>разве это конкретизирует протокол? здесь разрешено все. Или где я не
>прав?Ну да! Этим правилом вы разрешаете пакеты любого протокола приходящие на внутренний интерфейс шлюза. А что делать пакетам GRE приходящим из мира?
>[оверквотинг удален]
>>>
>>>Конечно не пройдет - в правилах он у вас не прописан.
>>
>> Почему не прописан?
>> pass in quick on $int_if from $lan to any -
>>разве это конкретизирует протокол? здесь разрешено все. Или где я не
>>прав?
>
>Ну да! Этим правилом вы разрешаете пакеты любого протокола приходящие на внутренний
>интерфейс шлюза. А что делать пакетам GRE приходящим из мира?Интересно. Например если я подымаю mpd на машине, непосредсвенно подключенной к Инету,
то хватает только 2 правила:1- разрешить входящее ТСР на 1723 и исходящий gre с внешнего интерфейса.Хорошо, подскажите что мне поправить в моем случае?
>[оверквотинг удален]
>>
>>Ну да! Этим правилом вы разрешаете пакеты любого протокола приходящие на внутренний
>>интерфейс шлюза. А что делать пакетам GRE приходящим из мира?
>
> Интересно. Например если я подымаю mpd на машине, непосредсвенно подключенной
>к Инету,
> то хватает только 2 правила:1- разрешить входящее ТСР на 1723 и
>исходящий gre с внешнего интерфейса.
>
> Хорошо, подскажите что мне поправить в моем случае?Управляющий канал вы на внутрений хост перекидываете, а пакеты gre то же надо перенаправлять, например, так:
rdr pass on $ext_if inet proto gre from any to $ext_if -> $vpn_serv
>[оверквотинг удален]
>>к Инету,
>> то хватает только 2 правила:1- разрешить входящее ТСР на 1723 и
>>исходящий gre с внешнего интерфейса.
>>
>> Хорошо, подскажите что мне поправить в моем случае?
>
>Управляющий канал вы на внутрений хост перекидываете, а пакеты gre то же
>надо перенаправлять, например, так:
>
>rdr pass on $ext_if inet proto gre from any to $ext_if -> $vpn_servСпасибо, заработало.
rdr on $ext_if inet proto tcp from any to $ext_if port 1723 -> $vpn_servpass in on $ext_if inet proto tcp from any to $vpn_serv port 1723