Как дед свою автономную систему запускал
Очень давно в моей голове, ещё года с 14го витает идея сделать свой собственный хостинговый проект. Чтобы что? Чтобы то. По сути потому что могу, ну и так, поиграться в целом.
Всё начинается с регистрации нашего уютного предприятия в главном управляющем публичной адресацией сети интернет по европейскому региону – RIPE. Сложностей минимум – регистрируемся, заливаем пачку документов и платим мзду в размере нескольких тысяч евро за членство. Получаем подтверждение с той стороны и вот мы уже официальный член партии.
Как говорил Билли Гейтс – 640 килобайта хватит всем (интересный факт, что данное высказывание, которое сейчас является культовым, было исключительно ошибкой журналиста, поскольку сам Билли сказал фразу – “Когда мы установили верхний лимит PC-DOS на 640 килобайт, мы думали, что никому никогда столько памяти не понадобится”, но журналист, как водится, не уточнил что именно имел в виду Гейтс. Так и повелось.) Так и в компьютерных сетях при их организации в стародавние времена было сделано смелое предположение, что 4 миллиарда уникальных адресов в интернете будет достаточно, однако оказалось не казалось, в связи с чем в дополнение к протоколу ipv4, ограниченного этими самыми 4 миллиардами, родился протокол ipv6, с разительно большим адресным пространством (для понимающих в ipv4 используется всего 32 бита для адреса, в свою очередь в ipv6 используется уже 128, а 2 в степени 128 это очень и очень много)
Однако отступление выше было предусмотрено для того, чтобы описать следующие шаги после регистрации. Итак, мы уже входим в сообщество. Каждый партнёр имеет право на одну бесплатную ipv4 сеть размера /24 (256 адресов) и одну бесплатную ipv6 сеть размера /32 (это очень очень много адресов). Но есть один нюанс. Пару-тройку лет назад свободные блоки ipv4 окончательно закончились, благодаря активному развитию интернета, а так же киберсквоттерам, которые в своё время накупили подсетей где могли и теперь втридорога продают их всем страждущим по 30-60 евро за адрес (путём несложных математических исчислений имеем цену за /24 префикс от 7 тысяч евро и в космос) Со своей стороны RIPE придумал хитрую схему с очередью на выдачу. После того, как свободные блоки закончились предприятие пришло к выводу, что стоит начать распаковывать зарезервированные блоки и ставить в очередь всех страждущих, дабы в случае освобождения уже существующих сразу же выдавать им. На момент получения моего личного блока я провёл в очереди около 500 дней. ipv6 же выдали сразу после запроса без каких-либо проблем.
По завершению второго шага на руках имеем два блока буличных ip адресов – классический ipv4 (185.227.77.0/24) и новомодный ipv6 (2a13:a1c0::/32).
Сам по себе интернет не является какой-то одной большой центральной точкой, а состоит из множества различного оборудования, которое сообщает по цепочке друг другу как к нему добраться, а уже внутри себя управляет присвоенными ему блоками адресов. Соответственно для того, чтобы весь интернет узнал как попасть на route 66 – мы должны через кого-то, кто уже поключен к глобальной системе, рассказать остальным, что наши блоки лежат вот тут вот и к ним ходить через вот тут вот. По историческим сведениям мы знаем, что в стародавние времена для распространения маршрутов использовался протокол RIP, который уже R.I.P. и ему на замену пришёл очаровательный и неповоротливый BGP. Для удобства распространения информации все выданные блоки адресов должны быть ассоциированы с виртуальным номером автономной системы (здесь и далее ASN), однако дополнительно регистратор уведомляет, что у каждой автономной системы должно быть как минимум два канала, через которые анонсируются в сеть её блоки адресов. Сказано – сделано, ищем двух оперторов связи, которые готовы предоставить нам услугу IP Transit, договариваемся с ними на BGP пиринг и подаём прошение в RIPE, указывая данных операторов связи как своих контрагентов. В случае успеха получаем заветный номер (AS214507 в нашем случае).
Дальше дело техники, закупаем тонну оборудования, пограничный маршрутизатор, свитч, сотню серверов, устанавливаем всё это где-то, настраиваем пиринг и радуемся жизни громко хлопая в ладоши. Но жизнь, как известно, чуть сложнее, чем могла бы быть. Поскольку с теоретической частью мы околозакончили – можно переходить к практике.
Итак, поскольку я люблю сети и компудахтерные технологии, плюс, как я упоминал вначале, у меня в душе сидит идея об организации своего собственного хостинга – было принято решение купить шкаф и вот тут вот под ногами строить что-то прям в доме.
Первая проблема, с которой я столкнулся была в отсутствии хоть какого-то внятного интернета в моём селе. Путём долгих вдумчивых рассуждений был закуплен набор Starlink, протестирован и введён в эксплуатацию с небольшими ограничениям в плане скорости (например Starlink выдаёт 250 мегабит на скачивание и до 25 мегабит на загрузку в интернет, ну и задержка от 50 до 150 мс в зависимости от погодных условий и прочих флуктуаций в сети интернет) Меня это “устраивает”, однако где-то фоново происходит проект кибердеревни. Я уже обнаружил идущиё вдоль моря магистральнй оптический кабель корпорации ТЕТ и веду переговоры по строительству отвода в помещение школы неподалёку от кабеля. Вообще была идея стерменировать интернет вот тут вот дома, но строительство 800 метров оптического кабля должно было встать в 40000 евро, когда 350 метров в околоподъёмные 17000, что тоже очень дорого, но решаемо. В общем ТЕТ предприятие большое и неповоротливое, да и я в целом не флеш, так что вялотекуще общаемся и думаем про строительство, радиолинки и прочие страсти христовы.
Возвращаясь к сказанному выше с дырочкой в интернет мы определились, однако теперь нам нужно две вещи – оборудование и провайдеры, которые готовы дать нам ту самую рукопожатость с системой интернет. По оборудованию были произведены изыскания и выбраны Juniper SRX1500 как пограничный роутер в силу его производтельности и удобства настройки, как свитч для будущих клиентов тут на месте был выбран Juniper QFX5000-какой-то там, с 48 SFP портами и 6 QSFP. Вряд ли, конечно, получится утилизировать всю пропускную способность, выдаваему этой железкой, но почему бы и да. Попутно в процессе эксплуатации было выявлено, что для внутренних нужд дома категорически мало 8 портов ethernet, да ещё и некоторым требуется Power-over-ethernet решение, в связи с чем был дозаказан Juniper EX3400-48P. (пока вместо него стоит 8-портовый некротик с двумя десяточными аплинками, странное, конечно, решение от Mikrotik, поскольку имея 8 гигабитных портов ты даже один десяточный сильно не утилизируешь, но есть как есть)
Собираем всё это в гирлянду, подключаем, настраиваем и вот уже дома есть интернет, вайфай раздаётся через некротиковскую тарелку и все счастливо живут. Однако мы тут не про личный комфорт, а про публичный, поэтому продолжаем реализацию нашего проекта. У starlink есть несколько тарифных планов как для частных лиц, так и для бизнеса. Сначала я жил на простом residental подключении за 50 евро в месяц, однако в данном случае невозможно получить один статический внешний ip адрес и всех клиентов Starlink выпускает через богомерзкий CGNAT. (технология трансляции внутренних блоков ip-адресов клиентов в адреса из публичных блоков, поскольку, как мы помним, количество публичных ip-адресов органичено и закончилось, соответствено по определённой логике несколько клиентов для выхода в интернет могут использовать один и тот же публичный ip-адрес даже не зная об этом. Для провайдера это плюс, однако для конечного клиента это минус, поскольку запросы из сети интернет не могут быть доставлены напрямую клиенту с приватным адресом) По результатам исследования starlink был перерегистрирован как business клиент с ценником в три раза дороже, однако из бенефитов мы получаем 2 терабайта приорити траффика (я даже боюсь себе представить что такое не приорити с текущими потерями периодическими и временем задержки) и условно статический публичный ip-адрес, который приземляется непосредственно на мой пограничный маршрутизатор, что даёт мне возможность получать прямые запросы из интернета на моё оборудование минуя обработку на стороне Starlink. (но конечно же со своими ограничениями по протоколам и блокировками некоторых сайтов согласно регулам ЕС)
Соответственно – дырочка в интернет найдена, прямой доступ до оборудования настроен, можно идти калядовать до пиринг партнёров с целью установления IP Transit. Чаще всего в больших датацентрах используется прямое подключение корневого или не очень оборудования между участниками сети. Т.е. например при покупке услуги IP Transit у корпорации RETN и нахождении оборудования в точке присутствия последнего просто организовывается прямое соединение порт в порт минуя всевозможное промежуточное оборудование. Но наш случай сложный.
Пока оптическая трасса находится в процессе обсуждения у нас имеется только дырочка в интернет через космос. Сам по себе starlink не предоставляет для клиентов услуги IP Transit, в связи с чем было принято решение временно использовать GRE туннели до партнёров. Это даже не VPN или тому подобное, скорее инкапсуляция траффика для удобства целенаправленной передачи данных. Соответственно находим парочку партнёров, договариваемся с ними, настраиваем туннели и видим как траффик успешно течёт в их сторону и возвращается обратно.
А дальше начинается прекрасное общение с вышестоящими провайдерами. Например у того же RETN все анонсы от их партнёров фильтруются по данным, находящимся в описании автономной системы. Обычно там указывается откуда данная автономная система может получать анонсы и анонсы кого в какую автономную систему может присылать. И всё было очень просто, когда твоя автономная система является конечной. Т.е. ты просто указываешь свои данные и данные партнёров и полетели. Однако когда ты сам становишься транзитным оператором приходится изучать новые уровни дна. И в наше описание автономной системы добавляется новая запись типа AS-SET, которая по сути является списком номеров автономных систем, которые наша автономная система желает анонсировать своим партнёрам.
Долго ли, которотко ли, однако за сутки удалось с некоторыми ограничениями завести всё это дело. Конечно RETN в Таллинне почему-то не хочет принимать мои личные префиксы на своём оборудовании, однако через Ригу всё завелось и вот уже довольный и счастливый дед, радостно потирая ручонки может из любой точки интернета достучаться до NanoPi Neo 2, лежащего вот тут вот в шкафу, без каких либо ограничений. Причём не только по ipv4 (185.227.77.2), но и по ipv6 (2a13:a1c0:77:2::1).
В процессе настройки всего этого было много интересного как с настройкой gre туннелей, так и с routing instances, да и прочие приседания с попытками подружить Juniper и Mirkotik, однако всё получилось. Возможно я расскажу об этом, но это уже совсем другая история.