【F5】LB(BIG-IP)設定

F5のロードバランサー。普通にド忘れするのでメモ。
ちなみにCUI初期ログインはroot:default,
GUIはadmin:defaultで入れる。
確認Versionは13.1.1.5

※versionのEOLは以下で確認できる。
https://my.f5.com/manage/s/article/K5903

# ■機器ステータス確認
```
###バージョン/ハードウェア
tmsh show sys version 
tmsh show sys hardware
tmsh show sys failover                     ###Act/Stb表示
tmsh show cm traffic-group


###負荷/CPU/メモリ
tmstat
show sys performance system
tmsh show sys cpu
tmsh show sys memory

###ネットワーク
tmsh show net fdb all                      ###MACアドレステーブル
tmsh show net arp all                      ###ARPテーブル 
tmsh show net interface
tmsh show net vlan all                     ###VLAN
tmsh list net route
tmsh show net route all
tmsh show sys connection                   ###システム全体のconnection。protocol tcpをつけるとTCPプロトコルに絞って表示
tmsh list ltm pool
tmsh show ltm node                         ###ノード単位のコネクション表示
tmsh show ltm persistence persist-records  ###LBが保持しているパーシステンステーブルを表示
tmsh list ltm pool
tmsh show ltm pool                         ###ノードとプールの情報を表示

###ログ
tmsh show sys log all
tmsh show sys log ltm lines 100
tail -f /var/log/ltm

###その他
list ltm monitor                           ###ヘルスチェックの設定確認
/config/snmp/snmpd.conf                    ###SNMP。Linuxと同じようにviで設定
```

# ■ライセンス適用
```
get_dossier -b ライセンス
```
出てきた文字列をファイルにしてF5のサイトへアップロード→ライセンスファイルができる
ライセンスファイルを配置し、
```
reloadlic
```
を実行。
```
cat /config/bigip.license
tmsh show sys license
```
で確認
```
tmsh revoke sys license
```
でライセンス解除

# ■設定方法
confファイル↓
`/config/bigip.conf`
`/config/bigip_base.conf`
viで直接いじることができるが、変更後は以下コマンドで反映が必要。
```
(tmsh)# load sys config
(tmsh)# save sys config
```
※tmshコマンドで設定を入れた場合はsaveのみでOK.
※GUI上は即時反映のためその後のアクションは不要。

### ・bigip.confとbigip_base.confの違い

⇒ `/config/bigip.conf`
active/standbyで同期される共通の設定が入っている。
VirtualServer、route、selfipのfloatingアドレス(gateway)など。

⇒ `/config/bigip_base.conf`
機器固有の設定が入っている。
ホスト名、VLAN、Interface、selfipのnon-floatingアドレス(機器物理アドレス)など。

### ・管理用アドレス設定(CLI)
```
(tmsh)# modify sys global-settings mgmt-dhcp disabled
(tmsh)# create /sys management-ip 10.1.1.1/24
(tmsh)# create /sys management-route default gateway 10.1.1.254
(tmsh)# save / sys config partitions all
```

## ・IF追加
```
tmsh show net interface all-properties
```
で確認できる。
"UNINIT"状態はIFとしては認識しているが、初期化されていない。
VLANに紐づけるとUPに変わる。
物理IFが認識された時点でconf上で反映されていることもあるが、見えていない場合は以下追加すればよい。
GUIならNetworkタブの"Interfaces"から確認。
Configファイルに追記する形でもOK。enable/disableも可能。1.Xを入れる。
```bash:bigip_base.conf
}
net interface 1.1 {
    disabled
    lldp-tlvmap 114552
    media-fixed 10000T-FD
    }
}
net interface 1.X {
    media-fixed 10000T-FD
}
```
```bash:bigip_base.conf
net stp /Common/cist {
    interfaces {
        1.1 {
            external-path-cost 200000
            internal-path-cost 200000
        }
        1.X {
            external-path-cost 200000
            internal-path-cost 200000
        }
```
IFをdisableにしたい場合のコマンド↓
```
tmsh modify net interface 1.X disabled
tmsh save sys config
```

## ・VLAN設定
GUIならNetworkタブ→"VLANs"。
Configは
```bash:bigip_base.conf
}
net vlan /Common/VLAN_NAME {
    interfaces {
        1.X { }
    }
    sflow {
        poll-interval-global no
        sampling-rate-global no
    }
    tag VLAN_NUM
}
```
```bash:bigip_base.conf
net fdb vlan /Common/VLAN_NAME { }
```
```bash:bigip_base.conf
net stp /Common/cist {
    vlans {
        /Common/VLAN_NAME1
        /Common/VLAN_NAME2
    }
```
```bash:bigip_base.conf
net route-domain /Common/0 {
    id 0
    vlans {
        /Common/VLAN_NAME1
        /Common/VLAN_NAME2
```
CLIは
```
create net vlan VLAN_NAME { interfaces add { 1.X { } } sflow { poll-interval-global no sampling-rate-global no } tag VLAN_NUM }
###確認
tmsh show net vlan all
```

## ・Selfip設定
自分に付けるアドレス(non-floating)とvip(floating)を設定できる。上記で設定したVLANに紐づけ。
floatingはbigip_base.confだが、Syncで同期される。
GUI上設定はNetworkタブ→SelfIPs

```bash:bigip_base.conf
}
net self /Common/SELFIP_NAME1 {
    address 192.168.10.101/24
    traffic-group /Common/traffic-group-local-only
    vlan /Common/VLAN_NAME1
}
net self /Common/SELFIP_NAME2 {
    address 192.168.100.200/24
    traffic-group /Common/traffic-group-1
    vlan /Common/VLAN_NAME2
}
```
上記例だと上段がnon-floating,下段がfloatingになる。
CLIは以下。
```
create net self SELFIP_NAME { address XXX.XXX.XXX.XXX/255.255.255.0 vlan VLAN_NAME allow-service default traffic-group traffic-group-local-only}

###確認
tmsh list net self
```

## ・node(realserver)/pool設定
Syncで同期。GUIはLocalTrafficタブ→Node
```bash:bigip.conf
}
ltm node /Common/NODENAME {
    address X.X.X.X
    monitor /Common/icmp
}

ltm pool /Common/POOLNAME {
    members {
        /Common/NODENAME:80 {
            address X.X.X.X
            monitor /Common/tcp-80
        }
```

```
create ltm node /Common/NODENAME { address X.X.X.X monitor /Common/icmp }
create ltm pool /Common/POOLNAME { members add { /Common/NODENAME:80 address X.X.X.X } monitor /Common/tcp-80 }

###確認
show ltm node
show ltm pool
```

## ・VirtualServer設定
Syncで同期。GUIはLocalTrafficタブ→Virtual Servers
```bash:bigip.conf
}
ltm virtual /Common/VS_NAME {
    destination /Common/XXX.XXX.XXX.XXX:PORT
    ip-protocol tcp
    mask 255.255.XXX.XXX
    profiles {
        /Common/Profile_NAME { }
        /Common/tcp { }
    }
    source 0.0.0.0/0
    source-address-translation {
        pool /Common/Pool_NAME          ###Pool指定する場合
        type snat
    }
    translate-address enabled
    translate-port enabled
}
```
```bash:bigip.conf
ltm virtual-address /Common/XXX.XXX.XXX.XXX {
    address XXX.XXX.XXX.XXX
    arp enabled
    mask 255.255.XXX.XXX
    traffic-group /Common/traffic-group-1
}
```
アドレスは同じものになる。※VS設定のDestinationAddress.
VIPなのでtraffic-groupはfloating.
CLIなら以下。
```
create ltm virtual VS_NAME { destination XXX.XXX.XXX.XXX:webcache ip-protocol tcp mask 255.255.255.255 profiles add { Profile_NAME { } tcp {} } source 0.0.0.0/0 source-address-translation { pool Pool_NAME type snat } translate-address enabled translate-port enabled }

###確認
tmsh show ltm virtual
tmsh list ltm virtual
show ltm pool
show ltm node
```

## ・Staticroute追加
Syncで同期される。GUIならNetworkタブ→Routes

```bash:bigip.conf
}
net route /Common/ROUTENAME {
    gw 192.168.10.254
    network 172.21.30.0/24
}
```
VLAN間ルーティング許可設定
```
create ltm virtual Forwarding ip-forward
```
CLIは以下
```
tmsh create net route VLAN_NAME network XXX.XX.XXX.0/24 gw XXX.XX.XXX.254

###確認
tmsh list net route
tmsh show net route all
```

## ・DNS設定
Syncで同期される。GUIならNetworkタブ→DNS Resolvers

```bash:bigip.conf
}
net dns-resolver /Common/f5-aws-dns {
    forward-zones {
        amazonaws.com {
            nameservers {
                8.8.8.8:53 { }
            }
```
CLIは以下
```
###確認
tmsh list net dns-resolver
tmsh show net route all
```

## ・Sync
bigip.confをStandby機と同期する。※デバイスグループ等の設定が完了していることが前提。
たとえばActive機で設定を追加し、Standby機に設定を反映させたい場合、
Active機上のGUIでDevice Management⇒OverviewよりSyncを押下するか、以下コマンド実行。
```
tmsh run cm config-sync to-group device-group-name

###確認
tmsh show sys failover
tmsh show cm traffic-group
```
to-groupは自分設定を反映させる。fromだとstandby機の設定を持ってくる。