Files
Personal/linux/bird-server.md
2026-06-08 08:08:25 +00:00

5.7 KiB
Raw Permalink Blame History

В данном гайде я распишу процесс настройки 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";
    include "/etc/bird/Discord.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
wget -N -O Discord.lst https://raw.githubusercontent.com/1andrevich/Re-filter-lists/refs/heads/main/discord_ips.lst
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