# В данном гайде я распишу процесс настройки 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 ```