Обновить README.md
Полное описание использования
This commit is contained in:
122
README.md
122
README.md
@@ -1,3 +1,123 @@
|
|||||||
# bird_list_ip
|
# bird_list_ip
|
||||||
|
|
||||||
Это скрипт написанный на Python3 для выгрузки пулов ip адресов по номерам AS.
|
Это скрипт написанный на Python3 для выгрузки пулов ip адресов, для bird2.
|
||||||
|
|
||||||
|
# Установка (Debian)
|
||||||
|
|
||||||
|
-- устанавливаем пакеты
|
||||||
|
> sudo apt install -y git bird2 m4
|
||||||
|
|
||||||
|
-- клонируем репозиторий
|
||||||
|
> git clone https://git.alanbox.ru/alan/bird_list_ip.git /opt/bird_list_ip && chmod +x /opt/bird_list_ip/download.py
|
||||||
|
|
||||||
|
-- правим Unit Systemd bird2 для работы с m4
|
||||||
|
> nano /usr/lib/systemd/system/bird.service
|
||||||
|
|
||||||
|
> [Unit]\
|
||||||
|
> Description=BIRD Internet Routing Daemon\
|
||||||
|
> After=network.target\
|
||||||
|
>\
|
||||||
|
> [Service]\
|
||||||
|
> EnvironmentFile=/etc/bird/envvars\
|
||||||
|
> ExecStartPre=/bin/sh -c "/usr/bin/m4 /opt/bird > /etc/bird/bird.conf"\
|
||||||
|
> ExecStartPre=-/usr/lib/bird/prepare-environment\
|
||||||
|
> ExecStartPre=-/usr/sbin/bird -p\
|
||||||
|
> ExecReload=/bin/sh -c "/usr/bin/m4 /opt/bird > /etc/bird/bird.conf"\
|
||||||
|
> ExecReload=-/usr/sbin/birdc configure\
|
||||||
|
> ExecStart=/usr/sbin/bird -f -u $BIRD_RUN_USER -g $BIRD_RUN_GROUP $BIRD_ARGS\
|
||||||
|
> Restart=on-abort\
|
||||||
|
>\
|
||||||
|
> [Install]\
|
||||||
|
> WantedBy=multi-user.target\
|
||||||
|
|
||||||
|
-- пример конфигурации bird2 на m4, для работы со списками
|
||||||
|
> nano /opt/bird
|
||||||
|
|
||||||
|
> log syslog {error, fatal};\
|
||||||
|
> router id ~~**1.1.1.1**~~;\
|
||||||
|
>\
|
||||||
|
> protocol device {\
|
||||||
|
> }\
|
||||||
|
>\
|
||||||
|
> protocol direct {\
|
||||||
|
> ipv4; # Connect to default IPv4 table\
|
||||||
|
> #ipv6; # ... and to default IPv6 table\
|
||||||
|
> }\
|
||||||
|
>\
|
||||||
|
> protocol kernel {\
|
||||||
|
> learn;\
|
||||||
|
> merge paths on;\
|
||||||
|
> ipv4 { # Connect protocol to IPv4 table by channel\
|
||||||
|
> import none; # Import to table, default is import all\
|
||||||
|
> export filter { if (net.len > 0 && source=RTS_BGP) then { accept; } reject; }; # Export to protocol. default is export none\
|
||||||
|
> };\
|
||||||
|
> }\
|
||||||
|
>\
|
||||||
|
> \# SUB m4\
|
||||||
|
> define(\`LOCATION', \`~~**741**~~')\
|
||||||
|
> include(\`/opt/bird_list_ip/unloading/bird2_v4.m4')\
|
||||||
|
>\
|
||||||
|
> filter border_in {\
|
||||||
|
> if (net ~ 0.0.0.0/32) then { reject; }\
|
||||||
|
> if (net ~ 127.0.0.0/8) then { reject; }\
|
||||||
|
> if (net ~ 169.254.0.0/16) then { reject; }\
|
||||||
|
> if (net ~ 224.0.0.0/4) then { reject; }\
|
||||||
|
> if (net ~ 240.0.0.0/4) then { reject; }\
|
||||||
|
> if (net.len > 0) then { accept; }\
|
||||||
|
> reject;\
|
||||||
|
> }\
|
||||||
|
>\
|
||||||
|
> filter border_out {\
|
||||||
|
> if (net ~ 0.0.0.0/32) then { reject; }\
|
||||||
|
> if (net ~ 127.0.0.0/8) then { reject; }\
|
||||||
|
> if (net ~ 10.0.0.0/8) then { reject; }\
|
||||||
|
> if (net ~ 172.16.0.0/12) then { reject; }\
|
||||||
|
> if (net ~ 192.168.0.0/16) then { reject; }\
|
||||||
|
> if (net ~ 169.254.0.0/16) then { reject; }\
|
||||||
|
> if (net ~ 224.0.0.0/4) then { reject; }\
|
||||||
|
> if (net ~ 240.0.0.0/4) then { reject; }\
|
||||||
|
> accept;\
|
||||||
|
> }\
|
||||||
|
>\
|
||||||
|
> define(\`BGP_BORDER', \`\
|
||||||
|
> protocol bgp $1 {\
|
||||||
|
> ipv4 {\
|
||||||
|
> import filter border_in;\
|
||||||
|
> export filter border_out;\
|
||||||
|
> next hop self;\
|
||||||
|
> };\
|
||||||
|
> router id $2;\
|
||||||
|
> source address $2;\
|
||||||
|
> local $2 as ~~**65431**~~;\
|
||||||
|
> neighbor $3 as ~~**65949**~~;\
|
||||||
|
> hold time 90;\
|
||||||
|
> keepalive time 60;\
|
||||||
|
> passive off;\
|
||||||
|
> multihop;\
|
||||||
|
> bfd no;\
|
||||||
|
> }\
|
||||||
|
> ')\
|
||||||
|
>\
|
||||||
|
> BGP_BORDER(\`CLIENT1', \`~~**10.8.1.1**~~', \`~~**10.8.1.2**~~')\
|
||||||
|
> BGP_BORDER(\`CLIENT1', \`~~**10.8.2.1**~~', \`~~**10.8.2.2**~~')\
|
||||||
|
> ...\
|
||||||
|
> BGP_BORDER(\`CLIENT99', \`~~**10.8.99.1**~~', \`~~**10.8.99.2**~~')\
|
||||||
|
|
||||||
|
~~**Так**~~ - это требует вашего внимания, для вашей конфигурации bird2
|
||||||
|
|
||||||
|
-- добавляем задачу в cron, обновление раз в неделю в среду в 5 утра
|
||||||
|
> crontab -e
|
||||||
|
|
||||||
|
> 0 5 * * 3 /usr/bin/python3 /opt/bird_list_ip/download.py > /dev/null 2>&1 # обновление списков ip адресов
|
||||||
|
|
||||||
|
-- запуск загрузки в ручную
|
||||||
|
> python3 /opt/bird_list_ip/download.py # выгружаем все списки
|
||||||
|
> python3 /opt/bird_list_ip/download.py RU # выгружаем конкретный список
|
||||||
|
> python3 /opt/bird_list_ip/download.py RU JAPAN KOREA # выгружаем перечисленные списки
|
||||||
|
|
||||||
|
-- добавляем bird2 в автозагрузку и запускаем
|
||||||
|
> systemctl daemon-reload && systemctl enable bird.service && systemctl start bird.service
|
||||||
|
|
||||||
|
**#####################################################################**\
|
||||||
|
Пример конфигурация списка выгрузки можно посмотреть в файле list в репозитории,\
|
||||||
|
так же допускается указывать url ссылку на конфигурацию первой строкой в файле list
|
||||||
|
|||||||
Reference in New Issue
Block a user