DOCKER: FRR BGP (1)
frroutingを使ってBGPを構成する。今回はOracle Cloudに作ったインスタンスとRaspberry Pi4, C841M(Cisco)の構成し、それぞれにfrrouting(docker)を導入してBGP接続を行う。Oracle CloudとRaspberry Pi4間はWireGuardによるVPN接続を行う。まずはOracle Cloud側から設定を行う。
Oracle Cloudはubuntuを使う。必要そうなパッケージのインストールを行う。
$ sudo apt install firewalld
$ sudo apt install docker-ce
$ sudo apt install docker-compose
$ sudo apt install iputils-ping net-tools
$ sudo apt install wireguard
次にdockerの設定を行う。firewalldで直接設定してしまうのでdockerのiptables設定機能は無効にしておく。
$ cat /etc/docker/daemon.json
{
"iptables": false,
"log-level": "warn",
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "5"
}
}
NATを含めたfirewalldの設定を行う必要がある。使ってる設定から抜粋と一部変更したものが次。Oracle Cloud側でPacket Filterを設定しているので甘めの設定でも良い気がする。
#### CMD Alias
wan_if="ens3"
add_chain="firewall-cmd --permanent --direct --add-chain "
add_rule="firewall-cmd --permanent --direct --add-rule "
add_rule_v4F="firewall-cmd --permanent --direct --add-rule ipv4 filter "
#### MASQUERADE NAT
${add_chain} ipv4 nat SRC_NAPT
${add_rule} ipv4 nat SRC_NAPT 10 -o ${wan_if} -s 10.8.0.0/16 -j MASQUERADE
${add_rule} ipv4 nat SRC_NAPT 20 -o ${wan_if} -s 172.16.0.0/12 -j MASQUERADE
${add_rule} ipv4 nat SRC_NAPT 30 -o ${wan_if} -s 192.168.0.0/16 -j MASQUERADE
${add_rule} ipv4 nat POSTROUTING 100 -o ${wan_if} -j SRC_NAPT
#### Forwarding
${add_rule_v4F} FORWARD 999 -j ACCEPT
#### Service/Network Permitation
## WireGuard Seg(VPN Seg: BGP, BFD, ping)
${add_rule_v4F} INPUT 300 -s 172.27.5.0/24 -j ACCEPT
## WireGuard
${add_rule_v4F} INPUT 500 -p udp --dport 51820 -j ACCEPT
#### Reload Firewalld
firewall-cmd --reload
wireguardを起動してclient側からping等を行い、接続されることを確認する。
# wg
interface: wg0
public key:
private key: (hidden)
listening port: 51820
peer: Raspberry4
endpoint:
allowed ips: 172.27.5.9/32, 192.168.32.0/20
latest handshake: 27 seconds ago
transfer: 34.89 MiB received, 35.40 MiB sent
peer: Raspberry4
endpoint:
allowed ips: 172.27.5.7/32, 192.168.16.0/20
latest handshake: 1 minute, 21 seconds ago
transfer: 35.67 MiB received, 42.52 MiB sent
peer: VPS
endpoint:
allowed ips: 172.27.5.1/32
latest handshake: 1 minute, 59 seconds ago
transfer: 35.46 MiB received, 35.46 MiB sent