diff --git a/linux/bird-server.md b/linux/bird-server.md new file mode 100644 index 0000000..4eb41d5 --- /dev/null +++ b/linux/bird-server.md @@ -0,0 +1,143 @@ +# В данном гайде я распишу процесс настройки bird сервера на линукс и настройку его на отдачу маршрутов по BGP соседу-микротику +## Начальная установка +``` +apt update +apt upgrade +apt install bird2 +systemctl stop bird +``` +Далее отконфигурим наш исходный файл +``` +echo "" > /etc/bird/bird.conf +nano /etc/bird/bird.conf +``` +И вписываем туда следующее +``` +log syslog all; +router id 192.168.100.22; ## ip вашего сервера + +protocol kernel { + scan time 60; + + ipv4 { + import none; + export none; + }; +} + +protocol device { + scan time 60; +} + +protocol static static_bgp { + # Указываем, что эти маршруты относятся к IPv4 + ipv4; + + + route 10.10.10.1/32 via "enp3s0"; ## Если ваши устройства находятся в разных сетях, то используйте route + + ## Тут прописываем файлы с подсетями, которые будут использоваться + include "/etc/bird/ip.txt"; + include "/etc/bird/Meta.txt"; + include "/etc/bird/Microsoft.txt"; + include "/etc/bird/Google.txt"; + include "/etc/bird/CloudFlare.txt"; + include "/etc/bird/GitHub.txt"; + include "/etc/bird/Telegram.txt"; + include "/etc/bird/ChatGPT.txt"; + include "/etc/bird/Twitter.txt"; +} +## Тут указываем нашего соседа, который будет получать маршруты от нашей системы +protocol bgp Mikrot1 { + description "Mikrotik RB5009"; + neighbor 10.10.10.1 as 64999; + hold time 240; + local as 64888; + multihop; +# passive on; + + # Для BGP сессии тоже нужно явно открыть IPv4 канал + ipv4 { + import none; + export where proto = "static_bgp"; + next hop self; + }; +} +``` +Далее необходимо получить список IP адресов +``` +cd /opt +mkdir blacklist +cd blacklist +mkdir list +touch chklist +chmod +x chklist +nano chklist +``` +И вставляем туда следующий скрипт (можно модифицировать по своему усмотрению) +``` +#!/bin/bash +# Скрипт для скачивания IPv4 адресов и добавления их в bird +# Основан на https://habr.com/ru/articles/359268/ +# Доработал AlexandrLinux (собака) bafista.ru +# Основной список адресов взят тут: https://github.com/lord-alfred/ipranges/tree/main?tab=readme-ov-file +cd /opt/blacklist/list +wget -N -O RU.lst https://github.com/ipverse/rir-ip/raw/refs/heads/master/country/ru/ipv4-aggregated.txt +wget -N https://antifilter.download/list/ipsum.lst +wget -N https://antifilter.download/list/subnet.lst +#wget -N -O ip.lst https://antifilter.network/download/ip.lst +wget -N -O Meta.lst https://raw.githubusercontent.com/SecOps-Institute/FacebookIPLists/master/facebook_ip_list.lst +wget -N -O Google.lst https://raw.githubusercontent.com/lord-alfred/ipranges/main/google/ipv4.txt +wget -N -O Microsoft.lst https://raw.githubusercontent.com/lord-alfred/ipranges/main/microsoft/ipv4.txt +wget -N -O GitHub.lst https://raw.githubusercontent.com/lord-alfred/ipranges/main/github/ipv4.txt +wget -N -O Twitter.lst https://raw.githubusercontent.com/lord-alfred/ipranges/main/twitter/ipv4.txt +wget -N -O Telegram.lst https://raw.githubusercontent.com/lord-alfred/ipranges/main/telegram/ipv4.txt +wget -N -O ChatGPT.lst https://raw.githubusercontent.com/lord-alfred/ipranges/main/openai/ipv4.txt +wget -N -O CloudFlare.lst https://raw.githubusercontent.com/lord-alfred/ipranges/main/cloudflare/ipv4.txt +old=$(cat /opt/blacklist/md5.txt); +new=$(cat /opt/blacklist/list/*.lst | md5sum | head -c 32); +if [ "$old" != "$new" ] +then +echo "md5 chandge" +#cat /opt/blacklist/list/ipsum.lst | sed 's_.*_route & reject;_' > /etc/bird/ipsum.txt +#cat /opt/blacklist/list/subnet.lst | sed 's_.*_route & reject;_' > /etc/bird/subnet.txt +echo "Configure bird start" +sed -i '/^#/d' /opt/blacklist/list/RU.lst && cat /opt/blacklist/list/RU.lst | sed 's_.*_route & reject;_' > /etc/bird/RU.txt +cat /opt/blacklist/list/ip.lst | sed 's_.*_route & reject;_' > /etc/bird/ip.txt +cat /opt/blacklist/list/Meta.lst | sed 's_.*_route & reject;_' > /etc/bird/Meta.txt +cat /opt/blacklist/list/Google.lst | sed 's_.*_route & reject;_' > /etc/bird/Google.txt +cat /opt/blacklist/list/Microsoft.lst | sed 's_.*_route & reject;_' > /etc/bird/Microsoft.txt +cat /opt/blacklist/list/GitHub.lst | sed 's_.*_route & reject;_' > /etc/bird/GitHub.txt +cat /opt/blacklist/list/Twitter.lst | sed 's_.*_route & reject;_' > /etc/bird/Twitter.txt +cat /opt/blacklist/list/Telegram.lst | sed 's_.*_route & reject;_' > /etc/bird/Telegram.txt +cat /opt/blacklist/list/ChatGPT.lst | sed 's_.*_route & reject;_' > /etc/bird/ChatGPT.txt +cat /opt/blacklist/list/CloudFlare.lst | sed 's_.*_route & reject;_' > /etc/bird/CloudFlare.txt +/usr/sbin/birdc configure; +logger "BGP list reconfigured"; +echo "Configure bird done" +echo $new > /opt/blacklist/md5.txt; +echo "New md5 write" +exit 0 +fi +echo "MD5 not change" +echo "Bird not reconfigure" +exit 0 +``` +Потом запускаем скрипт +``` +./chklist +``` +Автоматизируем запуск скрипта +``` +crontab -e +1 +``` +Потом добавьте туда следующую строку +``` +0 0 * * * bash /opt/blacklist/chklist >> /var/log/blacklist.log 2>&1 +``` +При внесении изменений +``` +/usr/sbin/birdc configure +``` +