magnify
Home Новости Настройка и использование VPN от HideMyAss через WiFi
formats

Настройка и использование VPN от HideMyAss через WiFi

Зачем и почему использовать VPN нет смысла рассказавыть. Думаю многие сталкивались с такой проблемой, что многие сайты не работают, а точнее не дают доступ к своему контенту, если у вас к примеру не американский IP адрес. Из таких: Pandora, Google Music, iTunes, ABC, YellowPages и далее по списку. Обмануть ушлых админов можно с помощью анонимайзера, но это крайне не удобно, другое дело VPN, получашь IP адрес сервера расположенного в Лос-Анджелесе и погнал лазить где тебе нравится. Сама по себе настройка соединения VPN от HideMyAss очень проста, но у меня стояла задача организовать целую Wi-Fi инфраструктуру, т/е я хотел что-бы все устройства с Wi-Fi чипом на борту могли сидеть на сети, у которой тот IP который нравится мне. Понятно, что для организации такой сети вам понадобится WiFi роутер, Ubuntu Linux и аккаунт на HideMyAss. О том, как все это замутить и авторизировать в Ubuntu 12.04.1 LTS Server читайте ниже.

HideMyAss

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

Как это работает?

После того как вы зарегистрировались на сайте HideMyAss.com и заплатили за использование сервиса, в вашем аккаунте есть выбор для какой ОС загрузить сертификаты и программу для использования VPN. Нас интересует Linux. Подробности тут.

Установка и настройка

Я купил простой WiFi роутер и настроил его работать в обычном режиме, роутер получает по DHCP адрес от сервера, делает NAT и раздает уже свои адреса через свой DHCP. Стандартная конфигурация, ничего особенного. На сервере, в моем случае это Ubuntu 12.04.1 LTS делаем папку /root/openvpn

  1. mkdir /root/openvpn

Распакуйте туда скаченный ахив, у вас должны появится файлы:
- client.cfg
- hma-start
- keys папка

Идея
Я хотел реализовать следующие опции:

  • Запуск скрипта для просмотра списка доступных стран
  • Проверка на наличие уже работающего openvpn
  • Корректная остановка работы openvpn
  • Автоматический ввод логина и пароля
  • Немного информации о соединении (IP, статус, страна)

    Срипт первый
    Первый скрипт логично было написать для старта:

    1. cd /root/openvpn
    2. touch startVpn.sh
    3. chmod +x startVpn.sh

    Текст срипта:

    1. #!/bin/bash
    2. #
    3. # Internet interface
    4. INET_IFACE="tun0"
    5.  
    6. # Go to VPN directory
    7. cd /root/openvpn
    8.  
    9. # Check if another openvpn proccess is already running
    10. if [ -e .openvpnup ] ;
    11. then
    12.   echo "OpenVPN is already running, connected to:";
    13.   cat .openvpnup
    14.   echo "You must close this connection before continuing. Example: ./stopVpn.sh";
    15. exit;
    16. fi
    17.  
    18. # To get list of countries and to start hma-autostart.sh script
    19. if [[ $1 == '-l' ]]
    20. then
    21.    curl -s "http://vpn.hidemyass.com/vpnconfig/countries.php";
    22.    exit;
    23. fi
    24.  
    25. COUNTRY=`echo $1 | sed 's/ /+/g'`
    26. if [ "$COUNTRY" = "" ]
    27. then
    28.   echo "You must specify a country in the commandline, use -l option for a list of countries";
    29.   exit;
    30. fi
    31.  
    32. # Start hma-autostart script
    33. curl -s "http://vpn.hidemyass.com/vpnconfig/client_config.php?win=1&loc=$COUNTRY" > client.cfg
    34. ./hma-autostart.sh &
    35.  
    36. until ifconfig|grep -q $INET_IFACE;do
    37. sleep 1
    38. #echo "We are waiting"
    39. done
    40.  
    41. # Turn on forwarding and transperency mode
    42. iptables -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE
    43. echo "1" > /proc/sys/net/ipv4/ip_forward
    44.  
    45. # Echo
    46. echo ""
    47. echo "YOU ARE CONNECTED!"
    48. wget -nv -O - http://checkip.dyndns.org/ 2>&1 | cut -d">" -f7-|cut -d"<" -f-1
    49. echo ""
    50. echo $COUNTRY > .openvpnup

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

    1. cd /root/openvpn
    2. touch stopVpn.sh
    3. chmod +x stopVpn.sh

    Текст срипта:

    1. #!/bin/bash
    2. #
    3. echo ""
    4. echo "Wait a second, script working..."
    5.  
    6. # This will kill openvpn and delete .openvpnup file
    7. #kill -9 `ps -ef|grep openvpn|grep -v grep|cut -d" " -f7`
    8. #kill -9 $(ps opid= -C openvpn)
    9. #pidof openvpn
    10. killall -9 openvpn
    11. pkill openpvn
    12.  
    13. cd /root/openvpn
    14. rm -rf .openvpnup
    15.  
    16. echo ""
    17. echo "Done...Now you can start script ./startVpn.sh"
    18. echo ""

    Скрипт третий
    Третий скрипт поможет с автоматичесим вводом логина и пароля:

    1. cd /root/openvpn
    2. touch hma-autostart.sh
    3. chmod +x hma-autostart.sh

    Текст срипта:

    1. #!/usr/bin/expect -f
    2. set timeout 2
    3. spawn  openvpn client.cfg
    4. expect "Enter Auth Username:"
    5. send "MYLOGIN\r"
    6. expect "Enter Auth Password:"
    7. send "MYPASSWORD\r\r"
    8. expect "<"
    9. interact

    1) Содержание скриптов я хорошо прокомментировал. Работает это просто, запускаем скрипт startVpn.sh он использует вспомогательный скрипт hma-autostart.sh, он же делает проверки и он же корректирует правила в iptables, он же показывает IP адрес того места куда вы подклчились и выдает статус подключения в конце, он же переводит режим работы в фоновый, т.е. вы можете продожлить использовать консоль.

    2) Скрипт stopVpn.sh запускается в случае если вы хотите прервать текущее соеденение
    3) Скрипт hma-autostart.sh вводит логин и пароль

    Выглядит это так, проверяем список доступных локаций:

    1. root@ubuntuVpn:~/openvpn# ./startVpn.sh -l
    2. USA, California, Los Angeles (DC1 S1)
    3. USA, California, Los Angeles (DC1 S2)
    4. USA, California, Los Angeles (DC1 S3)
    5. USA, California, Los Angeles (LOC1 S4)
    6. USA, California, Los Angeles (LOC1 S5)
    7. USA, California, Los Angeles (LOC1 S6)
    8. USA, California, Los Angeles (LOC1 S7)
    9. USA, California, Los Angeles (LOC1 S8)
    10. USA, California, Orange County (DC1 S2)
    11. USA, California, San Diego (DC1 S2)
    12. ......
    13. Switzerland, Zurich
    14. Turkey, Ankara
    15. Turkey, Istanbul
    16. Ukraine, Odessa

    Подключаемся к Лондону:

    1. root@ubuntuVpn:~/openvpn# ./startVpn.sh "UK, London (LOC1 S1)"
    2. ....
    3. YOU ARE CONNECTED!
    4. Current IP Address: 139.143.71.2

    Останавливаем соединение:

    1. root@ubuntuVpn:~/openvpn# ./stopVpn.sh
    2. Wait a second, script working...
    3. Done...Now you can start script ./startVpn.sh

    Связь с WiFi

    Как уже было сказано, скрипт запускаетс на сервере, таким образом получается, что сервер подключен к Англии и имеет IP адрес Лондона, к серверу подключен WiFi роутер, а к роутеру поключаются уже все остальные устройства имеющие на борту WiFi, Samsung Galaxy SIII, Nexus 7 и MacBookPro в моем случае.

    Все пакеты которые проходят через сервер, будут выходить через виртуальный интерфейс tun0 который имеет Лондонский IP, это можно увидеть в таблице маршрутизации:

    1. root@ubuntuVpn:~/openvpn# route -n
    2. Kernel IP routing table
    3. Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    4. 0.0.0.0         109.123.79.4    128.0.0.0       UG    0      0        0 tun0

    О правильном роутинге позаботился как вы уже поняли скрипт:
    iptables -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE
    echo "1" > /proc/sys/net/ipv4/ip_forward

    Далее просто находим WiFi сеть в списке сетей и подключаем устройство

    То как все работает продемонстрированно на схеме

    Оригинальная фотка высокого разрешения тут

  •  
     Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
    1 Comment  comments 

    One Response

    1. Проникс

      Спасибо

    Добавить комментарий

    Ваш e-mail не будет опубликован. Обязательные поля помечены *

    Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code lang=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" extra="">