Jump to content
Алексей Саратовский

Обход блокировок с использованием BGP

Recommended Posts

Настраиваю обход блокировок by Александр Рыжов (https://keenetic-gi.ga/2019/01/22/bgp_routing.html) и, видимо, что-то сделал не так. Заблоченные ресурсы не открываются, в логах вот так: 

Сен 29 13:46:09 bird4
antifilter: Error: Hold timer expired
Сен 29 13:46:32 ndhcpc
GigabitEthernet1: received ACK for 95.165.141.133 from 95.165.128.1.
Сен 29 13:47:13 bird4
filters, line 40: Invalid gw address
Сен 29 13:47:13 bird4
Core::Syslog: last message repeated 4 times.
Сен 29 13:47:13 bird4
...
Сен 29 13:47:13 bird4
filters, line 40: Invalid gw address
Сен 29 13:47:13 bird4
...

 

Что сделал (сори на нубство):

BusyBox v1.30.1 () built-in shell (ash)

~ # opkg install bird1-ipv4
Installing bird1-ipv4 (1.6.4-1b) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/bird1-ipv4_1.6.4-1b_mipsel-3.4.                                                                                                                                                             ipk
Configuring bird1-ipv4.
~ # mc /opt/etc/bird4.conf

~ # mcedit /opt/etc/bird4.conf

~ # /opt/etc/ndm/openvpn-route-up.d/010-add_antizapret_route.sh
-sh: /opt/etc/ndm/openvpn-route-up.d/010-add_antizapret_route.sh: not found
~ # mcedit /opt/etc/ndm/openvpn-route-up.d/010-add_antizapret_route.sh

~ # chmod +x /opt/etc/ndm/openvpn-route-up.d/010-add_antizapret_route.sh
~ # /opt/etc/init.d/S04bird1-ipv4 start
 Starting bird4...              done.
~ # /opt/etc/ndm/openvpn-route-up.d/010-add_antizapret_route.sh
~ # ip route list table 1000
~ # mcedit /opt/etc/bird4.conf

~ # chmod +x /opt/etc/ndm/openvpn-route-up.d/010-add_antizapret_route.sh
~ # /opt/etc/init.d/S04bird1-ipv4 start
 Starting bird4...              already running.
~ # /opt/etc/ndm/openvpn-route-up.d/010-add_antizapret_route.sh
~ # mcedit /opt/etc/ndm/openvpn-route-up.d/010-add_antizapret_route.sh

~ # ip route list table 1000
 

 

IP от провайдер белый, статический.

"IP адрес удалённого конца VPN-соединения." по совету из телеги брал в маршрутах в вэб-интерфейсе роутера, из колонки "шлюз"- сейчас там нули почему-то.

 

Что я сделал не так?

Спасибо.

Share this post


Link to post
Share on other sites

Кстати, после всех манипуляций перестал работать телеграм на компьютере. При этом на телефоне, подключенном к той же wifi сети всё работает...

Share this post


Link to post
Share on other sites

 

И вот еще. Александр пишет: "Убедитесь, что нужная таблица маршрутизации (1000) участвует в маршрутизации и мелькает в выводе ip rule list.".

При выполнении ip rule list вижу следующее:

~ # ip route list
default via 95.165.128.1 dev eth3
10.1.30.0/24 dev br1 scope link  src 10.1.30.1
10.18.96.0/24 dev ovpn_br50 scope link  src 10.18.96.6
10.18.96.1 dev ovpn_br50 scope link
62.112.106.130 via 95.165.128.1 dev eth3
62.112.113.170 via 95.165.128.1 dev eth3
91.240.64.13 via 95.165.128.1 dev eth3
95.165.128.0/19 dev eth3 scope link  src 95.165.141.133
108.59.1.193 dev ovpn_br50 scope link
192.168.2.0/24 dev br0 scope link  src 192.168.2.1

Т.е. впн тут упоминается и 10.18.96.1 - это как раз тот ip, что я для впн указывал...

Но вот насчет "1000й таблицы" - я тут ничего не вижу...

Share this post


Link to post
Share on other sites
3 часа назад, Алексей Саратовский сказал:

 

И вот еще. Александр пишет: "Убедитесь, что нужная таблица маршрутизации (1000) участвует в маршрутизации и мелькает в выводе ip rule list.".

При выполнении ip rule list вижу следующее:

~ # ip route list
default via 95.165.128.1 dev eth3
10.1.30.0/24 dev br1 scope link  src 10.1.30.1
10.18.96.0/24 dev ovpn_br50 scope link  src 10.18.96.6
10.18.96.1 dev ovpn_br50 scope link
62.112.106.130 via 95.165.128.1 dev eth3
62.112.113.170 via 95.165.128.1 dev eth3
91.240.64.13 via 95.165.128.1 dev eth3
95.165.128.0/19 dev eth3 scope link  src 95.165.141.133
108.59.1.193 dev ovpn_br50 scope link
192.168.2.0/24 dev br0 scope link  src 192.168.2.1

Т.е. впн тут упоминается и 10.18.96.1 - это как раз тот ip, что я для впн указывал...

Но вот насчет "1000й таблицы" - я тут ничего не вижу...

вы команды перепутали

ip rule list != ip route list

ЗЫ сначала нужно решать проблемы с bird

Edited by r13
  • Upvote 1

Share this post


Link to post
Share on other sites

Да, вы правы. Невнимательно посмотрел...

Вот вывод по правильной команде. И, как я понимаю, что-то тут пошло не так...

~ # ip rule list
0:      from all lookup local
4:      from all iif br0 lookup 1000
5:      from all iif br0 lookup 1000
6:      from all iif br0 lookup 1000
7:      from all iif br0 lookup 1000
8:      from all iif br0 lookup 1000
9:      from all iif br0 lookup 1000
10:     from all fwmark 0xffffcff lookup main
164:    from all fwmark 0xffffd00 lookup 42
165:    from all fwmark 0xffffd00 lookup unspec blackhole
32766:  from all lookup main
32767:  from all lookup default
 

 

А с bird - где копать?

Share this post


Link to post
Share on other sites

Invalid gw address значит что такой ip не может быть гейтвеем на данном роутере, 0.0.0.0 скорее всего означает что соединение вообще не установлено

Share this post


Link to post
Share on other sites

Комрады, куды копать-та?

косяк в IP туннеля? а что соединение не установлено - это какое? сам туннель работает, если его в приоритетах поднять выше провайдера - всё гуд, IP импортный сразу.

Share this post


Link to post
Share on other sites

могу предложить только перепроверить ещё раз /opt/etc/bird4.conf и рестартануть bird /opt/etc/init.d/S04bird1-ipv4 restart

Share this post


Link to post
Share on other sites

Приветствую всех)

Попытался выполнить ту же инструкцию, результат тоже отрицательный. Маршруты строятся, таблица заполняется, а маршрутизация не работает. traceroute с маршрутизатора показывает, что все пакеты по-прежнему идут через основное PPPoE соединение. В линуксе не силён. Просьба помочь решить проблему.

Share this post


Link to post
Share on other sites

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

Как то можно сделать, что бы виртуальная машина была доступна по белому IP?

Share this post


Link to post
Share on other sites

У кого сейчас настроен bgp по той статье? У меня все работало, а сегодня заметил, что маршруты от сервера не получаю. Это у меня косяк? Или у них с сервером что-то?

Share this post


Link to post
Share on other sites

При переходе на прошивку 3.3.15/16 при запуске bird сервис ndm грузит систему на 50-90%. У кого-нибудь есть такой эффект и лекарство от него?

Share this post


Link to post
Share on other sites
21 минуту назад, Владимир Подстречный сказал:

При переходе на прошивку 3.3.15/16 при запуске bird сервис ndm грузит систему на 50-90%. У кого-нибудь есть такой эффект и лекарство от него?

Ждите 3.4, там совместимось ndm с тысячами маршрутов пофиксили. 

Share this post


Link to post
Share on other sites
2 hours ago, r13 said:

Ждите 3.4, там совместимось ndm с тысячами маршрутов пофиксили. 

Да, в техподдержке то же сказали. Спасибо) Надеялся, что сейчас можно поправить.

Share this post


Link to post
Share on other sites
В 29.09.2019 в 14:55, Алексей Саратовский сказал:

filters, line 40: Invalid gw address

Тоже долго не мог разобраться (подключаюсь по L2TP/IPSec), вписывал и 192.168.xx.150 (IP клиента) и 192.168.xx.1 (Gateway IP), но решилось тем, что вписал IP адрес из параметра P-t-P из вывода ifconfig:

# ifconfig

...
ppp3      Link encap:Point-to-Point Protocol  
          inet addr:192.168.xx.150  P-t-P:>>>>1.0.0.1<<<<  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1392  Metric:1
          RX packets:75585 errors:0 dropped:0 overruns:0 frame:0
          TX packets:50265 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:62505563 (59.6 MiB)  TX bytes:3430496 (3.2 MiB)
...

В моём случае будет gw = 1.0.0.1;. После этого маршруты стали нормально создаваться.

Кстати, IP адрес 1.0.0.1 является публичным и принадлежит DNS-серверу Cloudflare. Это баг VPN-сервера, который я использую, в будущих версиях они собираются выдавать другой IP для L2-соединений.

 

По L2TP таким образом заработало, а с OpenVPN настроить пока не получается (такая же ошибка "invalid gw address", что бы ни вписывал), экспериментирую.

Share this post


Link to post
Share on other sites
В 15.04.2020 в 13:46, maksimkurb сказал:

По L2TP таким образом заработало, а с OpenVPN настроить пока не получается (такая же ошибка "invalid gw address", что бы ни вписывал), экспериментирую.

Удалось вам победить OpenVPN? Столкнулся с такой же проблемой.

Share this post


Link to post
Share on other sites
В 26.04.2020 в 23:24, PoliceMan сказал:

Удалось вам победить OpenVPN? Столкнулся с такой же проблемой.

Нет, не удалось. Написал Ansible-скрипт для автоматической настройки роутера, чтобы он сам скачивал списки и прописывал их в ipset (+ есть возможность добавить свои домены), на этом успокоился.

Скрытый текст

Если нужно, ссылка на ansible-скрипт: https://github.com/maksimkurb/ansible-keenetic-hirkn

 

Share this post


Link to post
Share on other sites

Я в итоге перешел с OpenVPN на Wireguard. Там всё ок.

Share this post


Link to post
Share on other sites

Всё дело в том, что не каждый Open VPN сервер подходит. Использовать надо тот, где gw адрес не меняется при подключениях и честно отображается в логах. Например Whoer подходит, а securitykiss нет, по крайней мере в бесплатных вариантах. И для надёжности перезапускать bird скриптом по событию установления соединения.Уже почти год работает без особых проблем, на новых прошивках ещё и тормоза от большого количества маршрутов убрали)

 

Share this post


Link to post
Share on other sites

Пользуюсь L2TP/IPSEC подключением к впн серверу. После перезагрузки роутера, автоматически не подхватывается /opt/etc/ndm/l2tp_ipsec_vpn_up.d/010-add_antizapret_route.sh , приходится активировать вручную. Bird4 запускается. Может можно как-то по таймеру BASH скрипт запустить ? Если при поднятии L2TP/IPSEC не подхватывается.... 

Edited by Виктор Гатилов

Share this post


Link to post
Share on other sites
39 минут назад, Виктор Гатилов сказал:

Пользуюсь L2TP/IPSEC подключением к впн серверу. После перезагрузки роутера, автоматически не подхватывается /opt/etc/ndm/l2tp_ipsec_vpn_up.d/010-add_antizapret_route.sh , приходится активировать вручную. Bird4 запускается. Может можно как-то по таймеру BASH скрипт запустить ? Если при поднятии L2TP/IPSEC не подхватывается.... 

Этот хук для vpn сервера. Для клиента  изучайте ifstatechanged.d

  • Thanks 1

Share this post


Link to post
Share on other sites
21 hours ago, Владимир Подстречный said:

Кто-нибудь может подсказать, можно ли в конфиге bird использовать имя интерфейса вместо gw=ip ???

Разобрался. Заодно и решил проблему с динамическим gw при смене подключения.

Share this post


Link to post
Share on other sites

Всё оказалось просто)

Есть Keenetic Giga KN-1010, прошивка 3.4.6. На более ранних прошивках со старой версией Open VPN скорее всего не заработает, там переменные окружения и параметры другие. Пример привожу для VPN-подключения с именем "OpenVPN4".

  1. Добавляем параметр "verb 3" в настройки VPN-подключения.
  2. Включаем, после подключения в системном журнале ищем строку вида: PUSH: Received control message: 'PUSH_REPLY,dhcp-option DNS х.х.х.х, redirect-gateway def1,...,route-gateway A.B.C.D, topology subnet,ping 10,ping-restart 60,...
  3. Настраиваем роутер по статье https://keenetic-gi.ga/2019/01/22/bgp_routing.html, используя IP A.B.C.D как IP адрес удалённого конца VPN-соединения. Убеждаемся, что работает.
  4. В /opt/etc/ndm/openvpn-route-up.d добавляем ещё один скрипт 020-bird_restart.sh и делаем его исполняемым. Скрипт меняет 40-ю строку конфигурации bird на новую, с новым gw. Строку желательно проверить 🙂
Spoiler

#!/bin/sh

[ "$ndm_opkg_id" != "OpenVPN4" ] && exit 0

sed  -i[SFX] '40c\      gw = '$route_vpn_gateway';' /opt/etc/bird4.conf

/opt/etc/init.d/S04bird1-ipv4 restart

Вуаля

В линуксе новичок, слепил на коленке, возможно есть и другой путь. Главное - работает)

  • Thanks 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...