Skip to content

Instantly share code, notes, and snippets.

@Shikugawa
Last active June 25, 2022 14:59
Show Gist options
  • Save Shikugawa/9e8e9e1d028d45b81e431420d46a0e4c to your computer and use it in GitHub Desktop.
Save Shikugawa/9e8e9e1d028d45b81e431420d46a0e4c to your computer and use it in GitHub Desktop.
nodes:
- name: R0
image: frrouting/frr:v8.1.0
interfaces:
- { name: net0, type: direct, args: C0#net0 }
- { name: net1, type: direct, args: R1#net1 }
docker_run_extra_args: --entrypoint bash
- name: R1
image: frrouting/frr:v8.1.0
net_base: bridge
interfaces:
- { name: net0, type: direct, args: C1#net0 }
- { name: net1, type: direct, args: R0#net1 }
docker_run_extra_args: --entrypoint bash
- name: C0
image: slankdev/ubuntu:16.04
interfaces:
- { name: net0, type: direct, args: R0#net0 }
- name: C1
image: slankdev/ubuntu:16.04
interfaces:
- { name: net0, type: direct, args: R1#net0 }
node_configs:
- name: R0
cmds:
# bgpdはデフォルトでoffなので、onにする
- cmd: sed -i -e 's/bgpd=no/bgpd=yes/g' /etc/frr/daemons
- cmd: /usr/lib/frr/frrinit.sh start
- cmd: ip addr add 10.3.0.1/24 dev net0
- cmd: ip addr add 10.0.0.1/24 dev net1
- cmd: >-
vtysh -c "conf t"
# AS番号を指定する。R0はAS100の所属
-c "router bgp 100"
# これがないと動かない、frr:v8.1.0ではデフォルトでポリシーを設定する必要がある
-c ' no bgp ebgp-requires-policy'
# router idを指定する。なんでも良い
-c " bgp router-id 1.1.1.1"
# BGPネイバーを指定する。
-c " neighbor 10.0.0.2 remote-as 200"
# このディレクティブで、広報したいプレフィックスを指定する
-c " address-family ipv4 unicast"
# 10.3.0.0/24をネイバーに広報する
-c " network 10.3.0.0/24"
-c "!"
- name: R1
cmds:
- cmd: sed -i -e 's/bgpd=no/bgpd=yes/g' /etc/frr/daemons
- cmd: /usr/lib/frr/frrinit.sh start
- cmd: ip addr add 10.4.0.1/24 dev net0
- cmd: ip addr add 10.0.0.2/24 dev net1
- cmd: >-
vtysh -c "conf t"
-c "router bgp 200"
-c ' no bgp ebgp-requires-policy'
-c " bgp router-id 2.2.2.2"
-c " neighbor 10.0.0.1 remote-as 100"
-c " address-family ipv4 unicast"
-c " network 10.4.0.0/24"
# デフォルトルートをネイバーに広報する
-c " neighbor 10.0.0.1 default-originate"
-c "!"
# C0から送ったパケットはsrc: 10.3.0.1のままなので、SNATする必要がある
- cmd: iptables -t nat -A POSTROUTING -s 10.3.0.0/24 -o eth0 -j MASQUERADE
- name: C0
cmds:
- cmd: ip addr add 10.3.0.2/24 dev net0
- cmd: ip route del default
- cmd: ip route add default via 10.3.0.1
- name: C1
cmds:
- cmd: ip addr add 10.4.0.2/24 dev net0
- cmd: ip route del default
- cmd: ip route add default via 10.4.0.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment