Main > Abyss > Обход блокировки Яндекса, ВК, ОК из Украины с помощью Mikrotik

Обход блокировки Яндекса, ВК, ОК из Украины с помощью Mikrotik

19.09.2017 0 comments » Views: 2,068

Украинская блокировка сайтов

!!! Статья находится в оформлении, если что-то не будет понятно пишите в комментарии !!!

Устанавливаем l2tp и ppp, так же ставим bind-utils

Немного теории взятой на форуме ubuntu

Жесть какая-то с этим статьями в интернете... У меня ощущение, что мало кто вообще понимает, как это все настраивается, поэтому пишут полную отсебятину, останавливаются на полпути, получая какую-то хрень (недоделанную, но работающую) и успокаиваются. Короче у меня получилось, но при чем тут ipsec я пока не понимаю.

Итак выводы пока следующие:
1. xl2tpd - первый демон с которым начинает взаимодействие подключающийся клиент. Задача этого демона - принять подключение на UDP порт 1701 и передать полученные данные дальше внутрь системы. В целом, больше ничего он делать не должен. Он может авторизовать входящие подключения по паролю/по имени хоста/IP адресу, но обычно это настраивают на следующих этапах, поэтому /etc/xl2tpd/l2tp-secrets должен оставаться пустым (паролей туда прописывать не нужно).
2. В /etc/xl2tpd/xl2tpd.conf есть блок с названием [lns], этот блок описывает конфигурацию сервера xl2tpd. Это как раз тот блок, который нам нужно настраивать. Подробности по настройке хорошо описаны в man xl2tpd.conf. Блок [lac] конфигурационного файла используется, если настраиваемый демон сам будет подключаться к другому серверу. Если вы хотите только принимать входящие подключения этот блок вообще не нужен.
3. Строка lac = 0.0.0.0-255.255.255.255 обязательна, если вы хотите принимать подключения с любых ip-адресов. Возможно в предыдущих версиях она была не нужна, поэтому об этом особо не пишут в манах, но сейчас ее нужно прописывать.
4. Строка "pppoptfile = /etc/ppp/options.l2tpd" в блоке [lns] говорит о том, с какими параметрами будет запущен следующий демон при входящем подключении - pppd. Именно ему передает все данные xl2tpd, если входящее подключение соответствует параметрам, указанным в конфиге.
5. На каждое входящее подключение, соответствующее требованиям, стартует своя копия pppd с параметрами из п. 4. Кстати, подробнее обо всех них читаем в man pppd. Все тоже очень подробно.
6. Учитываем, что старые маны в интернете иногда используют конструкции параметров типа:
-pap
+chap

Эти записи уже давно deprecated. Необходимо использовать refuse-pap, require-chap и т.д.

7. Именно на этапе настройки параметров pppd прописывается авторизация клиента. За нее отвечают инструкции:
auth
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2

Здесь мы запрещаем устаревшие протоколы и разрешаем mschap второй версии. Логин и пароль, которые мы указываем при подключении к VPN должны быть прописаны в /etc/pppd/chap-secrets. Именно по ним, и именно на этом этапе осуществляется авторизация клиента.

8. Уже на втором этапе можно настроить шифрование по майкрософтовской технологии MPPE. За него отвечает параметр require-mppe, а лучше даже require-mppe-128, тогда шифрование будет 128-битным.

9. Если правильно настроить эти 2 демона - вы получите полностью рабочий VPN через L2TP. У меня получилось. При чем тут IPSec и как при этом используется OpenSWAN я пока не пойму. Ощущение, что в большинстве интернетовских манов этот демон ставится как талисман и авторы сами не понимают, что делают. Так при работающем L2TP вы можете вообще вырубить IPSec (service ipsec stop) и все будет работать без проблем.

10. Есть понимание, что должен быть еще 3 этап, где налаживается взаимодействие между pppd и OpenSWAN. Как заставить pppd работать только через IPSec я пока не нашел, копаю дальше. Если все оставить как есть - L2TP будет работать, но траффик шифроваться либо вообще не будет, либо будет шифроваться простеньким майкрософтовским алгоритмом. Ну и нафиг такое счастье нужно?

11. Есть подозрение, что к применению IPSec относится параметр ipsec saref = yes в xl2tpd.conf, но связи пока не вижу.

 

Настраиваем /etc/xl2tpd/xl2tpd.conf

(!) Обратите внимание, что в качестве символа комментариев тут используется ";", когда я использовал "#" xl2tpd не мог распарсить конфиг и ругался на эти строчки

Настраиваем /etc/xl2tpd/l2tp-secrets

Настраиваем /etc/ppp/options.xl2tpd

(?) Тут я закомментировал две опции которые были установлены по-умолчанию crtscts и lock, но при старте pppd, он ругался на них, мол ничего про них не знает

Теперь настраиваем логины/пароли в файле /etc/ppp/chap-secrets
(или /etc/ppp/pap-secrets если используете pap в настройках xl2tpd.conf)

Все, теперь можно запустить демон командой:

В ответ вы либо увидите ошибки (особенно полезно в случае проблем с конфигами и во вермя отладки), либо что-то типа:

Если видите то, что выше, то значит все ок, xl2tpd слушает порт, если логи не интересуют можно стартовать демона так: service xl2tpd start (или service xl2tpd restart)

Теперь надо настроить l2p клиента

Для микротика (routeros), это делается тут: Interfaces > Add new > L2TP-Client

Вводите такие настройки

Теперь сохраняетесь и включаете соединение (если оно было отключено ранее), смотрите Status, должно стать connected

На сервере в окне с запущенным (xl2tpd -D) должны увидить типа того (11.11.11.11 - ваш "домашний" ip):

Теперь можно посмотреть ifconfig на сервере, увидите что-то вроде

Тунель установился, все ок

Включаем форвардинг на сервере

и применяем изменения

Теперь включаем маскарадинг на сервере

# если есть ограничения файрвола

не забываем сохранить правила, для автозагрузки:

если при сохранении правил получаете ошибку

The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

то, нужно установить iptables-service:

и добавить в автозагрузку

и уж затем, выполнить

так же не забудьте добавить в автозагрузку xl2tpd

Теперь, желательно, перезагрузиться и убедиться, что все автозапустилось и правила файрвола на месте:

 

Делаем маскарадинг на микротике

Перенаправляем трафик яндекса/вк/ок в тунель. Добавляем роуты на микротике

Профит!

 

Только что экспериментировал с разными способами, решил вообще не маркировать пакеты:
- добавил l2tp-client
- добавил маскарадинг l2tp
- для wan интерфейсов поставил distance 200+ чтоб роуты на них шли в последней очереди
- диапазоны вк прописал тупо в IP > Route где в качестве шлюза указал l2tp соединение
- вот и всё
в итоге нагрузки на проц нету, все открывается и летает

Диапазоны (обновлено 2017-09-19)

ВКонтакте
185.32.248.0/23
185.29.130.0/24
95.213.0.0/18
95.142.200.0/21
95.142.192.0/21
93.186.232.0/21
93.186.224.0/21
87.240.128.0/18

Яндекс
213.180.204.0/24
213.180.193.0/24
199.21.96.0/22
185.71.76.0/24
185.32.186.0/24
185.32.185.0/24
178.154.128.0/17
141.8.128.0/18
130.193.32.0/19
109.235.160.0/24
104.17.67.104
100.43.64.0/19
95.108.128.0/24
93.158.134.0/24
93.158.128.0/18
87.250.251.0/24
87.250.224.0/19
84.201.128.0/18
77.88.21.0/24
77.88.0.0/18
77.75.159.0/24
77.75.152.0/24
37.140.128.0/18
37.9.96.0/27
5.255.255.0/24
5.45.205.0/24
5.45.192.0/18

Мейл.ру
217.69.136.0/21
208.87.88.0/21
195.211.130.0/23
217.20.144.0/20
208.87.94.0/24
195.218.168.0/24
195.211.128.0/24
195.211.20.0/24
194.186.63.0/24
188.93.56.0/21
185.16.244.0/23
185.16.148.0/22
185.5.136.0/22
178.237.16.0/24
178.22.92.0/23
178.22.91.0/24
178.22.88.0/21
128.140.168.0/21
95.163.248.0/21
95.163.32.0/19
94.100.176.0/20
79.137.183.0/24
79.137.157.0/29
5.61.232.0/21
5.61.16.0/21

Kaspersky
77.74.176.0/22
77.74.181.0/24
77.74.183.0/24
93.159.228.0/22
185.54.220.0/23
185.85.12.0/24
185.85.14.0/23
77.74.176.0/21
91.103.64.0/21
93.159.224.0/21

Проверять тут: http://cqcounter.com/whois/

Полезные команды для статьи

  • ifconfig
  • ip route show
  • ip route list
  • ip route add 192.168.100.0/24 via 172.22.100.1
  • xl2tpd -D
  • iptables -L --line-numbers
  • iptables -D
  • iptables -L -t nat

Какой-то конфиг, всего скорее не рабочий, но тут есть описанием опций

# /etc/xl2tpd/xl2tpd.conf

[global]
auth file = /etc/xl2tpd/l2tp-secrets ; Where our challenge secrets are
debug tunnel = yes ; Enable debug
debug avp = yes ; Enable debug
debug network = yes ; Enable debug
debug packet = yes ; Enable debug

[lac l2tp-connection] ; VPN LAC definition
lns = xxx.xxx.xxx.xxx ; The IP address of our LAC
redial = yes ; Reconnect if disconnected
redial timeout = 15 ; Wait n seconds between redials
max redials = 5 ; Give up after n consecutive failures
hidden bit = yes ; User hidden AVP's?
length bit = no ; Use length bit in payload?
require chap = no ; Require CHAP auth. by peer
refuse chap = yes ; Refuse CHAP auth. by peer
require pap = yes ; Require PAP auth. by peer
refuse pap = no ; Require PAP authentication
refuse authentication = no ; Refuse authentication altogether
require authentication = yes ;Require peer to authenticate
name = User@isp ; VPN Username
ppp debug = yes ; Turn on PPP debugging
pppoptfile = /etc/ppp/options.l2tpd.client ; ppp options file for this lac

#/etc/xl2tpd/l2tp-secrets

# https://github.com/xelerance/xl2tpd/blob/master/doc/l2tp-secrets.5

# Secrets for authenticating l2tp tunnels
# The l2tp-secrets file contains challenge-response authentication information for xl2tpd, the implementation of l2tp protocol.
# The format of the file is derived from the pap and chap secrets file format used in pppd. The secrets file is composed of zero or # more lines with 3 fields each. Each line represents an authentication secret.
# The 3 fields represent our hostname, the remote # hostname and the secret used in the authentication process.
# The first (us) field is for our hostname, a "*" may be used as a wildcard.
# The second (them) field is for the remote system's hostname. Again, a "*" may be used as a wildcard.
# The third (secret) field is the secret used if the previous two fields match the hostnames of the systems involved.
# The secret should, ideally, be at 16 characters long (the length of an MD5 digest output), and should probably be longer to
# ensure sufficient security. There is no minimum length requirement, however.

# us them secret
* somename somesecret

#/etc/ppp/options.l2tpd.client
ipcp-accept-local # pppd will accept the peer's idea of our local IP address
mru 1410 # MRU is the maximum size for a received packet
mtu 1452 # MTU is the maximum size for a transmitted packet
debug # pppd will log contents of control packets - set up /etc/syslog.conf
refuse-eap # pppd will not agree to authenticate itself to the peer using EAP
refuse-chap # pppd will not agree to authenticate itself to the peer using CHAP
refuse-mschap # pppd will not agree to authenticate itself to the peer using MS-CHAP
refuse-mschap-v2 # pppd will not agree to authenticate itself to the peer using MS-CHAPv2
require-pap # Requires PAP [Password Authentication Protocol] authentication.
noccp #Disable compression control if the peer is buggy
show-password # When logging PAP packetspppd will log the password string as well
lcp-echo-failure 20 # pppd presumes peer to be dead if n LCP echo-request are not ack'd
lcp-echo-interval 50 # pppd will send an LCP echo-request frame every nseconds
asyncmap 0 # pppd will ask the peer not to escape any control characters
nocrtscts #No flow control using the RTS and CTS signals in RS-232
#crtscts # Use flow control using the RTS and CTS signals in RS-232
lock # pppd creates a UUCP-style lock file for exclusive access
local # Do not use modem control lines
#modem # Use the modem control lines
noauth # Do not require the peer to authenticate itself. Option is privileged
#auth # The peer does have to authenticate itself
noipx #Disable IPXCP and IPX Protocols only required if the peer is buggy
defaultroute # Make this the default route
nomppe-128 # Disable 128-bit encryption with MPPE

#/etc/ppp/pap-secrets
#user hostname secret
User@isp * mysecret

Источники

  • https://voxlink.ru/kb/voip-devices-configuration/nastrojka-L2TP-servera-na-CentOS/
  • http://forum.ubuntu.ru/index.php?PHPSESSID=59h4cdkbufhu7kvi4dq71qner3&topic=248324.msg1960589#msg1960589
  • Настраиваем VPN связь посредством l2tp + ipsec c использованием в качестве сервера OpenVZ контейнер: https://habrahabr.ru/company/FastVPS/blog/205162/
  • MikroTik. Правильный dst nat при использовании 2-х и более провайдеров: https://habrahabr.ru/post/313342/
  • Настройка Ipsec+L2tp: https://raymii.org/s/tutorials/IPSEC_L2TP_vpn_on_CentOS_-_Red_Hat_Enterprise_Linux_or_Scientific_-_Linux_6.html
  • https://wiki.mikrotik.com/wiki/Manual:Interface/L2TP
  • Конфиг с описанием опций https://ubuntuforums.org/archive/index.php/t-2179055.html
  • Примеры по iproute: http://linux-ip.net/html/tools-ip-route.html
  • Обход блокировки ВК: https://weblance.com.ua/317-obhod-blokirovki-saytov-so-storony-provaydera-na-mikrotik-routeros.html
  • iptables: https://ru.wikibooks.org/wiki/Iptables#.D0.A2.D0.B0.D0.B1.D0.BB.D0.B8.D1.86.D0.B0_mangle
  • http://blog.secaserver.com/2011/10/install-vpn-pptp-server-centos-6/
  • Рулим трафиком в Linux. Аккаунтинг, сбор статистики: https://habrahabr.ru/post/42581/

Author: | Rating: 4/5 | Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *

Allowed HTML-tags: <a>, <code>, <i>, <em>, <strong>, <b>, <u>, <strike>