пятница, 17 сентября 2010 г.

Настройка VPN сервера на Ubuntu

На работе стоит Ubuntu как десктом. Передо мной возникла необходимость с дома подключатся к своей рабочей машине, и с работы подключатся к домашнему компьютеру. Последнее реализовать было не сложно, так как у рабочего компа был реальный IP адресс.

Решил, что самым простым решением будет организовать VPN соединение между двумя этими хостами. С дома я подключаюсь через виндовую подключалку по VPN, таким обраом машины должны были находятся в своей виртуальной сети.

На рабочей машине я поднял VPN как указано в http://linuxoids.ru/nastr/19-nastrojjka-vpn-servera-v-ubuntu-ili-debian.html этом мануале, изменил только имя пользователя и днс, соответственно на свои.

С дома подключается, и работает все нормально, могу ходить в интернет через рабочую тачку, и наоборот, с работы имеется доступ к домашней машине.

Структура следующая:
<Комп.Домашний> ----------------<Интернет>--------<Рабочий комп.>

Начнемс
Установим VPN сервер:
Код:
sudo apt-get install pptpd ipx ipxripd

Настройка VPN сервера.
Отредактируйте файл /etc/ppp/pptpd-options

Код:
name pptpd
refuse-pap
refuse-chap
require-mschap
require-mschap-v2
require-mppe-128
ms-dns 10.0.0.1 # Здесь указываем
ms-dns 10.0.0.2 # DNS сервера
proxyarp
nodefaultroute
lock
nobsdcomp
#IPX (todo)
ipx
ipx-network 4
ipx-node 1:0
ipx-routing 2
ipx-router-name Linux_router
ipxcp-accept-remote

Отредактируйте файл /etc/pptpd.conf

Код:

option /etc/ppp/pptpd-options
logwtmp
localip 172.16.16.1
remoteip 172.16.16.2-254

Теперь можно добавить пользователей, для этого отредактируйте файл /etc/ppp/chap-secrets

Код:
# Secrets for authentication using CHAP
# client server secret IP addresses
heiniken pptpd vladimir "*"

Мы добавили пользователя heiniken с паролем vladimir и с возможностью доступа с любого ip адреса.
Если хотите с определённого адреса то вместо * впишите ип адрес.

Перезапускаем VPN сервер

Код:
/etc/init.d/pptpd restart
На этом настройка VPN сервера закончена, осталось настроить фаервол и форвардинг пакетов.

Настройка фаервола

Создадим простой скрипт фаервола в домашней директории /home:

Код:
touch /home/vpn-firewall.sh
chmod +X /home/vpn-firewall.sh
gedit /home/vpn-firewall.sh

В открывшемся окне впишите:

#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
iptables --flush
iptables --delete-chain
iptables --table nat --flush
iptables --table nat --delete-chain
iptables -P FORWARD ACCEPT
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables --table nat --append POSTROUTING --out-interface ИМЯ ВАШЕГО ИСХОДЯЩЕГО ИНТЕРФЕЙСА например eth0 -j MASQUERADE
echo vpn firewall loaded OK.

Пропишите этот скрипт в автозагрузку отредактировав файл /etc/rc.local
Должно получится следующее:

Код:

#!/bin/sh -e
/home/vpn-firewall.sh
exit 0

Запустите скрипт фаервола, он должен написать ”vpn firewall loaded OK.”

Код:
/home/vpn-firewall.sh

На этом настройка закончена, можете настраивать windows клиенты, никаких особенных параметров не требуется, просто создаете подключение vpn с адресом вашего сервера, на вкладке ”Безопасность” нужно снять галочку с пункта ”Требуется шифрование данных (иначе отключаться)”, а так же логином и паролем которые вы вписали в конфигурационный файл.

http://linuxoids.ru/nastr/19-nastrojjka-vpn-servera-v-ubuntu-ili-debian.html

В принципе, в файле /etc/ppp/pptpd-options я (как мне помнится) ничего не менял кроме ms-dns, такчто можно для начала попробовать запустить с "коробки"

Теперь, если на удаленной машине подключится к vpn, то на сервере, набрав ifconfig, мы должны увидеть приблизительно следующее:

ppp0 Link encap:Протокол PPP (Point-to-Point Protocol)
inet addr:172.20.0.1 P-t-P:172.20.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1396 Metric:1
RX packets:1493 errors:0 dropped:0 overruns:0 frame:0
TX packets:805 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:209905 (209.9 KB) TX bytes:241250 (241.2 KB)

После проделанных манипуляций, нужно прописать маршрутизацию, а именно направить пакеты которые идут к клиенту в нужный шлюз. В нашем случае это 172.20.0.1

В /etc/ppp/ip-up.d/ создаем файл routing с текстом

#! /bin/sh
ping -c 1 172.20.0.1 && route add -net 172.0.0.0 netmask 255.0.0.0 dev ppp0

Спасибо товарищу AnrDaemon с forum.ubuntu.ru за предоставленную помощь.
http://forum.ubuntu.ru/index.php?topic=113757.0

И еще, нужно убедится что на клиенте в файрволе разрешено входящее подключение, ну а если проще, то отключите файрвол.

Теперь можно без проблем можно подключатся к удаленной машение с динамическим "серым" IP адрессом.

Комментариев нет:

Отправить комментарий