Настройка VPN на Linux


Tema47

Рекомендуемые сообщения

подскажите пожалуйста можно ли в нашей сети настроить интернет на Linux Ubuntu

если да скиньте гайдик какой нибудь

заранее благодарю

Ссылка на комментарий
Поделиться на другие сайты

Источник: http://linux.netbynet.ru/node/3

 

 

Настройка VPN (Virtual Private Nightmare) в Linux.

 

Итак, вы завели у себя дома или на работе пингвина и хотите вывести его в свет, т.е. в Интернет. Однако ни один дистрибутив не настроен, чтобы подключаться к Интернету с помощью локальной сети через VPN. С локальной сетью как правило проблем не возникает, а вот настроить VPN не такая простая задача. Но это только на первый взгляд, на самом деле всё просто.

Итак, наш план действий:

 

1. Установить последнюю версию демона pppd - необходима версия >= 2.4.2, но в этой версии был один неприятный баг, который исправили в версии 2.4.3. Проверить её можно набрав в консоли rpm -qi ppp, если у вас rpm-based дистрибутив или командой /usr/sbin/pppd --version от имени root'а.

2. Установить pptp-client. Эта программа также чаще всего не бывает включена в дистрибутив.

3.Настроить всё это дело.

 

Все необходимые программы есть в локальной сети, так что Интернет вам не понадобится. Итак, приступим. Дистрибутив имеет большее значение. Если он rpm-based, то можно воспользоваться менеджером пакетов rpm, если же нет, то придётся собирать программы из исходников (может это и к лучшему).

Установка pppd.

 

Установка из rpm:

$ wget http://www.vesnet.ru/users/parafin/article....4.fc2.i386.rpm

$ su

Введите пароль root'а

Если ppp установлен:

# rpm -Uhv ppp-2.4.3-0.cvs_20040527.4.fc2.i386.rpm

а если нет:

# rpm -ihv ppp-2.4.3-0.cvs_20040527.4.fc2.i386.rpm

# exit

$

Установка из исходников:

$ wget http://www.vesnet.ru/users/parafin/article...20040527.tar.gz

$ tar -xzf ppp-cvs_20040527.tar.gz

$ cd ppp

$ ./configure

$ make

$ su

Введите пароль root'а

# make install

# exit

$

Установка pptp-client.

 

Установка из rpm:

$ wget http://www.vesnet.ru/users/parafin/article....5.0-1.i386.rpm

$ su

Введите пароль root'а

# rpm -ihv pptp-linux-1.5.0-1.i386.rpm

# exit

$

Установка из исходников:

$ wget http://www.vesnet.ru/users/parafin/article...ux-1.5.0.tar.gz

$ tar -xzf pptp-linux-1.4.0.tar.gz

$ cd pptp-linux-1.4.0

$ make

$ su

Введите пароль root'а

# make install

# exit

$

Есть одна особенность - если бинарник pppd прописан не по адресу /usr/sbin/pppd, то придётся править Makefile в каталоге pptp. Это может произойти только если вы ставили его из исходников. Откройте его в редакторе, найдите строку PPPD = /usr/sbin/pppd и измените путь на правильный.

Настройка.

 

Для начала зададим пароль и логин - для этого в конец файла /etc/ppp/chap-secrets добавьте следующую строчку: "<ваш логин>" * "<ваш пароль>" * . Далее создайте файл /etc/ppp/peers/internet следующего содержания:

name <ваш логин>

ipparam internet

mtu 1372

nobsdcomp

nodeflate

noauth

#require-mppe-128

pty "/usr/sbin/pptp ppp.lan --nolaunchpppd"

где ppp.lan - адрес vpn сервера. Далее по идее всё должно работать, но, как я обнаружил, при этом не настраивается роутинг. Почему - не знаю, может быть надо запускать pppd из-под pptp, а не наоборот, но это не важно (я думаю так и надо). Существует простой обходной путь - мы напишем скрипт, настраивающий роутинг как надо. Итак, во-первых надо создать файл /etc/ppp/ip-up.local и сделать его исполняемым командой chmod a+x /etc/ppp/ip-up.local. Дальше надо занести в него следующий текст:

#!/bin/bash

if [ "$6" == "internet" ]

then

/sbin/route del default

/sbin/route add default gw "$IPREMOTE"

fi

В этом скрипте, как видите, заменяется шлюз по умолчанию, поэтому при выходе из Интернета надо его восстановить. Для этого надо создать и сделать исполняемым ещё один файл - /etc/ppp/ip-down.local (надеюсь вы сможете это сделать :)) и написать в нём следующий скрипт:

#!/bin/bash

if [ "$6" == "internet" ]

then

/sbin/route add default gw <ваш шлюз>

prev=`cat /root/traffic`

let "prev += $BYTES_RCVD";

echo "$prev" >/root/traffic

fi

где <ваш шлюз> - это ip-адрес шлюза вашего сегмента, обычно это 10.<ваша_сеть>.<ваш сегмент>.254. Первая строка после then восстанавливает шлюз по умолчанию, остальные (ну кроме fi) - это мой бонус для вас, подсчёт входящего трафика. Для того, чтобы он заработал, надо выполнить echo "0" >/root/traffic от имени root'а, и после каждого отключения от Интернета кол-во принятых байтов будет добавляться к значению в файле /root/traffic. Однако и этого скрипта недостаточно, надо дописать в статический роутинг, чтобы запросы к локальной сети шли не через vpn. Для этого можно воспользоваться средствами настройки вашего дистрибутива (например system-config-network-gui в Fedora Core 2 для иксов) и добавить туда такой путь: адрес 10.0.0.0, маска сети 255.0.0.0 и ваш шлюз. Если в вашем дистрибутиве нет или вы не знаете никакие средства настройки, то можно прописать этот путь в файле инициализации системы, об этом ниже. Пришло время поговорить о том, как всё это запускать. pppd запускать (т.е. в принципе выходить в Интернет) запускать можно будет только от имени root'а. Далее, запукаем pppd командой /usr/sbin/pppd call internet. Если всё пойдёт хорошо, то команда /sbin/ifconfig выведет, что появился интерфейс ppp0 и вы сможете запустить любимый браузер и вывести своего пингвина в Интернет. Лично я прописал, чтобы pppd запускался при запуске. Для этого я добавил в файл /etc/rc.d/rc.local следующие строки:

/usr/sbin/pppd call internet

Перед ними можно добавить строчку, прописывающую роутинг, если вы ещё не прописали его:

/sbin/route add -net 10.0.0.0 netmask 255.0.0.0 gw <ваш шлюз>

 

Если что-то пошло не так.

Если pppd запускается, но интерфейс не появляется или вскоре отваливается, то что случилось можно узнать, запустив pppd следующей командой: /usr/sbin/pppd nodetach debug call internet. Тогда на консоль будет выводится отладочная информация. Если сервер отвечает I don't like you. Go away!, то это означает, что он в конец обнаглел :). Причинами для этого может быть неправильный пароль или логин, сервер упал или вы не следовали моим инструкциям :). Это шутка, потому что в каждом конкретном случае может быть своя причина.

 

Оригинальная статья © parafin, 2004. Обновлено svk, © 2007

 

Ссылка на комментарий
Поделиться на другие сайты
  • 11 months later...

Для того что бы открывались большие сайты например microsoft.com, некоторые сайты могут не открываться если линукс будет в качестве роутера, для этого нужно добавить в скрипт ip-up и ip-down следующие записи

 

/sbin/iptables -t mangle -o "$PPP_IFACE" --insert FORWARD 1 -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu

 

И выглядеть файл ip-up будет таким образом

 

if [ "$6" == "internet" ]; then

/sbin/route del default

/sbin/route add default gw "$IPREMOTE"

/sbin/iptables -t mangle -o "$PPP_IFACE" --insert FORWARD 1 -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu

fi

 

Для ленивых содержимое файла ip-down

if [ "$6" == "internet" ];then

/sbin/route add default gw 10.10.17.1

/sbin/iptables -t mangle -L -n -v --line-numbers | /bin/grep "TCPMSS.*$PPP_IFACE.*clamp" | cut -f1 -d " " | xargs -n1 -r /sbin/iptables -t mangle -D FORWARD

fi

 

Удачи!

 

P.S. Дело в том что в езернете по умолчанию MTU 1500, а на ppp0 в конкретном случае MTU 1327.

Ссылка на комментарий
Поделиться на другие сайты
  • 6 months later...
  • 2 weeks later...

В Федоре настраивается в стандартном NetworkManager. Надо выбрать PPTP тип соединения VPN. Все, больше никаких шаманских танцев с бубнами.

Ссылка на комментарий
Поделиться на другие сайты
  • 1 year later...
  • 2 weeks later...

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

Загрузка...