06 июля 2014

VPN клиент на роутере с USB-модем

Приветствую, дорогой читатель! Сегодня мы затронем одну очень интересную тему. Думаю ни для кого не секрет, что при выходе в Интернет через 3G-модем, вам назначается "серый" ip-адрес и вы находитесь за NAT. Поэтому, если вам вдруг понадобилось развернуть какой то мобильный сервер, то доступ к нему будет закрыт. Получение "белых" адресов у всех операторов-провайдеров услуга платная.

Выходом из этой ситуации будет туннелирование трафика до "белого" сервера. И уже через него получать доступ к вашему мобильному серверу. Первое, что сразу приходит в голову - это VPN-сеть. Есть несколько вариантов реализации, но все зависит от ваших потребностей, возможностей и убеждений. Мы будем реализовывать самый простой PPTP.  Если этот вариант по каким то причинам вам не подходит, смотрите в сторону OpenVPN и обратного ssh-туннеля.

Так же по теме как организовать VPN-сервер на базе FreeBSD у меня есть отдельная статья.

Я решал задачу, как получить доступ к ip-камере за роутером с USB-модемом. Хочу сразу уточнить, что я возился с D-link dir-620 версии C1, поскольку все дальнейшие настройки крайне специфичны и целиком зависят от модели вашего роутера и используемого на нем программного обеспечения.
Существует несколько модификаций этого роутера A,C,D,G,F. Их основные отличия в процессорах и объеме памяти. С1 оказался наиболее удачной моделью, здесь мощный процессор Broadcom BCM5357 с частотой 530MHz и в два раза больше ОЗУ - 64 МБ. Описания есть на wikidevi.
Что бы узнать какая у вас, посмотрите на наклейку с обратной стороны.

Сначала все эксперименты я проводил на родной прошивке. Только обновил ее до последней стабильной версии 1.0.8. Брал ее с ftp-сервера производителя и устанавливал через web-интерфес роутера.

Настройки VPN-подключения на родной прошивке D-link
Чтобы организовать VPN соединение по протоколу pptp через 3G нужно создать два подключения: первое 3G, как основа для выхода в Internet и второе "PPTP+Статический IP".  Здесь подразумевается, что вы подключаетесь к VPN через провод и имеете статический адрес. Но в нашем случае это не имеет никакого значения, поэтому мы зададим его произвольным.

Для этого заходим в web-интерфейс роутера по адресу 192.168.0.1 через браузер (логин и пароль по умолчанию admin) и  переходим в режим Расширенные настройки>Сеть>WAN. Удаляем там все лишнее и добавляем новые подключения.  Первым добавим 3G-соединение, лучше конкретно задать режим 3G, а не авто, настройки PPP в зависимости от вашего оператора.

Далее подключение "PPTP+Статический IP", обратите внимание, что Интерфейс задан как Internet, а не static.  Далее придумайте имя. 

В секции IP назначте произольный адрес 1.1.1.1, маску 255.255.255.255, шлюз 1.1.1.1, DNS 8.8.8.8. Включите NAT, сетевой экран и пинг. 

В секции VPN  поставить галочку соединяться автоматически, ввести логин, пароль, адрес vpn-сервера, шифрование выбрать MPPE 40/128 бит, поставить галочку ping, а все остальное оставить по умолчанию. Не забудьте сохранить.

Теперь после перезагрузки и получения адреса в 3G сети роутер автоматически подключится к VPN-серверу. А в случае обрыва связи так же будет делать это сам. Откройте Статус>Сетевая статистика и проверьте, что вы получили ip-адрес vpn-сети.

Подключились, это хорошо! Но поскольку в качестве шлюза у нас по умолчанию используется 3G-модем, то наше vpn-соединение ни как не участвует в сетевом процессе. Что бы его задействовать нужно настроить маршрутизацию.

Добавим такое правило: пусть все запросы из vpn-сети направляются через подключение PPTP. Для этого идем на вкладку Дополнительно>Маршрутизация, нажимаем Добаваить. Сеть назначения указываем такую, какую определяет vpn-сервер, в нашем случае это 192.168.10.0 (ее вы уже видели раньше в Сетевой статистике). Маска подсети подбирается автоматически, метрику ставим 1, а интерфейс - это имя вашего VPN-подключения. 

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

Последнее правило означает, что если для пакетов не сработало ни одно из предыдущих правил, они отправляются через соединение 3G-модема. Оно добавляется автоматически, когда ставите галочку использовать 3G-модем в качестве шлюза по умолчанию на квладке Расширенные настройки>Сеть>WAN. Наше правило с метрикой 1 располагается выше, таким образом оно сработает раньше и все общение с vpn-сетью будет происходить через PPTP интерфейс.

Теперь можно пропинговать любой компьютер из vpn-сети и получить доступ к ресурсам локальной сети, как в прямом, так и в обратном направлении.

Вышеописанная последовательность действий - это единственная возможность настроить VPN-соединение через 3g модем на родных прошивках D-link.
Но к сожалению такая настройка не позволяет полностью спрятать вас в VPN-сети и не даст выхода в интернет через нее. А этого бы очень хотелось.

Еще один неприятный момент, со стандартной D-link-ой прошивкой не заработал LTE на 4G-модеме от МТС. Хотя он определился без проблем, но работал только в 3G.

Поэтому дальше я решил перейти на какую-нибудь неофициальную прошивку, например,  Tomato или Vampik. OpenWRT тоже хорошая, но текущей ревизией данного роутера не поддерживается.

Если потребуется откатиться с бета-версии d-link 2.0.9 на более старую прошивку нужно зажать кнопку reset в момент включения питания и не отпускать ее в течении 10 секунд. Роутер переходит в режим восстановления. Обязательно через IE (через firefox почему то файлы не заливались) заходите на 192.168.0.1, там будет доступна форма для загрузки файла прошивки. Заливайте, ждете когда роутер моргнет всеми лампочками и перезагрузится. Предварительно в настройках сетевой карты вашего компьютера нужно убрать автоматическое получение ip-адреса и поставить вручную 192.168.0.2 и маску 255.255.255.0.

Таким же способом через режим восстановления прошиваются и все другие неофициальные прошивки. Откатится с tomato обратно на d-link можно просто через веб-интерфейс Tomato в разделе upgrade. Только имейте в виду, что после прошивки Tomato web-интерфейс консоли восстановления будет доступн по адресу 192.168.1.1, а не 192.168.0.1 как до этого.  В этом нет ничего страшного, дело в том, что в Tomato LAN настроена на подсеть 192.168.1.1/24.

Прошивки Tomato by Shibby доступны на официальном сайте в разделе download. D-link dir-620 c1 очень похож по начинке на Asus RT-N15U, хотя и не является его полным близнецом. Поэтому нам подойдут все прошивки сборок RT-N. Берете здесь самую последнюю версию Big-VPN для ASUS RT-Nxx. Я закачивал tomato-K26USB-1.28.RT-N5x-MIPSR2-120-Big-VPN.trx. И обновляете через режим восстановления.

После этого вы получаете полностью рабочий роутер, который сразу определяется как dir-620 c1 и все работает из коробки, в том числе порты LAN и Wi-Fi.

Поддержка 3g-модемов так же имеется. Только проследите, чтобы она была включена на вкладке USB and NAS >USB Support USB 3G Modem support.
К сожалению точного списка модемов, поддерживаемых Tomato нет, но если вы найдете свою модель в этом списке, то скорее всего она будет работать. Поиск там весьма не удобен, но если присмотреться, то увидите, что модели роутеров располагаются группами. Например, Huawei начинается с 12d1, ZTE - c 19d2 и т.д. Оба мои модема Huawei E3272 (это новый 4G модем от МТС) и 3G модем ZTE MF652 заработали сразу без каких-либо танцев с бубнами!

Настройки VPN-подключения на прошивке Tomato by Shibby  
Вставляете модем, включаете роутер. Заходите в web-интерфейс по адресу http://192.168.1.1 и идете в Basic>Network. В секции WAN/Internet настраиваете тип соединения 3g Modem. В поле Modem device выбираете /dev/ttyACM0, если помимо самого модема у вас определяется еще и флешка или /dev/ttyUSB0, если режим "только модем". Далее настройки оператора: номер дозвона, точка APN, имя и пароль. Все остальное по умолчанию. Не забудьте сохранить!

Теперь настроим VPN-соединение. Здесь есть специальный раздел VPN Tunneling, заходим в него, дальше PPTP Client. Прописываем адрес вашего VPN-сервера, имя, пароль, отмечаем все галочки, получать DNS - да, и задаем вручную MTU 1456. Сохраняем и перезагружаемся.

После ребута, модем автоматически подключится к сети. Это вы поймете, когда на нем загорится синий светодиод. А так же увидите в настройках Status>Overview в секции WAN, что получен ip-адрес.

Затем произойдет автоматическое подключение к VPN-серверу. Проверить это вы сможете на вкладке QoS>View Details. Там будет запись с адресом вашего vpn и 1723 портом.

Благодаря тому, что при настройке VPN-подключения мы поставили галочки Redirect Internet Trafic и Create NAT on tunnel  весь наш трафик теперь отправляется в туннель и поэтому мы выходим в Интернет через VPN-сеть. Проверьте свой ip на сайте 2ip.ru.

У нас осталась еще одна не решенная задача - это доступ к ip-камере за роутером Для этого настроим перенаправление портов. Очередная проблема в том, что при задании портов через веб-интерфейс в разделе Port Forwarding>Basic правила применяются только для WAN и LAN и не работают для VPN. А нам то надо между TUN и LAN.

Но в Tomato есть возможность гибкой настройки firewall'a через команды терминала. Они вводятся  либо через telnet или ssh, либо в разделе Administration>Scripts на вкладке Firewall.  Для конфигурирования используется iptables, поэтому вам не составит особого труда разобраться с его синтаксисом.

К примеру для проброса 80 порта ip-камеры с адресом 192.168.1.5 к произвольному порту 12345 роутера добавьте следующую  строчку
iptables -t nat -A PREROUTING -i ppp1 -p tcp --dport 12345 -j DNAT --to 192.168.1.5:80
где  -i ppp1 - это интерфейс вашего vpn-туннеля. Его можно узнать с помощью ifconfig. И еще обратите внимание на ip-адрес, который вам присвоен в vpn-сети.

По аналогии пробросим веб-интерфейс роутера на порт 23456.
iptables -t nat -A PREROUTING -i ppp1 -p tcp --dport 23456 -j DNAT --to 192.168.1.1:80
Командой iptables -t nat -vL убедитесь, что правила применились.

Для проверки доступа, зайдите с любого компьютера из VPN-сети на ваш адрес, с помощью браузера, используя порт 23456. Должны увидеть форму приветствия.

Или просто просканпруйте nmap'ом на предмет открытости порта.

Поздравляю! Доступ получен! Слава VPN!

В заключение хочу добавить сопутствующей информации, как управлять модемами Huawei с помощью гипертерминала. Скачиваете My Huawei Terminal. В диспетчере устройств windows смотрите какой USB-порт используется модемом и подключаетесь к нему с помощью терминала. После этого введите команду AT, модем должен ответить Recieve: OK. После этого введите команду AT^SETPORT="FF;61,62". Она включит режим "только модем" и принудительно заставит его работать в режиме 4g. По умолчанию на модеме установлена команда AT^SETPORT="A1,A2;62,61,76,A1,A2".

Еще после прошивки tomato роутер стал греться. Поэтому я решил снизить частоту процессора. Для этого заходим через ssh на роутер, или в Tools>System Commands и вводим команду  
nvram show | grep clkfreq
Увидите текущие настройки. У меня были  clkfreq=530,176,88. Частоты cpu, ddr и axi.
Меняем
nvram set clkfreq=440,220,110
nvram commit
reboot
Или можете в большую сторону nvram set clkfreq=532,266,133

 

14 комментариев:

  1. Добрый день. Отличный мануал! спасибо. вспомнил о вашей статье когда уже прошил и дошло дело до настойки pptp. только исправьте пожалуйста у Вас команда неправильная: вместо ipconfig нужно в putty ifconfig команду

    ОтветитьУдалить
    Ответы
    1. Спасибо, что нашли неточность, все исправлено!

      Удалить
    2. Собрание Полезных Заметок Shirrma: Vpn Клиент На Роутере С Usb-Модем >>>>> Download Now

      >>>>> Download Full

      Собрание Полезных Заметок Shirrma: Vpn Клиент На Роутере С Usb-Модем >>>>> Download LINK

      >>>>> Download Now

      Собрание Полезных Заметок Shirrma: Vpn Клиент На Роутере С Usb-Модем >>>>> Download Full

      >>>>> Download LINK Z6

      Удалить
  2. Этот комментарий был удален автором.

    ОтветитьУдалить
  3. Этот комментарий был удален автором.

    ОтветитьУдалить
  4. Подскажите пожалуйста.
    В кратце: у меня pptp сервер(микротик) и pptp клиент(томато).
    проблема внутр подсеть микротика не видет внутр подсеть томато.
    я так понял проблемы с доступом подсетей друг к другу.
    так понял нужно /admin-scripts.asp написать правило:
    iptables -I ... а что куда разрешить я не нашел ответа
    br0-у меня внутр подсеть томато. ppp1-ip vpn сети.

    ОтветитьУдалить
    Ответы
    1. Как вы могли заметить, в данной статье мы не затрагивали вопрос с доступом к локальным сетям клиента и сервера. Мы лишь ограничились пробросом портов для одной локальной машины на роутере с томато.

      Локальные сети клиента и сервера действительно не имеют доступа друг к другу. Это связано с тем, что сервер ничего не знает о локальной сети клиента. Вам нужно вручную прописать на сервере маршрут до лок сети клиента.
      Что-нибудь вроде такого: # route add -net 192.168.20.0/24 192.168.10.2, первое - это сеть клиента, второе - адрес, полученный от сервера.

      Удалить
  5. добрый день! если Вы знаете, подскажите пжлста:
    у меня 620 с1 выступает в роли pptp сервера, к нему конектится клиентом zyxel keenetic. Коннект есть. Но вот что прописать и куда чтоб организовать локалку посредством vpn между 620с1 и zyxel keenetic?
    На других роутерах такая связка пашет: в настоящий момент в роли pptp сервака выступает keenetic giga к которому конектится zyxel keenetic - перебросил порты - доступ имею. В линуксе почти нуб.

    ОтветитьУдалить
    Ответы
    1. Здравствуйте! Ваша проблема аналогичная, как и у предыдущего человека. На сервере у вас не настроены маршруты до сетей клиента. Команда route в помощь! Где это настраивается на стандартной прошивке d-link не подскажу, а на томато в разделе Administration>Scripts.

      Удалить
    2. Этот комментарий был удален автором.

      Удалить
    3. Приятно слышать! Можете здесь поделиться своими результатами, я думаю кому-нибудь еще пригодится!

      Удалить
    4. В связи с тем, что картинки не вставляются - опишу текстом.
      На даче имеется dir412 - этакий мамонт с openwrt + e3131, стоящий в углу, где ловится 3Ж сигнал, который дает интернет для zyxel keenetic. К кинетику подрублена камера китайская nnm, датчик температуры на esp8266, ip телефон от zadarma, и по приезду на дачу с него шарится инет на все привозимые устройства. Keenetic также по pptp конектится к квартирному dir620c1 с tomato v.131, и офисному Giga. Бился долго с маршрутами - потому как сам накосячил из-за невнимательности. На кинетике перекинул порты, прописал маршруты, и разрешил доступ с "внешних локальных сетей". Везде все заработало. Настраивал все через gui прошивок. Осталось одна проблема, незначительная - на dir620c1 (в квартире)перекинуть порты от pptp клиента в локальную зону роутера, и оттуда уже в wan. В gui tomato в dhcp не цепляется жесткая привязка ip pptp клиента к его mac, и не работает port forwarding wan-to-ppp+ Могу зайти в порты ppp+ только находясь в локалке роутера.

      Удалить
  6. The online gambling world is highly regulated to protect each clients and operators from cash laundering, fraud, and other types of criminality. While nobody likes the thought of being so closely regulated that it stifles innovation and improvement, a degree of oversight is critical. 온라인카지노 Thankfully, many jurisdictions that strike a healthy steadiness between defending stakeholders and permitting the expansion and evolution of the iGaming industry. This is an indicator that the time is true for beginning or investing within the online gaming enterprise. Any enterprise working any form of online gambling is required to acquire the required license or authorization to take action.

    ОтветитьУдалить