NeighGen - 使用Python编写的BGP邻居配置生成器,使用PeeringDB的API发现ASN BGP地址
项目描述
NeighGen - BGP邻居配置生成器 + PeeringDB查询工具
+===================================================+
| © 2021 Privex Inc. |
| https://www.privex.io |
+===================================================+
| |
| NeighGen |
| License: X11/MIT |
| |
| Core Developer(s): |
| |
| (+) Chris (@someguy123) [Privex] |
| (+) Kale (@kryogenic) [Privex] |
| |
+===================================================+
NeighGen - A BGP neighbour config generator written in Python,
using PeeringDB's API to discover ASN BGP addresses.
Copyright (c) 2021 Privex Inc. ( https://www.privex.io )
Docker快速入门
docker pull privex/neighgen
docker run --rm -it privex/neighgen -h
docker run --rm -it privex/neighgen asinfo -x -F 210083
docker run --rm -it privex/neighgen asinfo -x 210083
docker run --rm -it privex/neighgen asinfo-raw 210083
docker run --rm -it privex/neighgen neigh 210083
docker run --rm -it privex/neighgen neigh -o ios 210083
如果您想能够通过数据库在本地查询PeeringDB,可以使用Git项目中准备好的Docker Compose环境。
克隆仓库
git clone https://github.com/Privex/neighgen.git
复制用于docker-compose的dk-config.yaml
cp example.dk-config.yaml dk-config.yaml
然后只需运行docker-compose up -d
,这将构建neighgen和postgres容器,并在后台启动它们。
docker-compose up -d
您可以通过docker的日志来监控neighgen的导入过程
docker-compose logs -f ngen
一旦同步完成,您应该可以进入postgres容器,并执行任何查询
docker-compose exec postgres psql -U peeringdb peeringdb
请注意,PeeringDB数据库的生成不是本仓库的一部分。
PeeringDB本地数据库同步功能由peeringdb
包提供:https://github.com/peeringdb/peeringdb-py
安装
从PyPi
我们建议在您的操作系统可用的最新Python版本上安装此包。
当时的大多数现代LTS版本,例如Ubuntu 20.04和Debian 10,至少有Python 3.8可用,而Ubuntu 20.04有Python 3.9可用。
例如,如果您的系统上最新的Python版本是3.8,那么您可以这样在Python 3.8上安装它
python3.8 -m pip install -U privex-neighgen
如果由于某种原因,您的Python发行版不支持使用python3.x -m pip
方法调用Pip,那么您可以使用经典的pip3
命令
pip3 install -U privex-neighgen
从Github
git clone https://github.com/Privex/neighgen.git
cd neighgen
# Option 1. - Install NeighGen onto your system from the repo
pip3 install -U .
# Option 2. - Create a Pipenv virtualenv, and use the software
# straight from the project folder:
pip3 install -U pipenv
pipenv install
pipenv install --dev
pipenv shell
python3 -m neighgen -h
python3 -m neighgen asinfo 210083
配置
软件主要通过一个YML配置文件进行配置。
您可以使用以下命令在~/.ngen.yml
生成一个基本示例配置
neighgen gen_config -o ~/.ngen.yml yml
应用程序将按顺序搜索以下位置以查找配置,直到找到存在的配置文件。它将只加载找到的第一个配置文件
from os import getcwd
from pathlib import Path
PWD = Path(getcwd()).expanduser().resolve()
_CONFIG_FILES = [
'config.yaml', 'config.yml', 'ngen.yaml', 'ngen.yml',
PWD / 'config.yaml', PWD / 'config.yml', PWD / 'ngen.yaml', PWD / 'ngen.yml',
'~/.neighgen/config.yaml', '~/.neighgen/config.yml'
'~/.ngen/config.yaml', '~/.ngen/config.yml'
'~/.ngen.yaml', '~/.ngen.yml'
'~/.peeringdb/config.yaml', '~/.peeringdb/config.yml'
]
列表中的第一个文件,将在项目的基目录中进行扫描,即它将在项目的根目录中查找config.yaml
/ config.yml
/ ngen.yaml
/ ngen.yml
,其中包含LICENSE.txt
、Dockerfile
、README.md
和其他文件。
文件的第二行,将在您的当前工作目录中进行搜索,如果您通过pip安装了应用程序,这可能会很有用,因此它将使用您当前cd到的目录中的config.yml
/ ngen.yaml
。
您还可以生成一个示例ENV文件,但是,只有在YML文件本身不适用时才应使用ENV文件/环境参数,例如,当您需要从使用ENV文件的管理系统(例如systemd)配置应用程序时。
# This will just output to your terminal. You can use either '-o', or you can
# pipe the contents to where-ever you want the ENV file to be.
neighgen gen_config env
neighgen
可以生成的最后一种配置类型是稍作修改的标准YML配置,但预先配置为与Docker(特别是与docker-compose设置)一起使用。
要生成针对Docker的YML配置
neighgen gen_config -o dk-config.yaml docker
示例
asinfo
以美观的表格形式显示PeeringDB关于AS210083 (Privex)的信息
python3 -m neighgen asinfo 210083
以美观的表格形式显示PeeringDB关于AS210083 (Privex)的信息,并包括互联网交换信息
python3 -m neighgen asinfo -x 210083
以美观的表格形式显示PeeringDB关于AS210083 (Privex)的信息,并包括互联网交换信息和设施信息
python3 -m neighgen asinfo -x -F as210083
asinfo-raw
以编程形式显示PeeringDB关于AS210083的信息 - 默认为JSON格式
python3 -m neighgen asinfo-raw 210083
以编程形式显示PeeringDB关于AS210083的信息,包括IXP和设施信息
python3 -m neighgen asinfo-raw -x -F 210083
仅以编程形式显示PeeringDB关于AS210083的IXP信息
python3 -m neighgen asinfo-raw -OX 210083
仅以编程形式显示PeeringDB关于AS210083的设施信息
python3 -m neighgen asinfo-raw -OF 210083
以编程形式显示PeeringDB关于AS210083的IXP信息 - 但为YAML格式而不是JSON
python3 -m neighgen asinfo-raw -OX 210083 yml
以编程形式显示PeeringDB关于AS210083的信息,包括IXP和设施信息,但为XML格式而不是JSON
python3 -m neighgen asinfo-raw -x -F 210083 xml
neigh
显示与AS210083在所有其IXP上进行对等连接的邻居配置,使用默认的操作系统配置格式'nxos'(Cisco NX-OS)
python3 -m neighgen neigh 210083
仅显示名称中包含'ams-ix'的交换点的AS210083的对等配置,使用默认的操作系统配置格式'nxos'(Cisco NX-OS)
python3 -m neighgen neigh 210083 ams-ix
与上一个示例相同,但这次我们手动指定我们想要配置为与'ios'(Cisco IOS)一起使用
python3 -m neighgen neigh -o ios 210083 ams-ix
与上一个示例相同,但我们将v4和v6的对等策略设置为空白,从而禁用了添加对等策略邻居命令
python3 -m neighgen neigh -p4 '' -p6 '' -o ios 210083 ams-ix
网络AS13335在多个不同的AMS-IX区域进行对等连接,因此要限制邻居只使用名为"AMS-IX"的IXP,而不是"AMS-IX香港"或"AMS-IX加勒比",我们使用"-X"启用精确IXP匹配(匹配不区分大小写)。这确保它只使用名为"AMS-IX"的交换点的IXP对等,而不使用其其他区域。
python3 -m neighgen neigh -X 13335 ams-ix
许可证
此Python模块由位于伯利兹城Privex Inc.创建,并许可为X11/MIT许可证。有关许可证文本,请参阅文件LICENSE。
TL;DR;许可证
我们不提供任何保修。您可以复制它、修改它、在具有不同许可证的项目中使用它,甚至在其商业(付费)软件中使用它。
最重要的规则是 - 您必须保留原始许可文本的可视性(见 LICENSE
)在任何副本中。
截图
完整的截图相册可以在以下链接找到: https://imgur.com/a/5Z15DSv
ASINFO
命令的截图,显示了带有颜色编码生成的 Unicode/ASCII 表。
使用的命令
python3 -m neighgen asinfo -x -F 210083
# Alternative if you have neighgen installed from pip:
neighgen asinfo -x -F 210083
ASINFO-RAW
命令的截图,显示了输出的 JSON,它表示 ASN 的元数据,包括它们的 IXP 和设施。
使用的命令
python3 -m neighgen asinfo-raw -x -F 210083
# Alternative if you have neighgen installed from pip:
neighgen asinfo-raw -x -F 210083
ASINFO-RAW
命令的截图 - 与前一个示例相同,但以 YML 输出模式而不是 JSON。
使用的命令
python3 -m neighgen asinfo-raw -x -F 210083 yml
# Alternative if you have neighgen installed from pip:
neighgen asinfo-raw -x -F 210083 yml
ASINFO-RAW
命令的截图 - 与前一个示例相同,但以 XML 输出模式而不是 JSON。
使用的命令
python3 -m neighgen asinfo-raw -x -F 210083 xml
# Alternative if you have neighgen installed from pip:
neighgen asinfo-raw -x -F 210083 xml
NEIGH
命令的截图,显示了 NX-OS 和 IOS 生成的配置。
生成的配置可以粘贴到运行 NX-OS 或 IOS 的 Cisco 设备的 CLI 中。
有各种 CLI 参数和 YML 配置选项可用于自定义生成的配置,例如启用/禁用对等模板/策略/会话,或更改它们所引用的名称。
使用的命令
python3 -m neighgen neigh 210083 ams-ix
python3 -m neighgen neigh -o ios 210083 sthix
# Alternative if you have neighgen installed from pip:
neighgen neigh 210083 ams-ix
neighgen neigh -o ios 210083 sthix
感谢阅读!
如果这个项目对您有帮助,请考虑从 Privex 购买 VPS 或专用服务器。
价格从低至每月 US$0.99 开始(我们接受加密货币!)
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。