独立管理接口
独立管理接口
网络需求
- 在 HA 集群中,所有集群成员的配置全部相同,通过 IP 只能管理到主设备,无法通过 IP 对每个 slave 设备进行单独的管理。同时为了业务的安全,需要将管理网络与业务网络独立开。
- 为实现如上需求,可以使用 HA 使用独立的管理接口来实现带外管理功能。独立管理口的相关配置不会被 HA 所同步。
网络拓扑

配置要点
- 配置 HA 基础配置
- 配置基础 LAN/WAN 上网服务
- 配置“HA 独立管理口”
- 配置防火墙的 SYSLOG、SNMP 和 FMG
配置步骤和结果验证
配置 HA 基础配置,初始化配置防火墙的时候可以通过 mgmt 口登陆到防火墙上,一般 mgmt 口的管理 IP 是 192.168.1.99,第一步可以通过此 IP 登陆防火墙(参考系统管理 → 管理方式 → Web 管理章节),或者通过 console 口管理防火墙(参考系统管理 → 管理方式 → Console 管理章节)。具体型号初始化如果网管和接口的网管 IP 信息等可参考 https://docs.fortinet.com/product/fortigate/hardware 或 https://docs.fortinet.com/document/fortigate/hardware/fortigate-quickstart-guide-high-end?model = all 。
按照以上方式登陆第一次开箱的防火墙。先登陆主防火墙,并配置进行 HA 的基础配置,然后登陆到备防火墙,配置备防火墙的 HA 基础配置。
分别配置主防火墙和备防火墙的 HA,主防火墙优先级调整为 150,备防火墙的优先级保持默认的 120,配置 HA-cluster 组名字和密码,监控业务接口 wan1 和 port1,使用 HA1 和 HA2 接口将二者互联。

config system ha set group-name "FGT" set mode a-p set password ENC XU4Yv532eMH20TXkbxDMQWRNs+ChZrIVXcotCFVP2C86QBl2zhznTNU+0PDKw5Vlvtm6B+NCZ+f+1EiT3MsUteDHW82Aten6q+Yu6zAT5NuXYYIKnVpG= set hbdev "port7" 50 "port8" 50 set session-pickup enable set override disable set priority 150 set monitor "port1" "port2" end
config system ha set group-name "FGT" set mode a-p set password ENC HzpTLoO69D1nrZ9QZbKFDbuUmCefmDRbZqTvgSseAgh2zU8JOHq1bthC750a+p5S/rkfRSROmhVMqOKRbBZkir3C8VWW9l+h7jl7Xp4N5sdA1CmDSUzX= set hbdev "port7" 50 "port8" 50 set session-pickup enable set override disable set priority 120 set monitor "port1" "port2" end双方的 HA 配置完毕之后将 ha1 和 ha2 线相互直连,将会进行 HA 的选举,此时优先级 150 高的 FGT 将成为主防火墙,优先级低的 120 的 FGT 将成为备防火墙。然后备防火墙的配置将会和主防火墙进行同步,备防火墙所有配置和主防火墙一致,此时备防火墙也将不再可以 WEB/SSH 登录,仅仅可以 Console 登录。后续所有的操作和配置都在主防火墙上的 GUI、SSH 或 Console 完成。
选举结果如下,FGT1-LEFT 成为主设备。
FGT1-LEFT # diagnose sys ha status HA information Statistics traffic.local = s:0 p:22783 b:12890083 traffic.total = s:0 p:22793 b:12890691 activity.ha_id_changes = 2 activity.fdb = c:0 q:0 Model=80008, Mode=2 Group=0 Debug=0 nvcluster=1, ses_pickup=1, delay=0 [Debug_Zone HA information] HA group member information: is_manage_primary=1. FGVM08TM22000173: Primary, serialno_prio=1, usr_priority=150, hostname=FGT1-LEFT FGVM08TM22000174: Secondary, serialno_prio=0, usr_priority=120, hostname=FGT2-RIGHT [Kernel HA information] vcluster 1, state=work, primary_ip=169.254.0.2, primary_id=0: FGVM08TM22000173: Primary, ha_prio/o_ha_prio=0/0 FGVM08TM22000174: Secondary, ha_prio/o_ha_prio=1/1这三个命令都可以看到 HA 的选举结果和 HA 状态。
# diagnose sys ha status # get system status # get system ha statusGUI 查看 HA 的选举结果和状态。

配置基础 LAN/WAN 上网服务。此步骤为正常上网的基础配置,大概的步骤是配置接口 IP、配置默认路由、配置策略即可实现防火墙的简单上网配置。(所有配置都在主防火墙上完成,备防火墙此时不可以登陆)
配置接口 IP。

config system interface edit "port1" set vdom "root" set ip 192.168.10.1 255.255.255.0 set allowaccess ping https ssh snmp http fgfm set type physical set alias "lan" set snmp-index 1 next edit "port2" set vdom "root" set ip 202.100.1.21 255.255.255.0 set type physical set alias "wan1" set snmp-index 2 next end配置默认路由。

config router static
edit 1
set gateway 202.100.1.192
set device "port2"
next
end配置上网策略。

config firewall policy edit 1 set name "to_Internet" set srcintf "port1" set dstintf "port2" set action accept set srcaddr "LAN_192.168.10.0" set dstaddr "all" set schedule "always" set service "ALL" set nat enable next end配置 LAN 口网管相关参数,关于网管目前可以通过 port1(lan)的 192.168.10.1 进行管理,比较关键的网管因素是:
port1 接口下开启了网管的协议,比如 https、http、ssh、snmp 等。

管理员可信任主机如果配置了的话,需要包含发起管理请求的主机 IP 或网段。

客户端 PC 到 FGT 的来回路由可达,可以通过 ping 和 tracert 测试。
上面 1、2 点确认没有问题之后,还是遇到不通的情况,可以通过 sniffer 抓包和 debug flow 确认问题所在。
FGT # diagnose sniffer packet any "host 192.168.10.1" 4 0 l如果跨接口管理防火墙,比如处于 port1 的 PC 要通过防火墙 port2 接口的 IP 管理防火墙,则需要主要有 port1 到 port2 的放通策略,否则数据也是不通的。
出现网管不了的情况,99% 就是以上的原因了。
配置 HA 独立管理口,。

在主设备和备设备上将 port6(mgmt)接口加入独立管理口,并配置独立管理口的网关。

config system ha ... set ha-mgmt-status enable config ha-mgmt-interfaces edit 1 set interface "port6" //此命令会同步到备机 set gateway 192.168.91.254 //独立管理口的网关IP地址配置不会同步到备防火墙,因为二者可以拥有不同的IP网段和网关地址,不同步可以满足更多的需求,也更加灵活 next end ... end此时如果本身就是通过 mgmt 接口管理的防火墙,则可能管理会中断,必须使用 console 口进行 mgmt 接口 IP 的配置。如果使用的业务接口 lan(port1)管理的防火墙,则直接修改 mgmt 接口 IP 地址即可。
配置 mgmt 接口(port6)的 IP,并开启相关的网管服务。

config system interface edit "port6" set ip 192.168.91.21 255.255.255.0 set allowaccess ping https ssh snmp http fgfm set type physical set alias "mgmt" set snmp-index 6 next end主机的 HA 独立管理口配置完毕,开始配置备机的独立管理口,此时备机是无法 WEB/SSH 登陆的需要通过主机的 execute ha manage 命令(或者 Console 线)连到备机的命令行界面。
FGT1-LEFT # exe ha manage ? <id> please input peer box index. <0> Subsidiary unit FGVM08TM22000174 FGT1-LEFT # exe ha manage 0 admin admin@169.254.0.1's password: FGT2-RIGHT #配置备防火墙的 mgmt 管理口 IP 地址(开启 HA 独立管理口功能之后,mgmt 的配置不会再同步,需要手工配置 mgmt 的 IP 地址)。
FGT2-RIGHT # config system interface FGT2-RIGHT (interface) # edit port6 FGT2-RIGHT (port6) # set ip 192.168.91.22/24 FGT2-RIGHT (port6) # set allowaccess ping https ssh snmp http fgfm FGT2-RIGHT (port6) # end配置 HA 独立管理口的网关(此配置不会从主设备同步,需要单独配置)。
FGT2-RIGHT # config system ha FGT2-RIGHT (ha) # config ha-mgmt-interfaces FGT2-RIGHT (ha-mgmt-interfaces) # edit 1 FGT2-RIGHT (1) # set gateway 192.168.91.254 FGT2-RIGHT (1) # end FGT2-RIGHT (ha) # show config system ha set group-name "FGT" set mode a-p set password ENC L2tPmaCKq4nyH9Y6/+wKJQTXF2ROKYww0zCKqylOTEiACqph0eB+Ji5FDv5OimBxc4XvxZD8cU6bsWbRP8l/TcHRgpOvoPB/9m/Qu23voGOSxhLxlgiz= set hbdev "port7" 50 "port8" 50 set session-pickup enable set ha-mgmt-status enable config ha-mgmt-interfaces edit 1 set interface "port6" set gateway 192.168.91.254 next end set override disable set priority 120 set monitor "port1" "port2" end FGT2-RIGHT (ha) # endHA 独立管理口的配置完毕,此时管理员可以通过 192.168.91.21 管理主防火墙,192.168.91.22 管理备防火墙。两台防火墙拥有独立的管理 IP。
如何测试独立管理口和独立管理口的网关是否可以通信?独立管理口实际可以理解为一个轻量级的 vdom,如果要测试此 vdom 里面的数据转发,需要先进入到此轻量级 vdom 里面然后再发起相应的 ping 测试,测试才是我们想要的结果。否则直接发起 ping 的话,就相当于在 root vdom(业务处理的 VDOM)发包,实际和独立管理口是隔离的是无关的,会引起误会/误解。
测试独立管理口和独立管理口网关的测试,可以看到 vsys_hamgmt 有独立的路由表和管理路由。
提示
在已开启多 VDOM 的环境下,需要先进入 root VDOM,再进入 vsys_hamgmt VDOM,才能执行后续 CLI 命令。
config vdom edit root exe enter vsys_hamgmtFGT1-LEFT # exe enter ? <name> vdom name root vsys_hamgmt FGT1-LEFT # exe enter vsys_hamgmt //进入轻量级独立管理vdom current vdom=vsys_hamgmt:1 FGT1-LEFT # get router info routing-table all //拥有独立的路由表 ... Routing table for VRF=0 C 192.168.91.0/24 is directly connected, port6 FGT1-LEFT # diagnose ip route list ... tab=254 vf=1 scope=0 type=1 proto=17 prio=0 0.0.0.0/0.0.0.0/0->0.0.0.0/0 pref=0.0.0.0 gwy=192.168.91.254 dev=8(port6) //独立管理的默认路由 ... FGT1-LEFT # exe ping 192.168.91.254 PING 192.168.91.254 (192.168.91.254): 56 data bytes 64 bytes from 192.168.91.254: icmp_seq=0 ttl=128 time=0.9 ms 64 bytes from 192.168.91.254: icmp_seq=1 ttl=128 time=1.3 ms 64 bytes from 192.168.91.254: icmp_seq=2 ttl=128 time=0.8 ms 64 bytes from 192.168.91.254: icmp_seq=3 ttl=128 time=0.5 ms 64 bytes from 192.168.91.254: icmp_seq=4 ttl=128 time=0.7 ms --- 192.168.91.254 ping statistics --- 5 packets transmitted, 5 packets received, 4 duplicates, 0% packet loss round-trip min/avg/max = 0.5/1.9/4.3 ms FGT-LEFT # diagnose sniffer packet any "host 192.168.91.254" 4 interfaces=[any] filters=[host 192.168.91.254] 3.235814 port6 out 192.168.91.21 -> 192.168.91.254: icmp: echo request //匹配明细直连路由,ping数据从port6 out,可以成功ping通网关 3.235900 port6 in 192.168.91.254 -> 192.168.91.21: icmp: echo reply 4.245672 port6 out 192.168.91.21 -> 192.168.91.254: icmp: echo request 4.245747 port6 in 192.168.91.254 -> 192.168.91.21: icmp: echo reply退出独立管理口轻量级 vdom,进入 root vdom,查看路由表,并尝试访问独立管理口的网关。
FGT1-LEFT # exe enter root current vdom=root:0 FGT1-LEFT # get router info routing-table all //业务的独立路由表,和独立管理的路由表完全独立,相当于路由的轻量级隔离 ... Routing table for VRF=0 S* 0.0.0.0/0 [10/0] via 202.100.1.192, port2, [1/0] C 192.168.10.0/24 is directly connected, port1 C 202.100.1.0/24 is directly connected, port2 FGT101E_Master_379 # execute ping 192.168.91.254 // 通过root ping 192.168.91.254 PING 192.168.91.254 (192.168.91.254): 56 data bytes --- 192.168.91.254 ping statistics --- 5 packets transmitted, 0 packets received, 100% packet loss FGT-LEFT # diagnose sniffer packet any "host 192.168.91.254 and icmp" 4 interfaces=[any] filters=[host 192.168.91.254 and icmp] 12.785835 port2 out 202.100.1.21 -> 192.168.91.254: icmp: echo request // 匹配到默认路由,ping数据从port2 out,无法ping通独立管理的网关,结果是正确的,但这不是我们想要的结果。处于一个错误的状态,实际并不是不通,只是没有进入vsys_hamgmt而已 13.795618 port2 out 202.100.1.21 -> 192.168.91.254: icmp: echo request 14.805621 port2 out 202.100.1.21 -> 192.168.91.254: icmp: echo request 15.815615 port2 out 202.100.1.21 -> 192.168.91.254: icmp: echo request 16.825621 port2 out 202.100.1.21 -> 192.168.91.254: icmp: echo request测试备机的独立管理口网关 ping 测试。
FGT2-RIGHT # exe enter vsys_hamgmt current vdom=vsys_hamgmt:1 FGT2-RIGHT # execute ping 192.168.91.254 //发起ping测试 PING 192.168.91.254 (192.168.91.254): 56 data bytes 64 bytes from 192.168.91.254: icmp_seq=0 ttl=255 time=0.3 ms 64 bytes from 192.168.91.254: icmp_seq=1 ttl=255 time=0.1 ms 64 bytes from 192.168.91.254: icmp_seq=2 ttl=255 time=0.1 ms 64 bytes from 192.168.91.254: icmp_seq=3 ttl=255 time=0.1 ms 64 bytes from 192.168.91.254: icmp_seq=4 ttl=255 time=0.1 ms --- 192.168.91.254 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max = 0.1/0.1/0.3 ms FGT2-RIGHT # execute enter root //测试完毕,退出轻量级独立管理vdom current vdom=root:0
HTTPS、Ping 管理
通过独立管理 IP:192.168.91.21 管理主防火墙。

通过独立管理 IP:192.168.91.22 管理备防火墙。

SYSLOG
确认通过 192.168.10.1 网管没问题的话,配置 SYSLOG 等本机发出的网管配置。

config log syslogd setting set status enable set server "192.168.10.100" end主/备防火墙的日志都会通过业务接口 port1 192.168.10.1 将 syslog 日志发送出去,备防火墙的 syslog 日志会通过心跳线到主机,然后由主机代为转发。
FGT1-LEFT # diagnose sniffer packet any "port 514" 4 interfaces=[any] filters=[port 514] 0.918154 port1 out 192.168.10.1.15840 -> 192.168.10.125.514: udp 635 //主防火墙的syslog日志 0.918225 port1 out 192.168.10.1.15840 -> 192.168.10.125.514: udp 649 5.492057 port1 out 192.168.10.1.22418 -> 192.168.10.125.514: udp 649 5.961902 port_ha in 169.254.0.2.514 -> 169.254.0.1.514: udp 454 //备防火墙的console登陆日志 5.962018 port1 out 192.168.10.1.22418 -> 192.168.10.125.514: udp 418 5.968684 port1 out 192.168.10.1.15840 -> 192.168.10.125.514: udp 554 8.314617 port1 out 192.168.10.1.22418 -> 192.168.10.125.514: udp 730 8.507346 port_ha in 169.254.0.2.514 -> 169.254.0.1.514: udp 473 //备防火墙的console退出日志 8.507479 port1 out 192.168.10.1.22418 -> 192.168.10.125.514: udp 437 8.964545 port1 out 192.168.10.1.22418 -> 192.168.10.125.514: udp 724 9.074989 port1 out 192.168.10.1.15840 -> 192.168.10.125.514: udp 597
SNMP
lan 接口下开启 SNMP 协议。

config system interface edit "port1" set vdom "root" set ip 192.168.10.1 255.255.255.0 set allowaccess ping https ssh snmp http fgfm ftm set type physical set alias "lan" set snmp-index 1 next end开启 SNMP 功能。

config system snmp sysinfo set status enable set description "FGT" set contact-info "support_cn@fortinet.com" set location "Beijing" end config system snmp community edit 1 set name "public" config hosts edit 1 set ip 192.168.10.100 255.255.255.255 next end next end在 SNMP 客户端对 FortiGate 的 lan 口进行 get/walk 操作,这里以 IReasoning MIB Browser 为例。

SNMP 客户端接收到的 FGT 发送的 trap 信息,可以看到主备设备均通过主设备进行发送。


FortiManger 管理
FortiManager 通过 FGT 的 lan 口添加设备,在 FGT 的 lan 口下开启 FMG 管理协议。

config system interface edit "port1" set vdom "root" set ip 192.168.10.1 255.255.255.0 set allowaccess ping https ssh snmp http fgfm ftm set type physical set alias "lan" set snmp-index 1 next end配置防火墙主动连接 FMG(如果 FMG 可以主动访问到 FGT,也可以通过 FMG 主动添加 FGT)。

config system central-management set type fortimanager set fmg "192.168.90.107" end如果是 FGT 主动去注册 FMG,则 FMG 会有未注册的设备提示。

只需要将设备添加到 FMG 的对应 ADOM 的设备管理中即可。

授权完成。

在 FMG 中可以对 FGT 进行管理。

HA-direct
以上的发送 syslog 都是通过业务接口 port1 192.168.10.1 发送的,如果想要如 syslog、FortiAnalyzer、LDAP、Radius、TACACS+、sFlow、NetFlow 等报文通过 mgmt(port6)发送出去,则需要在 HA 里面开启一个 ha-direct 功能才可以实现。该命令在主机开启后,也会同步到备机。
重要
开启 HA 配置下的“HA-direct”后,主机和备机的 syslog、FortiAnalyzer、LDAP、Radius、TACACS+、sFlow、NetFlow 等报文均会通过各自的独立管理口发出,而不是通过主机的业务口发出。
FGT1-LEFT # config sys ha FGT1-LEFT (ha) # set ha-direct ? enable Enable using ha-mgmt interface for syslog, SNMP, remote authentication (RADIUS), FortiAnalyzer, FortiSandbox, sFlow, and Netfl. disable Disable using ha-mgmt interface for syslog, SNMP, remote authentication (RADIUS), FortiAnalyzer, FortiSandbox, sFlow, and Netf. FGT1-LEFT (ha) # set ha-direct enable FGT1-LEFT (ha) # end When ha-direct is enabled, source ip may not work. We recommend to unset all log-related, netflow and sflow source ip. By selecting to continue, all source ip will be unset. Do you want to continue? (y/n)y再次查看 syslog 的发送情况,syslog 这次就从 mgmt(port6)发送出去了。
FGT1-LEFT # diagnose sniffer packet any "port 514" 4 Using Original Sniffing Mode interfaces=[any] filters=[port 514] 1.189223 port6 out 192.168.91.21.3320 -> 192.168.10.100.514: udp 553 1.189276 port6 out 192.168.91.21.3320 -> 192.168.10.100.514: udp 553 1.189278 port6 out 192.168.91.21.3320 -> 192.168.10.100.514: udp 553 2.189291 port6 out 192.168.91.21.3320 -> 192.168.10.100.514: udp 556 3.188617 port6 out 192.168.91.21.3320 -> 192.168.10.100.514: udp 613 4.194761 port6 out 192.168.91.21.3320 -> 192.168.10.100.514: udp 488 FGT2-RIGHT # diagnose sniffer packet any "port 514" 4 Using Original Sniffing Mode interfaces=[any] filters=[port 514] 7.137889 port6 out 192.168.91.22.5532 -> 192.168.10.100.514: udp 489 8.136846 port6 out 192.168.91.22.5532 -> 192.168.10.100.514: udp 554 8.136907 port6 out 192.168.91.22.5532 -> 192.168.10.100.514: udp 554 8.136909 port6 out 192.168.91.22.5532 -> 192.168.10.100.514: udp 554 8.136911 port6 out 192.168.91.22.5532 -> 192.168.10.100.514: udp 554 10.135873 port6 out 192.168.91.22.5532 -> 192.168.10.100.514: udp 554如果是 snmp 的 trap 想从独立管理口发送(或通过独立管理口读取 OID),则需要在 SNMP 的 community 配置中,对 host 开启 ha-direct 功能,主备同步。
config system snmp community edit 1 set name "public" config hosts edit 1 set ip 192.168.10.100 255.255.255.255 set ha-direct enable next end next end再次查看 snmp trap 的发送情况,trap 这次就从 mgmt(port6)发送出去了。
FGT1-LEFT # diagnose sniffer packet any "port 162" 4 Using Original Sniffing Mode interfaces=[any] filters=[port 162] 10.358519 port6 out 192.168.91.21.162 -> 192.168.10.100.162: udp 106 10.358662 port6 out 192.168.91.21.162 -> 192.168.10.100.162: udp 128 FGT2-RIGHT # diagnose sniffer packet any "port 162" 4 Using Original Sniffing Mode interfaces=[any] filters=[port 162] 6.257505 port6 out 192.168.91.22.162 -> 192.168.10.100.162: udp 43 6.257678 port6 out 192.168.91.22.162 -> 192.168.10.100.162: udp 68 77.293372 port6 out 192.168.91.22.162 -> 192.168.10.100.162: udp 43 77.293562 port6 out 192.168.91.22.162 -> 192.168.10.100.162: udp 68 122.341966 port6 out 192.168.91.22.162 -> 192.168.10.100.162: udp 107 122.342170 port6 out 192.168.91.22.162 -> 192.168.10.100.162: udp 129关于 DNS 和 FortiGuard 还是通过 root VDOM(管理 VDOM)进行解析和更新的。
要彻底的完完全全的实现 HA-Cluster 的独立管理同时又与业务完全隔离,则需要使用独立管理 VDOM,请参考 HA 双机热备 → HA-Cluster 的网管 → HA 集群带外管理 → 独立管理 VDOM 章节。