- 迪普 FW 系列防火墙
- 版本号为 V100R004B01D011P02PATCH08 (理论上2019年及以后的版本都支持)
- 已经使能 SSH
FW 系列其它设备/版本号理论上不会区别太大,应该也能支持,如果不能支持稍微改动一下应该就能用
开发/测试使用设备及版本:FW1000-GC-N V100R004B01D011P02PATCH08(S111C011D011P02PATCH08)
下面介绍本工具的使用场景
此小工具目前只能在限定的使用场景发挥作用,并不能支持所有的管理功能,只能在以下场景使用(所以是“小工具”,2333)
使用场景同 RESTCONF-YuukaChan ,只是设备换成了迪普的 FW ,另外要调整的项目从 NAT Server 变成了目的NAT,借用 RESTCONF-YuukaChan 的说明:
(使用场景类似 USG 产品文档 CLI举例:公网用户通过DDNS和基于接口IP的NAT Server访问内部服务器
,可供参考)
使用场景与上图略有不同,实际情况请参见以下表格
(概要:外网接口方式为 PPPOE 拨号动态获取 IP 地址,DDNS 服务使用阿里云 DDNS ,不在 FW 上配置 DDNS,出口有 ISP1 和 ISP2 两个,仅 ISP1 有公网)
项目 | 数据 | 说明 |
---|---|---|
接口号:GigabitEthernet 1/0/1 | IP地址:10.1.1.1/24 安全区域:Trust |
- |
接口号:GigabitEthernet 1/0/2 | IP地址:通过PPPOE方式获取(虚接口:ppp2) 安全区域:Untrust1 |
ISP1 线路 |
接口号:GigabitEthernet 1/0/3 | IP地址:通过PPPOE方式获取 安全区域:Untrust2 |
ISP2 线路 |
NAT Server | 名称:policy_web(+端口号) 公网地址:借用GigabitEthernet 1/0/2 (ISP1)接口地址 私网地址:10.1.1.3 公网端口:80,443(等多个) 私网端口:80,443(等多个) |
- |
DDNS | 内部服务器通过 AliDDNS 更新 | 应配置该服务器只能从 ISP1 接口上网,防止获取到 IPS2 的公网 IP |
Web服务器 | 地址:10.1.1.3/24 | - |
路由 | ISP1 ISP2 策略路由智能选路 | 不在本工具讨论范围内,略 |
(仅涉及本工具相关问题,剩下内容不再涉及,请参考产品文档解决)
- 配置接口IP地址和安全区域,完成网络基本参数配置(略)
- 配置安全策略,允许外部网络用户访问内部服务器(略)
- 配置基于目的 NAT <- 本工具要解决的问题
- 开启域名解析,配置DNS Server(略)
- 配置DDNS策略,并将其应用在 ppp2 接口上,使得外部用户通过域名(example.com)能够访问内网服务器(略)
- 在FW上配置缺省路由,使内网服务器对外提供的服务流量可以正常转发至ISP的路由器(略)
在配置基于目的 NAT Server 时,使用以下命令:(假设公网 IP 为 1.1.1.1)
1 <FW> conf
2 [FW] nat destination-nat test interface ppp2 global-address 1.1.1.1 service tcp 222 to 222 local-address 10.1.1.3 to 10.1.1.3 local-port 80
3 [FW] nat destination-nat test interface ppp2 global-address 1.1.1.1 service tcp 222 to 222 local-address 10.1.1.3 to 10.1.1.3 local-port 443
…… # 映射其它同 IP 服务器上的更多端口命令
但是这里需要指定出口的 IP ,而使用动态公网 IP 的用户没有确定的公网 IP
公网的 IP 地址不能确定,这会导致公网 IP 地址变动后外网用户无法访问在内网的服务器
本工具通过调用设备的 SSH 获取指定接口当前 IP 地址,并将其填写到目的 NAT 的公网地址上,实现目的 NAT 的公网地址的动态更新
- 创建一个有 api 权限的账户(推荐,不推荐用管理员账户操作)
- 给定 api 账户的权限范围
WEB -> 基本 -> 系统管理 -> 登录管理 -> 管理员 -> 管理员配置 ->新增管理员
新建一个 api 账户并给定 WEB 和 SSH 的权限
在配置范围管理内划定 api 用户的权限范围
通过终端调整 api 账户的权限,使其有提交权限,CLI 举例如下
<FW> conf
[FW] local-group api
[FW-api] submit-authority
- YuukaChan.py <- 优香酱,小工具运行文件,开发环境为 Python 3.9.8
- requirements.txt <- 依赖包
pip install -r requirements.txt
- YuukaChanTemplate.xls <- 设定模板文件,最好不要修改,程序运行不依赖该文件
- YuukaChan.xls <- 设定文件,相关参数填写在这里,程序运行依赖该文件
- 完成 “使用前的准备” 一节的配置,设置好 api 账户
- 在服务器上安装 Python3 ,pip 安装依赖库
- 填写
YuukaChan.xls
文件,填写时注意文件内的说明 - 运行(调试/生产环境):
python .\YuukaChan.py runDebug |python .\YuukaChan.py runProd
- 调用本工具会对设备上的当前设定信息做保存(write file)操作!
- 使用高强度的密码保护 api 账户
- 调试:
python .\YuukaChan.py runDebug
是调试模式,另外还可以临时注释掉代码的try
(L94) 和except
(L424) 部分,更方便看报错信息 - 小工具目前实现了通过 SSH 的
目的 NAT
和组网配置
功能,主要还是以实现自己的需求为主,想调其它接口可以参照源码自行实现,小工具通过DPTechFWShell_withoutPaging()
方法实现了 SSH 下普通模式和特权模式的调用,也欢迎提交 PR ,新增更多功能
- GitHub - luckykeeper/RESTCONF-YuukaChan: 优香酱华为 USG 系列设备北向管理小工具 | HayaseYuuka Huawei USG Series Device RESTCONF Management Tool https://github.com/luckykeeper/RESTCONF-YuukaChan
- GitHub - luckykeeper/YuukaChan-DPTECH: 优香酱迪普 FW 系列设备管理小工具 | HayaseYuuka DPTech FW Series Device Management Tool https://github.com/luckykeeper/YuukaChan-DPTECH
- GitHub - luckykeeper/YuukaDownloader: 优香酱系列小工具——快速解析初音站(yngal/fufugal)链接并送Aria2下载 https://github.com/luckykeeper/YuukaDownloader
- GitHub - luckykeeper/YuukaChan-Ruijie-WS6xxx-Exporter: 优香酱系列小工具——锐捷AC WS6xxx 系列 Prometheus Exporter ,附带 Grafana 仪表盘模板 | HayaseYuuka Ruijie AC WS6xxx Series Prometheus Exporter With Grafana Template Included https://github.com/luckykeeper/YuukaChan-Ruijie-WS6xxx-Exporter
就在这里发癫!