Перейти к содержанию

Рекомендуемые сообщения

Опубликовано (изменено)

Доброго всем нового года!
Прикупил себе на днях Keenetic Hopper 3811. Задача была - wireguard vpn на свой сервер на загнивающем, плюс нормальная работа российских ип через прямое соединение провайдера. Для этих целей нообходимо разделить маршрутами то что будет заворачиваться в туннель, а что пойдет по прямому соединению.

Как оказалось (столкнулся впервые) что есть возможность получить список подсетей сегментов интернет Российского диапазона, порядка 11 тысяч записей. Записи в виде CIDR или диапазон от до.

Сразу же столкнулся с проблемами. 
Проблема номер один - попытка прописать статические маршруты.
Для получения файла с маршрутами для загрузки в роутер пользовался скриптом:

#!/usr/bin/env python3
# coding: utf-8
from ipaddress import IPv4Address, IPv4Network, ip_address, summarize_address_range
import sys
import os
import json
import requests

def main(country_code):

    networks = []
    filepath = os.path.dirname(sys.argv[0])
    result = filepath + '/ip_' + country_code + '.bat'
    url = 'https://stat.ripe.net/data/country-resource-list/data.json?resource=' + country_code
    ripe_ip = json.loads(requests.get(url).content)['data']['resources']['ipv4']

    with open(result, 'w') as out_file:
        for record in ripe_ip:
            if record.find('-') > -1:
                ips = record.split('-')
                ipaddr = list(summarize_address_range(IPv4Address(ips[0]), IPv4Address(ips[1])))
            else:
                ipaddr = [IPv4Network(record)]
            networks.extend(ipaddr)

        for line in list(networks):
            print("route ADD " + str(line.network_address) + " MASK " + str(line.netmask) + " 0.0.0.0")

if __name__ == "__main__":
    main("ru")


Понятное дело этот скрипт составляет список из ~11 тысяч строк...
При попытке загрузки на роутер есть ограничение в 1024 строки. Ну ок, я разбил файл на 11 файлов по одной тысяче и начал загружать. При загрузке 8 тысяч строк роутер повис... И отказался дальше загружать - ограничение прошивки. После перезагрузки остается 6 тысяч строк.
Очень жаль, но пришлось отказаться от работы со статическими маршрутами.

Как опытный пользователь интернета, после такого облома я полез изучать профильные форумы. Понял что мало кто сталкивается с подобными проблемами и находят какое то правильное решение. Один из вариантов был установка на роутер программы, которая загружает маршруты по протоколу BGP либо из какой то внешней AS, либо из файла. Ссылку на это решение прикрепляю:
https://github.com/DennoN-RUS/Bird4Static

Проблема номер два - для установки решения требуется установка Entware. На данном форуме есть инструкция по установке, и даже на сайте кинетика есть инструкция по установке. Но - она не работает. На шаге когда на размеченой флешкой в ext4 в папке /install размещен файл установки Entware (aarch64), при переключении накопителя на вкладке opkg согласно инструкции  - файл и папка install чудесным образом пропадают, и в логе чего то похожего на то что указано в инструкции - нет. (Версия KeeneticOS 4.2.4)
Соответственно ничего не устанавливается, сервер ssh на порту 222 не запускается. 

Попытался установить Bird4Static вручную, для этого сделал:
telnet 192.168.1.1
login
>exec sh
# команды установки Bird4Static по инструкции 
Все идет по плану до момента запуска расширения Ip4Static. Из за отсутсвия Entware не запускается служба.
Разбираться почему это не работает честно говоря желания не вызывает....

Плюнув на все написал программу на golang которая берет из бд RIPE российские адреса и прописывает маршурты 
Засунул запуск программы в крон на раз в сутки

для работы просит конфиг /opt/routing/config.json:

{
  "country_code": "RU",
  "file_path": "/opt/routing/subnets.txt",
  "interface": "ppp0",
  "ignored_subnets": [],
  "ignored_ips": []
}

интерфейс - имя интерфейса через который будут прописаны маршруты рф сегмента.
программа сначала удаляет маршруты которые есть в subnets.txt, затем делает запрос в бд RIPE, затем записываает subnets.txt, затем добавляет маршруты в роутер.
бинарь тоже надо размеситить туда же. Есть пока ошибки суммаризации маршрутов но в общем решение работает. 

Если интересно то могу как то допилить функционал, но без фанатизма.

 

Изменено пользователем OFFSIDE
Опубликовано (изменено)
7 часов назад, OFFSIDE сказал:

Есть пока ошибки суммаризации маршрутов но в общем решение работает. 

 

Исправил суммаризацию маршрутов

 

Изменено пользователем OFFSIDE
Опубликовано (изменено)

Инструкция по установке
Файлы config.json и routing_ripe разместить в директории на компьютере, например c:/routing
Установить компоненты системы, я сделал так:
image.thumb.png.4a80a6882f97c5820abb8dc0bd35deaa.png
Открыть страницу настройки OPKG, выбрать встроенный накопитель
image.png.68bd4c20454933fbd598230ea63b39ab.png
image.thumb.png.6a09d54c08c7e8268caaaa1d5150208d.png

Настройки сохранить.
Открыть приложения:
image.png.f3907b8b47b945e888ce5a05f04095a1.png

Выбрать встроенное хранилище
image.png.e898722978c7770be32ef0ec0d9a4c62.png

image.thumb.png.d8f2a91134ea1cb6ca8336430e958c55.png

Создать папку routing,  загрузить в нее 2 файла config.json и routing_ripe из папки c:/routing

Зайти на роутер через командную строку:

telnet 192.168.1.1

Выполнить команыды

exec sh

chmod +x /opt/routing/routing_ripe

командой /opt/routing/routing_ripe запустить процесс обновления маршрутов

командой
crontab -e
вызвать текстовый файл настройки планировщика
нажать i

написать сроку 
0 3 * * * ./opt/routing/routing_ripe
нажать два раза эскейп, набрать на клавиатуре :wq
готово

ПЫ.СЫ. В приоритетах подключений переносим ВПН наверх, к провайдеру оставляем внизу.

routing_ripe config.json

Изменено пользователем OFFSIDE
  • OFFSIDE изменил название на Роутинг РФ из RIPe для Keenetic Hopper 3811
Опубликовано

И не знаю что было, решил роутер с нуля переустановить.

По инструкции скачал бин файл прошивки, сделал сброс конфигурации.

Псоле этого Entware установилась корректно и порт 222 поднялся.

Зашел на роутер, сделал

opkg update
opkg upgrade
opkg install mc
opkg install cron

Затем по инструкции постом выше установил и запустил routing_ripe
 

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.