Обход блокировки Яндекса, ВК, ОК из Украины с помощью Mikrotik
!!! Статья находится в оформлении, если что-то не будет понятно пишите в комментарии !!!
Устанавливаем l2tp и ppp, так же ставим bind-utils
1 2 3 4 |
yum install epel-release yum install ppp xl2tpd 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[global] port = 1701 ;порт на котором работает туннель listen-addr = 5.5.5.5 ;ip адрес интерфейса на сервере [lns l2tpd] ;l2tpd — имя можно указать любое lac = 0.0.0.0-255.255.255.255 ip range = 172.22.100.100-172.22.100.250 ;диапазон ip-алресов, выдаваемых сервером клиентам local ip = 172.22.100.1 ;адрес сервера в туннеле биндится на интерфейс ppp require chap = yes ;требование аутентификации ppp по протоколу chap refuse pap = yes ;отказ в аутентификации ppp по протоколу pap require authentication = yes ;требование к клиентам проходить обязательную аутентификацию name = l2tpd ;имя pppoptfile = /etc/ppp/options.xl2tpd ;файл содержащий описание опций ppp length bit = yes ;использование бита длины, указывающего полезную нагрузку пакета |
(!) Обратите внимание, что в качестве символа комментариев тут используется ";", когда я использовал "#" xl2tpd не мог распарсить конфиг и ругался на эти строчки
Настраиваем /etc/xl2tpd/l2tp-secrets
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# 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. * * * # let all , because we use auth with ppp, see more here: https://habrahabr.ru/company/FastVPS/blog/205162/ |
Настраиваем /etc/ppp/options.xl2tpd
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
ipcp-accept-local ipcp-accept-remote ms-dns 8.8.8.8 ms-dns 8.8.4.4 # ms-dns 192.168.1.1 # ms-dns 192.168.1.3 # ms-wins 192.168.1.2 # ms-wins 192.168.1.4 noccp auth #запрос клиенту на аутентификацию до установления обмена сетевыми пакетами #crtscts idle 1800 mtu 1410 mru 1410 nodefaultroute debug #lock #создание lock файла для сохранения эксклюзивного доступа к устройству lcp-echo-failure 10 # количество неудачных echo запросов до того как провести отключение клиента lcp-echo-interval 60 #интервал echo запросов proxyarp connect-delay 5000 logfile /var/log/ppp/ppp.log #логировние |
(?) Тут я закомментировал две опции которые были установлены по-умолчанию crtscts и lock, но при старте pppd, он ругался на них, мол ничего про них не знает
Теперь настраиваем логины/пароли в файле /etc/ppp/chap-secrets
(или /etc/ppp/pap-secrets если используете pap в настройках xl2tpd.conf)
1 2 3 4 5 6 |
# Secrets for authentication using CHAP # clienе server secret IP addresses "login" "l2tpd" "password" * |
Все, теперь можно запустить демон командой:
1 2 3 |
xl2tpd -D |
В ответ вы либо увидите ошибки (особенно полезно в случае проблем с конфигами и во вермя отладки), либо что-то типа:
1 2 3 4 5 6 7 8 9 10 11 |
[root@d5hz ppp]# xl2tpd -D xl2tpd[27536]: Not looking for kernel SAref support. xl2tpd[27536]: Using l2tp kernel support. xl2tpd[27536]: xl2tpd version xl2tpd-1.3.8 started on d5hz.astbiz.com PID:27536 xl2tpd[27536]: Written by Mark Spencer, Copyright (C) 1998, Adtran, Inc. xl2tpd[27536]: Forked by Scott Balmos and David Stipp, (C) 2001 xl2tpd[27536]: Inherited by Jeff McAdams, (C) 2002 xl2tpd[27536]: Forked again by Xelerance (www.xelerance.com) (C) 2006-2016 xl2tpd[27536]: Listening on IP address 5.5.5.5, port 1701 |
Если видите то, что выше, то значит все ок, xl2tpd слушает порт, если логи не интересуют можно стартовать демона так: service xl2tpd start (или service xl2tpd restart)
Теперь надо настроить l2p клиента
Для микротика (routeros), это делается тут: Interfaces > Add new > L2TP-Client
Вводите такие настройки
1 2 3 4 5 6 7 |
name: любое удобное имя, у меня l2tpd Connect to: 5.5.5.5 (адрес сервера, в настройках xl2tpd.conf) User: логин (указанный в настройках chap-secrets) Password: пароль (указанный в настройках chap-secrets) Allow: chap |
Теперь сохраняетесь и включаете соединение (если оно было отключено ранее), смотрите Status, должно стать connected
На сервере в окне с запущенным (xl2tpd -D) должны увидить типа того (11.11.11.11 - ваш "домашний" ip):
1 2 3 4 |
xl2tpd[27536]: Connection established to 11.11.11.11, 1701. Local: 25534, Remote: 168 (ref=0/0). LNS session is 'l2tpd' xl2tpd[27536]: Call established with 11.11.11.11, Local: 31950, Remote: 1, Serial: 88 |
Теперь можно посмотреть ifconfig на сервере, увидите что-то вроде
1 2 3 4 5 6 7 8 9 |
ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1410 inet 172.22.100.1 netmask 255.255.255.255 destination 172.22.100.100 ppp txqueuelen 3 (Point-to-Point Protocol) RX packets 5 bytes 167 (167.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 3 bytes 30 (30.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 |
Тунель установился, все ок
Включаем форвардинг на сервере
1 2 3 |
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf |
и применяем изменения
1 2 3 |
# sysctl --system |
Теперь включаем маскарадинг на сервере
1 2 3 |
# iptables -t nat -A POSTROUTING -o eth0 -s 172.22.100.0/24 -j MASQUERADE |
# если есть ограничения файрвола
1 2 3 4 |
# iptables -A FORWARD -i eth0 -o ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT # iptables -A FORWARD -i ppp0 -o eth0 -j ACCEPT |
не забываем сохранить правила, для автозагрузки:
1 2 3 |
# service iptables save |
если при сохранении правил получаете ошибку
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:
1 2 3 |
# yum install iptables-services |
и добавить в автозагрузку
1 2 3 |
# systemctl enable iptables.service |
и уж затем, выполнить
1 2 3 |
# service iptables save |
так же не забудьте добавить в автозагрузку xl2tpd
1 2 3 |
# systemctl enable xl2tpd |
Теперь, желательно, перезагрузиться и убедиться, что все автозапустилось и правила файрвола на месте:
1 2 3 4 5 |
# reboot # systemctl status xl2tpd.service # iptables -L -t nat |
Делаем маскарадинг на микротике
Перенаправляем трафик яндекса/вк/ок в тунель. Добавляем роуты на микротике
Профит!
Только что экспериментировал с разными способами, решил вообще не маркировать пакеты:
- добавил 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/21Kaspersky
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
-
123456# systemctl enable xl2tpd = Добавляем в автозагрузку в CentOS 7# systemctl start xl2tpd# systemctl status xl2tpd.service# journalctl –xn
- 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: | Tags: /
| Rating:
Leave a Reply