Показаны сообщения с ярлыком vpn. Показать все сообщения
Показаны сообщения с ярлыком vpn. Показать все сообщения

пятница, 11 ноября 2011 г.

Доступ к интернету через VPN тунель

Докатились таки власти до попытки контроля трафика и контента.

Поднять туннель не слишком сложно. Нужен сервер за границей, пойдет и полудохлый VPS - желательно с неограниченным трафиком (ну либо достаточно большим).
Прочитать можно тут настройка OpenVPN

Итак подняли - в результате на сервере где-то в иностранном интернете появится дополнительный сетевой интерфейс tun0 с ip 10.8.0.1.
У Вас на компьютере будет что-то вроде tun0 с ip 10.8.0.5

На сервере

по минимуму (лучше конечно нормально настроить файрвол):

* включаем форвардинг
echo "1" > /proc/sys/net/ipv4/ip_forward

* настраиваем SNAT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 0/0 -j SNAT --to-source _ip_сервера_

Теперь сервер будет перенаправлять запросы из подсети 10.8.0.0 на внешние сети и при получении ответа заворачивать обратно в туннель.

На клиенте

* маршрут на ваш сервер через шлюз провайдера

route add -host _ip_сервера_ gw _ip_шлюза_провайдера_ eth0
(вместо eth0 может быть ppp0 и т.п.)

* маршрут на подсеть туннеля

route add -net 10.8.0.0 netmask 255.255.255.0 dev tun0

* убиваем маршрут по умолчанию от провайдера

route del default gw _ip_шлюза_провайдера_ eth0
(вместо eth0 может быть ppp0 и т.п.)

* устанавливаем шлюз по умолчанию на наш туннель

route add default gw 10.8.0.1 tun0

Естественно, все это лучше завернуть в скрипты. Да и сами конфиги туннеля настроить так, что бы они выдавали часть настроек сами.

четверг, 10 ноября 2011 г.

Настройка OpenVPN

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

Установим
aptitude install openvpn

Копируем файлики для генерации ключей и немного поднастроим:

cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /etc/openvpn/easy-rsa

если нужно, то редактируем строки в конце файла /etc/openvpn/easy-rsa/vars (страна, город и т.д.)

mkdir /etc/openvpn/easy-rsa/keys
touch /etc/openvpn/easy-rsa/keys/index.txt
echo "00">/etc/openvpn/easy-rsa/keys/serial

cd /etc/openvpn/easy-rsa
source ./vars
chmod 700 ./vars

Создаём личный ключ и сертификат центра сертификации, на основе которых будут сертифицироваться прочие выдаваемые ключи:

./build-ca


Генерация ключей происходит в папке /etc/openvpn/easy-rsa. Перед каждым сеансом генерации ключей не забываем загружать переменные:

source ./vars

Генерируем ключ сервера:

./build-key-server server


Генерация сертификата и личного ключа клиента

source ./vars
./build-key computer2

Создаём параметр DH (Алгоритм Диффи — Хеллмана):

./build-dh

Генерируем TLS ключ:

openvpn --genkey --secret /etc/openvpn/easy-rsa/keys/ta.key

Настройка openvpn сервера
делаем отдельную папку keys в папке openvpn и копируем туда необходимые для работы сервера файлы:

mkdir /etc/openvpn/keys
cd /etc/openvpn/easy-rsa/keys/
cp ca.crt ca.key /etc/openvpn/keys/
mv server.crt server.key dh1024.pem ta.key /etc/openvpn/keys/

Запросы на генерацию сертификата можно удалить:

rm server.csr

Копируем примерный файл настройки сервера openvpn (а можно просто создать):

gzip -cd /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz >> /etc/openvpn/server.conf

Примерное содержание server.cong

# адрес на котором слушать входящие запросы.
# закоментированно, значит на всех
;local a.b.c.d
port 1194
proto udp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
tls-auth keys/ta.key 0
cipher BF-CBC
comp-lzo
max-clients 30
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3

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

Есть вероятность, что tun на сервере не запущен
modprobe tun

Запускаем /etc/init.d/openvpn start и смотрим в лог /var/log/openvpn-status.log все ли нормально.
Проверяем вывод ifconfig. Должен появиться дополнительный интерфейс tun0 со своим ip
================================

Настройка клиента

Установим
aptitude install openvpn
Скопируем в папку с секьюрными правами файлы ca.crt computer2.key computer2.crt
к примеру в /etc/openvpn/keys/

затем в /etc/openvpn создадим конфиг _domain_.conf (удобно хранить названия домена, конфигов может быть несколько на разные сервера)
За основу можно взять /usr/share/doc/openvpn/examples/sample-config-files/client.conf

client
remote _domain_ 1194
proto udp
ca /etc/openvpn/keys/ca.crt
key /etc/openvpn/keys/computer2.key
cert /etc/openvpn/keys/computer2.crt
daemon
dev tun

Есть вероятность, что tun на клиенте не запущен
modprobe tun

Запуск клиента производится командой вида
openvpn --config /etc/openvpn/_domain_.conf

Проверяем вывод ifconfig. Должен появиться дополнительный интерфейс tun0 со своим ip