Всем привет.Такая проблема. Есть локальная сеть, где несколько пользователей через NAT "заворачиваются" на реальные адреса. Все прекрасно работает - пакетики ходят, как надо... кроме одной вещи. Один из клиентов не может
законнектиться по VPN на удаленный хост. Почему - не могу понять до сих пор.Вот строки из конфигов:
************ /etc/rc.firewall
${fw} add 10030 divert 8668 all from 10.101.4.2 to not ${intranet}
${fw} add 10030 divert 8668 all from not ${intranet} to 195.20.96.108************ natd.conf
use_sockets
same_ports
port 8668
alias_address 195.20.96.108Адрес 195.20.96.108 висит на loopback-интерфейсе. Игра "добавить-убрать" use_sockets и same_ports ничего не дала.
Если клиент дозванивается по обычному телефону к любому провайдеру, то все чудесно работает...Помогите советом! Заранее спасибо!
З.Ы. Доступа к удаленному хосту у меня, естественно, нет.
Если не ошибаюсь, то нат должен быть NAT-T по RFC 3193. Только тогда возможна работа по впн
>Если не ошибаюсь, то нат должен быть NAT-T по RFC 3193.
>Только тогда возможна работа по впн
покажи правила фаервола
должно быть разрешение по GRE
должно быть разрешение на коннект на 1723 сервера VPN
хотя это все касательно PPTP
>покажи правила фаервола
>должно быть разрешение по GRE
>должно быть разрешение на коннект на 1723 сервера VPN
>хотя это все касательно PPTPПоказываю:
${fw} add 1 allow all from any to any via lo0
${fw} add 10030 divert 8668 all from 10.101.4.2 to not ${intranet}
${fw} add 10030 divert 8668 all from not ${intranet} to 195.20.96.108
${fw} add 10052 allow all from any to 10.101.4.2
${fw} add 10052 allow all from 10.101.4.2 to any
${fw} add 65000 deny all from any to anyздесь intranet=10.0.0.1/8
В принипе, все, касающееся машины 10.101.4.2, которая натится на реальный ай-пи.
gre поднимается как псевдо-девайс у меня и клиент натится не через lo0 или внешний интерфейс, а именно через gre0? Так, что ли?
Если можно, пример настройки, плз... :\
${fw} add 2 pass gre from any to any
>${fw} add 2 pass gre from any to any
И что?
А девайсы gre0?
10.101.4.2 внутренний узел
195.20.96.108 внешний узел
что-то не въеду в правила${fw} add 1 allow all from any to any via lo0
${fw} add 10030 divert 8668 all from 10.101.4.2 to not ${intranet}
${fw} add 10030 divert 8668 all from not ${intranet} to 195.20.96.108
Эти два правила, исключительно для внтуреннего инерфейса!
${fw} add 10052 allow all from any to 10.101.4.2
${fw} add 10052 allow all from 10.101.4.2 to any
Ты пропустил все через внутренний интерфейс.а где правила для внешнего интерфейса????!
А где что ты пропускаешь через внешний интерфейс${fw} add 65000 deny all from any to any
У тебя вообще машина 10.101.4.2 может в инет выходить?
>10.101.4.2 внутренний узел
>195.20.96.108 внешний узел
>что-то не въеду в правила
>
>${fw} add 1 allow all from any to any via lo0
>${fw} add 10030 divert 8668 all from 10.101.4.2 to not ${intranet}
>${fw} add 10030 divert 8668 all from not ${intranet} to 195.20.96.108
>
>
>Эти два правила, исключительно для внтуреннего инерфейса!
>${fw} add 10052 allow all from any to 10.101.4.2
>${fw} add 10052 allow all from 10.101.4.2 to any
>Ты пропустил все через внутренний интерфейс.
>
>а где правила для внешнего интерфейса????!
>А где что ты пропускаешь через внешний интерфейс
>
>${fw} add 65000 deny all from any to any
>
>У тебя вообще машина 10.101.4.2 может в инет выходить?************ ifconfig
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 10.101.41.254 netmask 0xffffff00 broadcast 10.101.41.255
ether 00:00:1c:d3:7b:da
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 10.101.4.254 netmask 0xffffff00 broadcast 10.101.4.255
ether 00:00:1c:d3:6c:dc
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
rl2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 195.20.96.118 netmask 0xfffffffc broadcast 195.20.96.119
ether 00:00:1c:d3:83:8e
media: Ethernet autoselect (10baseT/UTP)
status: active
lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
inet 10.255.41.1 netmask 0xffff0000
inet 10.255.4.1 netmask 0xffff0000
inet 195.20.96.108 netmask 0xffffffff
inet 195.20.96.109 netmask 0xffffffff
inet 195.20.96.110 netmask 0xffffffffмашина 10.101.4.2 без проблем выходит в инет и пингует инетовские сервера.
Интересный ты человек. ты показываешь часть правил умалчивая про остальные, а у самого три интерфейса на машин, и что ты хочешь тогда?
И о чем нам говорит ifconfig?
>Интересный ты человек. ты показываешь часть правил умалчивая про остальные, а у
>самого три интерфейса на машин, и что ты хочешь тогда?
>И о чем нам говорит ifconfig?Ну и что, что там 3 интерфейса? Давай сделаем allow all from any to any + divert - все равно не работает...
Мне показалось, что я достаточно подробно описал проблему... :\
На кой тебе gre девайсы на этой машине, когда нужно просто пропустить пакеты определенного типа ?
Нужен собственно только разрешенный транспорт для pptp aka gre-тунель.
>На кой тебе gre девайсы на этой машине, когда нужно просто пропустить
>пакеты определенного типа ?
>Нужен собственно только разрешенный транспорт для pptp aka gre-тунель.УРА! Я рад. :) Что не нужны...
Как его сделать - этот транспорт?!
gre-туннель и делается через pseudo-device gre... Или я не прав?Либо с помощью программки gre-tunnel. Как ее правильно сконфигурировать?
да... А если там не pptp? А l2tp?
>Если не ошибаюсь, то нат должен быть NAT-T по RFC 3193.
>Только тогда возможна работа по впнСутя по всему, что FreeBSD 4.8-STABLE natd не такой... Вопрос: где взять такой?
Если я не ошибаюсь, то такая связка вообще не заработает, так как человек работает с удаленной машиной через NAT. А НАТ делает изменения в пакете, и данный пакет никогда не сможет пройти проверку безопасности на удаленной машине.
Можно попробовать по извращаться, но скорее всего данные попытки закончиться неудачей.
>Если я не ошибаюсь, то такая связка вообще не заработает, так как
>человек работает с удаленной машиной через NAT. А НАТ делает изменения
>в пакете, и данный пакет никогда не сможет пройти проверку безопасности
>на удаленной машине.
>Можно попробовать по извращаться, но скорее всего данные попытки закончиться неудачей.
>хех... Это я уже понял. Предложения вместо NAT?
User Server (running NATD) +----------+ VPN Server
* ------------> * -----------| Internet |-----x----> *
10.101.4.2 10.101.4.254 +----------+
195.20.96.118Такая вот схема... Как заставить ее работать? Альтернативы NAT, с которыми работает VPN?
Не понятно в чем вопрос pptp работает с сетью с любой стороны, хоть клиент впн находится за нат в локальной сети и коннектится с сервером в инете, хоть клиент находится в инете и коннектится на впн сервер и попадает в локальную сеть
Через FreeBSD natd пробывал - не получалось подключить Firewall-1 VPN килента, проблемы с IP адресами (как я понял - IP отправительской маишны не равен IP с которой получен пакет). Выход: знакомый ставил клиента на FreeBSD и локально регулировал кому можно выходить, а кому нет. Надеюсь мысль ясна. Удачи!
>Через FreeBSD natd пробывал - не получалось подключить Firewall-1 VPN килента, проблемы
>с IP адресами (как я понял - IP отправительской маишны не
>равен IP с которой получен пакет). Выход: знакомый ставил клиента на
>FreeBSD и локально регулировал кому можно выходить, а кому нет. Надеюсь
>мысль ясна. Удачи!
Единственное решение, которое я нашел, прописать в natd.conf:
redirect_address <ip1> <ip2>
где ip1 - ip windows-машины в локальной сети с сервером vpn,
ip2 - внешний ip freebsd-машины, смотрящий в инетправила для файрвола те же, что указывали выше
Но при таком варианте, если freebsd является файрволом, то windows-машина оказывается открыта в инет.
Илья.
У меня VPN через NAT так и не пошел. Во FreeBSD я эту проблему так и не решил. В Linux (а точнее в iptables) давно ведутся работы над этим ( http://www.iptables.org/documentation/pomlist/pom-extra.html... ) , но до релиза так и не дошло. Также в Linux есть экспериментальный пакет pptpproxy которым я и пользуюсь сейчас. Ради хохмы попробовал его собрать под FreeBSD, естественно не получилось.