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

Настройка VPN сервера.

Добавлено: 19 фев 2008, 17:58
potlaty
Имеется локальная сеть(ip - 192.168.0.1/150).
Имеется ADSL модем(ip - 192.168.0.100).
Модем, который просто врубается в свич и те у кого установлены настройки(Основной шлюз: ip модема; 2 DNS) имеют доступ в интернет. То есть как только включается комп тут же есть выход в интернет без всяких подключений. В связи с тем, что такой интернет достаточно тяжело держать под контролем, я решил поставить сервер и предоставлять пользователям инетрнет через VPN. Первоначально изменил ip в сети на 192.168.1.1/150.

Сервер:
Intel Celeron 1200, 128MB.
Linux Debian Etch (4.0r0)
2 интерфейса:
  • eth1 (смотрит в сеть):
    • ip: 192.168.1.1
      netmask: 255.255.255.0
    eth2 (подключен к ADSL модему):
    • ip: 192.168.0.1
      netmask: 255.255.255.0
      gateway: 192.168.0.100
DNS прописаны, те которые дал провайдер
Теперь сервер без проблем видит инет и сеть.

Поднимаю pptpd. В первоначальном(тот который в example) \etc\pptpd.conf раскоментил 2 строчки:
localip 10.8.0.1
remoteip 10.8.0.2-150

Если я правильно понимаю то теперь при VPN подключении клиента ему будет выдаваться ip из пространства 10.8.0.2-150, а сервер в этой подсети будет иметь ip 10.8.0.1.

Затем -> # /etc/init.d/pptpd restart
Потом -> # echo "client pptpd 11111 *" >> /etc/ppp/chap-secrets
Ставлю iproute -> # apt-get install iproute

После этого запускаю следующий скрипт nat.sh:
  • echo 1 > /proc/sys/net/ipv4/ip_forward
    #ip сервера на eth2
    INET_IP=192.168.0.1
    #ip модема
    INET_GW=192.168.0.100
    iptables -t nat -A POSTROUTING --source 10.8.0.2/150 -o eth2 -j SNAT --to-source $INET_IP
    ip route add default via $INET_GW dev eth2 table inet
Без проблем запусается и в таблицах iproute и iptables появляются соответствующие записи.

Клиент:
Создаю стандартное VPN подключение(ip сервера 192.168.1.1), убираю шифрование, ввожу Логин: client, Пароль: 11111. Соединяется с сервером, всё норм(правда иногда бывает замыкание на себя, приходится пересоединятся), НО клиент интернета не видит.

На сервере: # ifconfig
Появилось ppp0, соединение с клиентом.

У клиента: Пуск - Выполнить - cmd - ipconfig:
  • Адаптер Ethernet Подключение по локальной сети:
    IP-адрес............: 192.168.1.7
    Маска подсети...: 255.255.255.0
    Основной шлюз..:

    PPP подключение через VPN:
    IP-адрес............: 10.8.0.2
    Маска подсети...: 255.255.255.255
    Основной шлюз..: 10.8.0.2
Не могу понять почему не работает.
Я так понимаю если есть задумки по поводу контроля трафика и простейшему билингу, то тут уже нужно смотреть в сторону ABills или чего-то подобного?

Заранее спасибо.

Добавлено: 19 фев 2008, 18:12
Hermit
а что такое 192.168.0.1/150 и 10.8.0.2/150 ???

Добавлено: 19 фев 2008, 18:17
potlaty
Hermit писал(а):а что такое 192.168.0.1/150 и 10.8.0.2/150 ???
В локальной сети ip компьютеров из пространства от 192.168.0.1 до 192.168.0.150.
В скрипте 10.8.0.2/150 это правило(что если ip из этого пространство то делаем действие). Пробовал вместо 10.8.0.2/150 писать просто 10.8.0.2 и подрубать одного клиента, но всё равно не работает.

Добавлено: 19 фев 2008, 18:25
Hermit
potlaty писал(а):
Hermit писал(а):а что такое 192.168.0.1/150 и 10.8.0.2/150 ???
В локальной сети ip компьютеров из пространства от 192.168.0.1 до 192.168.0.150.
В скрипте 10.8.0.2/150 это правило(что если ip из этого пространство то делаем действие). Пробовал вместо 10.8.0.2/150 писать просто 10.8.0.2 и подрубать одного клиента, но всё равно не работает.
Счетчики по правилу увеличиваются? (iptables -t nat -nvL )

и попробуй в скрипте написать

iptables -t nat -A POSTROUTING --source 10.8.0.0/24 -o eth2 -j SNAT --to-source $INET_IP

Добавлено: 19 фев 2008, 18:33
potlaty
Hermit писал(а): Счетчики по правилу увеличиваются? (iptables -t nat -nvL )
Прости, не совсем понимаю вопрос, у меня не сильно большой опыт использования iptables.
Ещё дело в том, что к серверу у меня не всегда доступ есть. Мне бы хотелось по возможности узнать что в моей цепочке действий может быть неверного и я бы, когда будет доступ могу взять логи и попробовать разные варианты, которые вы предложите.

Добавлено: 19 фев 2008, 18:57
leave
iptables -t nat -A POSTROUTING --source 10.8.0.2/150 -o eth2 -j SNAT --to-source $INET_IP
эта строчка у тебя в жизни не заработает. по причине того, что через слеш пишется маска подсети, а не конечный айпишник диапазона.

[offtopic mode]
и - мой тебе совет - не следуй примеру наших провайдеров, делай обычный NAT и ставь NetAMS (для простого контроля MRTG можно заюзать). Так ИМХО намного проще и приятнее для конечного юзера.
[/offtopic mode]

Добавлено: 19 фев 2008, 18:59
potlaty
так я вместо 10.8.0.2/150 писал 10.8.0.2, тоже не помогло.

Добавлено: 19 фев 2008, 19:19
Llama
http://www.linux.by/wiki/index.php/Debi ... 0.B2.D1.8B

НУ и настройки сети на клиент до поднятия и после него тоже крайне желательно показывать.

Добавлено: 19 фев 2008, 19:27
potlaty
Llama писал(а): НУ и настройки сети на клиент до поднятия и после него тоже крайне желательно показывать.
Я же вывел Пуск - Выполнить - cmd - ipconfig.
Или реч идёт о каких-то других настройках?

Добавлено: 19 фев 2008, 19:33
Llama
ага, не заметил.
Тогда вопрос нумер 1: почему клиент роутится сам на себя? :) Наверное надо ему сказать чобы роутился через 0.1
Про iptables уже написали выше...

Добавлено: 19 фев 2008, 19:47
potlaty
Просто, когда я дома подключаю инет(обычная домашняя сеть, в которой стоит модем Белинфонета), ipconfig выводит что ip совпадает с gateway:

Адаптер ADSL:
  • IP-адрес.............: 81.25.41.196
    Маска подсети....: 255.255.255.255
    Основной шлюз...: 81.25.41.196
Я долго искал, где менять настройки сети клиента, вроде нашёл, что в \etc\ppp\pptpd.options
Но всё-равно таже ситуация. Может они меняются в другом месте?

Добавлено: 20 фев 2008, 12:43
Hermit
Llama писал(а):Тогда вопрос нумер 1: почему клиент роутится сам на себя? Наверное надо ему сказать чобы роутился через 0.1
Про iptables уже написали выше...
для pointtopoint интерфейсов роут на ip нормально, на самом деле там вообще ip не нужен, достаточно указать интерфейс.


potlaty писал(а):
Hermit писал(а):а что такое 192.168.0.1/150 и 10.8.0.2/150 ???
В локальной сети ip компьютеров из пространства от 192.168.0.1 до 192.168.0.150.
В скрипте 10.8.0.2/150 это правило(что если ip из этого пространство то делаем действие). Пробовал вместо 10.8.0.2/150 писать просто 10.8.0.2 и подрубать одного клиента, но всё равно не работает.
Удалялось ли при этом старое правило?
был ли при этом клиент подулючен именно с адресом 0.2?

Судя по выводу ipconfig прописаны ли у клиента DNS серверы, если нет, выдаются ли они при подключении по pptp?
есть ли интернет на самом сервере?

Чтобы точно сказать в чем проблема кидай сюда вывод
ifconfig
iptables -nvL
iptables -t nat -nvL
cat /proc/sys/net/ipv4/ip_forward


и ipconfig /all на клиенте

Добавлено: 21 фев 2008, 20:20
potlaty
Раньше, когда модем просто врубали в свич, то для того чтобы комп видел интернет, необходимо было в настройках сети прописать следующее:
  • Основной шлюз ........... 192.168.0.100 (ip модема)
    Предпочетаемый DNS .. 212.98.160.50
    Альтернативный DNS ... 212.98.160.65
И вчера на серваке я сделал следующее:

1) Добавил в /etc/ppp/options.pptpd:
ms-dns 212.98.160.50
ms-dns 212.98.160.65
#Как сказано в описании ms-dns эти строчки соответственно присвоят клиенту 2 DNS.

2) iptables -t nat -F POSTROUTING
Теперь при вызове следующих команд таблицы пусты:
iptables -t nat -L POSTRUTING
ip route list table inet

3) /etc/init.d/pptpd restart

4) запускаю nat.sh следующего содержания:
  • echo 1 > /proc/sys/net/ipv4/ip_forward
    #ip сервера на eth2
    INET_IP=192.168.0.1
    #ip модема
    INET_GW=192.168.0.100
    iptables -t nat -A POSTROUTING --source 10.8.0.0/24 -o eth2 -j SNAT --to-source $INET_IP
    ip route add default via $INET_GW dev eth2 table inet
Клиент конектится нормально, пингует все сайты, но при запуске браузера пишет: "Узел найден, идёт загрузка" и ступор, никакой сайт грузить не хочет, КРОМЕ google.com, gmail.com, с этими сайтами всё замечательно, всё грузится, поиск норм, в почту тоже хорошо заходит и качает с почты файлы с нормальной скоростью. Но не могу понять почему только эти ресурсы? Может кто знает?

Вывод команд на серваке:
ifconfig при 1 клиенте
*http://potlaty.narod.ru/linux/ifconfig1.txt
ifconfig при 3-х клиентах
*http://potlaty.narod.ru/linux/ifconfig3.txt
iptables -nvL
*http://potlaty.narod.ru/linux/iptables_nvL.txt
iptables -t nat -nvL
*http://potlaty.narod.ru/linux/iptables_nat_nvL.txt
cat /proc/sys/net/ipv4/ip_forward
*http://potlaty.narod.ru/linux/ip_forward.txt

Клиент:
cmd -> ipconfig /all
  • Подключение по локальной сети
    Ip-адрес .................... 192.168.1.7
    Маска подсети ........... 255.255.255.0
    Internet-PPP адаптер
    DNS-суффикс ..................................
    Описание WAN(PPP/SLIP) Interface
    Ip-адрес .................... 10.8.0.2
    Маска подсети ........... 255.255.255.255
    Основной шлюз ......... 10.8.0.2
    DNS-серверы............. 212.98.160.50
    .................................. 212.98.160.65

Добавлено: 21 фев 2008, 20:44
Hermit
potlaty, похоже на проблемы с mtu. Попробуйте в файле, который прописан в параметре option pptpd.conf прописать mtu для pppd:
mtu 1450

А вообще, имхо нат настраивать необязательно на самом сервере, на нем можно настроить маршрутизацию, а на модеме прописать маршрут через ip сервера на сеть 10.8.0.0/24. В твоей схеме нат происходит 2 раза: первый раз на сервере, потом на модеме.