Добавить linux/bird-server.md
Signed-off-by: Reisber <admin@reisber.space>
This commit is contained in:
143
linux/bird-server.md
Normal file
143
linux/bird-server.md
Normal file
@@ -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
|
||||||
|
```
|
||||||
|
|
||||||
Reference in New Issue
Block a user