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

146 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# В данном гайде я распишу процесс настройки 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
```