ただしデメリットもあって、搭載している CPU のアーキテクチャが Zen 3 なので、最新の Zen 4 に比べると一世代古い。
メーカーの Web サイト 1 を確認すると、発売日が 2021-06-01 なので 2 年前の CPU ということになる。
また、サポートしている PCIe のバージョンについても Gen3 なので、現在の主流である Gen4 に比べると遅くなる。
CPU の世代が新しい別のモデルは、もう少し価格が上がるので、ここは値段とのトレードオフになりそう。
とはいえ今回は、ベンチマークの結果なども考慮しつつ、用途に対して実用に耐えうると判断して購入するに至った。
今回のようにストレージを交換すると、当然ながら OS が空っぽになるのでリカバリの作業が必要になる。
Lenovo は Lenovo USB Recovery Creator というリカバリ用の USB メモリを作るための Windows 向けツールを提供している。
そのため、あらかじめ容量が 32GB 以上の USB メモリを購入しておこう。
あらかじめ作っておいたリカバリ用の USB メモリを筐体のポートに差し込んで電源を入れる。
リカバリを実行する前に、ストレージのデータが消去される旨の警告が表示されるので了承する。
その後は自動で処理が進むので、完了するのをひたすら待つだけ。
なお、筐体には USB 2.0 のポートもあるので、誤ってそこに USB メモリを差さないように注意しよう。
具体的には、イーサネットポート (RJ-45) に近い 2 つの USB ポートが USB 2.0 なので、別のポートを使う。
差しても動作に支障はないけど USB 3.0 のポートを使う場合と比べてリカバリにかかる時間が伸びてしまう。
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.2 LTS"
$ uname -srm
Linux 5.15.0-75-generic aarch64
$ dhcpcd --version
dhcpcd 7.1.0
Copyright (c) 2006-2019 Roy Marples
Compiled in features: INET ARP ARPing IPv4LL INET6 DHCPv6 AUTH
$ dnsmasq --version
Dnsmasq version 2.86 Copyright (c) 2000-2021 Simon Kelley
Compile time options: IPv6 GNU-getopt DBus no-UBus i18n IDN2 DHCP DHCPv6 no-Lua TFTP conntrack ipset auth cryptohash DNSSEC loop-detect inotify dumpfile
This software comes with ABSOLUTELY NO WARRANTY.
Dnsmasq is free software, and you are welcome to redistribute it
under the terms of the GNU General Public License, version 2 or 3.
$ sudo ip netns add server
$ sudo ip netns add client
間をつなぐ Virtual Ethernet Device のインターフェイスを用意する。
$ sudo ip link add s-veth0 type veth peer name c-veth0
インターフェイスを、それぞれの Network Namespace に所属させる。
$ sudo ip link set s-veth0 netns server
$ sudo ip link set c-veth0 netns client
インターフェイスの MAC アドレスをドキュメンテーションアドレスに変更しておく。
$ sudo ip netns exec server ip link set dev s-veth0 address 00:00:5E:00:53:01
$ sudo ip netns exec client ip link set dev c-veth0 address 00:00:5E:00:53:02
インターフェイスをリンクアップさせる。
$ sudo ip netns exec server ip link set s-veth0 up
$ sudo ip netns exec client ip link set c-veth0 up
DHCP サーバのインターフェイスには IPv4 アドレスを付与しておく。
$ sudo ip netns exec server ip address add 192.0.2.254/24 dev s-veth0
DHCP サーバを起動する
ネットワークが完成したので DHCP サーバとして dnsmasq(8) を起動する。
$ sudo ip netns exec server dnsmasq \--dhcp-range=192.0.2.100,192.0.2.200,255.255.255.0\--interface=s-veth0\--port0\--no-resolv\--no-daemon
$ sudo ip netns exec client ip address show
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
3: c-veth0@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:00:5e:00:53:02 brd ff:ff:ff:ff:ff:ff link-netns server
inet6 fe80::200:5eff:fe00:5302/64 scope link
valid_lft forever preferred_lft forever
$ sudo ip netns exec client dhcpcd c-veth0 --ipv4only--nobackground
DUID 00:01:00:01:2c:2c:1b:c2:00:00:5e:00:53:02
c-veth0: IAID 5e:00:53:02
c-veth0: soliciting a DHCP lease
c-veth0: offered 192.0.2.177 from 192.0.2.254
c-veth0: ignoring offer of 192.0.2.177 from 192.0.2.254
c-veth0: probing address 192.0.2.177/24
c-veth0: leased 192.0.2.177for3600 seconds
c-veth0: adding route to 192.0.2.0/24
c-veth0: adding default route via 192.0.2.254
その後 IPv4 アドレスを確認すると、ちゃんとインターフェイスに付与されている。
$ sudo ip netns exec client ip -4 address show
3: c-veth0@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link-netns server
inet 192.0.2.177/24 brd 192.0.2.255 scope global noprefixroute c-veth0
valid_lft forever preferred_lft forever
ルーティングテーブルを確認するとデフォルトルートも設定されている。
$ sudo ip netns exec client ip -4 route show
default via 192.0.2.254 dev c-veth0 proto dhcp src 192.0.2.177 metric 203192.0.2.0/24 dev c-veth0 proto dhcp scope link src 192.0.2.177 metric 203
$ sudo ip link add ns1-veth0 type veth peer name gw1-veth0
$ sudo ip link add gw1-veth1 type veth peer name gw2-veth0
$ sudo ip link add gw2-veth1 type veth peer name ns2-veth0
作成したインターフェイスを Network Namespace に所属させる。
$ sudo ip link set ns1-veth0 netns ns1
$ sudo ip link set gw1-veth0 netns router1
$ sudo ip link set gw1-veth1 netns router1
$ sudo ip link set gw2-veth0 netns router2
$ sudo ip link set gw2-veth1 netns router2
$ sudo ip link set ns2-veth0 netns ns2
それぞれのインターフェイスをリンクアップさせる。
$ sudo ip netns exec ns1 ip link set ns1-veth0 up
$ sudo ip netns exec router1 ip link set gw1-veth0 up
$ sudo ip netns exec router1 ip link set gw1-veth1 up
$ sudo ip netns exec router2 ip link set gw2-veth0 up
$ sudo ip netns exec router2 ip link set gw2-veth1 up
$ sudo ip netns exec ns2 ip link set ns2-veth0 up
それぞれのインターフェイスに IP アドレスを付与する。
$ sudo ip netns exec ns1 ip address add 192.0.2.1/24 dev ns1-veth0
$ sudo ip netns exec router1 ip address add 192.0.2.254/24 dev gw1-veth0
$ sudo ip netns exec router1 ip address add 203.0.113.1/24 dev gw1-veth1
$ sudo ip netns exec router2 ip address add 203.0.113.2/24 dev gw2-veth0
$ sudo ip netns exec router2 ip address add 198.51.100.254/24 dev gw2-veth1
$ sudo ip netns exec ns2 ip address add 198.51.100.1/24 dev ns2-veth0
ホストに相当する Network Namespace にはデフォルトルートを設定しておく。
$ sudo ip netns exec ns1 ip route add default via 192.0.2.254
$ sudo ip netns exec ns2 ip route add default via 198.51.100.254
$ sudo ip netns exec router1 sysctl net.ipv4.ip_forward=1
$ sudo ip netns exec router2 sysctl net.ipv4.ip_forward=1
この状態で、それぞれのルータは自身が直接つながっているセグメントへの経路は把握している。
$ sudo ip netns exec router1 ip route show
192.0.2.0/24 dev gw1-veth0 proto kernel scope link src 192.0.2.254203.0.113.0/24 dev gw1-veth1 proto kernel scope link src 203.0.113.1
$ sudo ip netns exec ns1 ping -c3198.51.100.1-I192.0.2.1
PING 198.51.100.1(198.51.100.1) from 192.0.2.1 : 56(84) bytes of data.
From 192.0.2.254icmp_seq=1 Destination Net Unreachable
From 192.0.2.254icmp_seq=2 Destination Net Unreachable
From 192.0.2.254icmp_seq=3 Destination Net Unreachable
--- 198.51.100.1 ping statistics ---3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2041ms
router1 の BIRD を設定する
まずは router1 の BIRD を設定していく。
以下が BIRD の設定ファイルになる。
$ cat<< 'EOF' > router1.conflog syslog all;log stderr all;log "/var/log/bird-router1.log" all;debug protocols all;router id 203.0.113.1;protocol device {}protocol direct { ipv4;}protocol bgp { local as 65001; source address 203.0.113.1; neighbor 203.0.113.2 as 65002; ipv4 { import all; export all; };}protocol kernel { ipv4 { export filter { if proto = "direct1" then reject; accept; }; };}EOF
$ sudo birdc show route -s router1.ctl
BIRD 2.0.8 ready.
Table master4:
198.51.100.0/24 unicast [bgp1 08:55:16.462] * (100)[AS65002i]
via 203.0.113.2 on gw1-veth1
192.0.2.0/24 unicast [direct1 08:55:08.802] * (240)
dev gw1-veth0
203.0.113.0/24 unicast [direct1 08:55:08.802] * (240)
dev gw1-veth1
unicast [bgp1 08:55:16.462](100)[AS65002i]
via 203.0.113.2 on gw1-veth1
198.51.100.0/24 の経路が追加されていることが確認できる。
また、同じ経路はカーネルのルーティングテーブルにも追加されている。
$ sudo ip netns exec router1 ip route show
192.0.2.0/24 dev gw1-veth0 proto kernel scope link src 192.0.2.254198.51.100.0/24 via 203.0.113.2 dev gw1-veth1 proto bird metric 32203.0.113.0/24 dev gw1-veth1 proto kernel scope link src 203.0.113.1
BIRD の各プロトコルの稼働状況は次のとおり。
$ sudo birdc show protocols all -s router1.ctl
BIRD 2.0.8 ready.
Name Proto Table State Since Info
device1 Device --- up 08:55:08.802
direct1 Direct --- up 08:55:08.802
Channel ipv4
State: UP
Table: master4
Preference: 240
Input filter: ACCEPT
Output filter: REJECT
Routes: 2 imported, 0 exported, 2 preferred
Route change stats: received rejected filtered ignored accepted
Import updates: 20002
Import withdraws: 00---00
Export updates: 000---0
Export withdraws: 0---------0
bgp1 BGP --- up 08:55:13.573 Established
BGP state: Established
Neighbor address: 203.0.113.2
Neighbor AS: 65002
Local AS: 65001
Neighbor ID: 203.0.113.2
Local capabilities
Multiprotocol
AF announced: ipv4
Route refresh
Graceful restart
4-octet AS numbers
Enhanced refresh
Long-lived graceful restart
Neighbor capabilities
Multiprotocol
AF announced: ipv4
Route refresh
Graceful restart
4-octet AS numbers
Enhanced refresh
Long-lived graceful restart
Session: external AS4
Source address: 203.0.113.1
Hold timer: 173.117/240
Keepalive timer: 14.466/80
Channel ipv4
State: UP
Table: master4
Preference: 100
Input filter: ACCEPT
Output filter: ACCEPT
Routes: 2 imported, 2 exported, 1 preferred
Route change stats: received rejected filtered ignored accepted
Import updates: 20002
Import withdraws: 00---00
Export updates: 310---2
Export withdraws: 0---------0
BGP Next hop: 203.0.113.1
kernel1 Kernel master4 up 08:55:08.802
Channel ipv4
State: UP
Table: master4
Preference: 10
Input filter: ACCEPT
Output filter: (unnamed)
Routes: 0 imported, 1 exported, 0 preferred
Route change stats: received rejected filtered ignored accepted
Import updates: 00000
Import withdraws: 00---00
Export updates: 504---1
Export withdraws: 0---------0
さて、経路交換の様子はどうなっただろうか。
tcpdump(1) の結果を確認してみよう。
$ sudo ip netns exec router1 tcpdump -tnlvvv-i gw1-veth1 "tcp port 179"
最初に Open メッセージがやり取りされる。
このメッセージで、自分の素性やどういった機能を有しているか示す。
BGP-4 は機能拡張がたくさんあるプロトコルなので、こういったやり取りが必要になる。
ここでやり取りした内容は、先ほど birdc show protocols all した内容の Local / Neighbor capabilities で確認できる。
IP (tos 0xc0, ttl 1, id 27583, offset 0, flags [DF], proto TCP (6), length 105)
203.0.113.1.52957 > 203.0.113.2.179: Flags [P.], cksum 0x7860 (incorrect -> 0x09ea), seq 1:54, ack 1, win 502, options [nop,nop,TS val 1023139906 ecr 1883847382], length 53: BGP
Open Message (1), length: 53
Version 4, my AS 65001, Holdtime 240s, ID 203.0.113.1
Optional parameters, length: 24
Option Capabilities Advertisement (2), length: 22
Multiprotocol Extensions (1), length: 4
AFI IPv4 (1), SAFI Unicast (1)
0x0000: 0001 0001
Route Refresh (2), length: 0
Graceful Restart (64), length: 2
Restart Flags: [none], Restart Time 120s
0x0000: 0078
32-Bit AS Number (65), length: 4
4 Byte AS 65001
0x0000: 0000 fde9
Enhanced Route Refresh (70), length: 0
no decoder for Capability 70
Long-lived Graceful Restart (71), length: 0
IP (tos 0xc0, ttl 255, id 3014, offset 0, flags [DF], proto TCP (6), length 52)
203.0.113.2.179 > 203.0.113.1.52957: Flags [.], cksum 0x782b (incorrect -> 0xe311), seq 1, ack 54, win 509, options [nop,nop,TS val 1883847382 ecr 1023139906], length 0
IP (tos 0xc0, ttl 1, id 3015, offset 0, flags [DF], proto TCP (6), length 105)
203.0.113.2.179 > 203.0.113.1.52957: Flags [P.], cksum 0x7860 (incorrect -> 0x08ab), seq 1:54, ack 54, win 509, options [nop,nop,TS val 1883847383 ecr 1023139906], length 53: BGP
Open Message (1), length: 53
Version 4, my AS 65002, Holdtime 240s, ID 203.0.113.2
Optional parameters, length: 24
Option Capabilities Advertisement (2), length: 22
Multiprotocol Extensions (1), length: 4
AFI IPv4 (1), SAFI Unicast (1)
0x0000: 0001 0001
Route Refresh (2), length: 0
Graceful Restart (64), length: 2
Restart Flags: [none], Restart Time 120s
0x0000: 0078
32-Bit AS Number (65), length: 4
4 Byte AS 65002
0x0000: 0000 fdea
Enhanced Route Refresh (70), length: 0
no decoder for Capability 70
Long-lived Graceful Restart (71), length: 0
IP (tos 0xc0, ttl 1, id 27584, offset 0, flags [DF], proto TCP (6), length 52)
203.0.113.1.52957 > 203.0.113.2.179: Flags [.], cksum 0x782b (incorrect -> 0xe2e1), seq 54, ack 54, win 502, options [nop,nop,TS val 1023139907 ecr 1883847383], length 0
$ sudo ip netns exec ns1 ping -c3198.51.100.1-I192.0.2.1
PING 198.51.100.1(198.51.100.1) from 192.0.2.1 : 56(84) bytes of data.
64 bytes from 198.51.100.1: icmp_seq=1ttl=62time=0.123 ms
64 bytes from 198.51.100.1: icmp_seq=2ttl=62time=0.096 ms
64 bytes from 198.51.100.1: icmp_seq=3ttl=62time=0.094 ms
--- 198.51.100.1 ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2093ms
rtt min/avg/max/mdev =0.094/0.104/0.123/0.013 ms
$ sudo ip link add ns1-veth0 type veth peer name gw1-veth0
$ sudo ip link add gw1-veth1 type veth peer name gw2-veth0
$ sudo ip link add gw2-veth1 type veth peer name ns2-veth0
作成したインターフェイスを Network Namespace に所属させる。
$ sudo ip link set ns1-veth0 netns ns1
$ sudo ip link set gw1-veth0 netns router1
$ sudo ip link set gw1-veth1 netns router1
$ sudo ip link set gw2-veth0 netns router2
$ sudo ip link set gw2-veth1 netns router2
$ sudo ip link set ns2-veth0 netns ns2
それぞれのインターフェイスをリンクアップさせる。
$ sudo ip netns exec ns1 ip link set ns1-veth0 up
$ sudo ip netns exec router1 ip link set gw1-veth0 up
$ sudo ip netns exec router1 ip link set gw1-veth1 up
$ sudo ip netns exec router2 ip link set gw2-veth0 up
$ sudo ip netns exec router2 ip link set gw2-veth1 up
$ sudo ip netns exec ns2 ip link set ns2-veth0 up
それぞれのインターフェイスに IP アドレスを付与する。
$ sudo ip netns exec ns1 ip address add 192.0.2.1/24 dev ns1-veth0
$ sudo ip netns exec router1 ip address add 192.0.2.254/24 dev gw1-veth0
$ sudo ip netns exec router1 ip address add 203.0.113.1/24 dev gw1-veth1
$ sudo ip netns exec router2 ip address add 203.0.113.2/24 dev gw2-veth0
$ sudo ip netns exec router2 ip address add 198.51.100.254/24 dev gw2-veth1
$ sudo ip netns exec ns2 ip address add 198.51.100.1/24 dev ns2-veth0
ホストに相当する Network Namespace にはデフォルトルートを設定しておく。
$ sudo ip netns exec ns1 ip route add default via 192.0.2.254
$ sudo ip netns exec ns2 ip route add default via 198.51.100.254
$ sudo ip netns exec router1 sysctl net.ipv4.ip_forward=1
$ sudo ip netns exec router2 sysctl net.ipv4.ip_forward=1
この状態で、それぞれのルータは自身が直接つながっているセグメントへの経路は把握している。
$ sudo ip netns exec router1 ip route show
192.0.2.0/24 dev gw1-veth0 proto kernel scope link src 192.0.2.254203.0.113.0/24 dev gw1-veth1 proto kernel scope link src 203.0.113.1
$ sudo ip netns exec ns1 ping -c3198.51.100.1-I192.0.2.1
PING 198.51.100.1(198.51.100.1) from 192.0.2.1 : 56(84) bytes of data.
From 192.0.2.254icmp_seq=1 Destination Net Unreachable
From 192.0.2.254icmp_seq=2 Destination Net Unreachable
From 192.0.2.254icmp_seq=3 Destination Net Unreachable
--- 198.51.100.1 ping statistics ---3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2041ms
$ sudo birdc show route -s router1.ctl
BIRD 2.0.8 ready.
Table master4:
198.51.100.0/24 unicast [ospf1 06:32:48.103] * E2 (150/10/10000)[203.0.113.2]
via 203.0.113.2 on gw1-veth1
192.0.2.0/24 unicast [direct1 06:18:36.005] * (240)
dev gw1-veth0
203.0.113.0/24 unicast [direct1 06:18:36.005] * (240)
dev gw1-veth1
unicast [ospf1 06:18:36.103] I (150/10)[203.0.113.1]
dev gw1-veth1
次のようにカーネルのルーティングテーブルにも、それが反映されている。
$ sudo ip netns exec router1 ip route show
192.0.2.0/24 dev gw1-veth0 proto kernel scope link src 192.0.2.254198.51.100.0/24 via 203.0.113.2 dev gw1-veth1 proto bird metric 32203.0.113.0/24 dev gw1-veth1 proto kernel scope link src 203.0.113.1
BIRD の動作状況は次のとおり。
$ sudo birdc show protocols all -s router1.ctl
BIRD 2.0.8 ready.
Name Proto Table State Since Info
device1 Device --- up 06:18:36.002
direct1 Direct --- up 06:18:36.002
Channel ipv4
State: UP
Table: master4
Preference: 240
Input filter: ACCEPT
Output filter: REJECT
Routes: 2 imported, 0 exported, 2 preferred
Route change stats: received rejected filtered ignored accepted
Import updates: 20002
Import withdraws: 00---00
Export updates: 000---0
Export withdraws: 0---------0
ospf1 OSPF master4 up 06:18:36.002 Running
Channel ipv4
State: UP
Table: master4
Preference: 150
Input filter: ACCEPT
Output filter: ACCEPT
Routes: 2 imported, 2 exported, 1 preferred
Route change stats: received rejected filtered ignored accepted
Import updates: 20002
Import withdraws: 00---00
Export updates: 510---4
Export withdraws: 0---------0
kernel1 Kernel master4 up 06:18:36.002
Channel ipv4
State: UP
Table: master4
Preference: 10
Input filter: ACCEPT
Output filter: (unnamed)
Routes: 0 imported, 1 exported, 0 preferred
Route change stats: received rejected filtered ignored accepted
Import updates: 00000
Import withdraws: 00---00
Export updates: 504---1
Export withdraws: 0---------0
最後に、最初は経路が足りなくて動作しなかった ns1 から ns2 に ping を打ってみよう。
$ sudo ip netns exec ns1 ping -c3198.51.100.1-I192.0.2.1
PING 198.51.100.1(198.51.100.1) from 192.0.2.1 : 56(84) bytes of data.
64 bytes from 198.51.100.1: icmp_seq=1ttl=62time=0.145 ms
64 bytes from 198.51.100.1: icmp_seq=2ttl=62time=0.104 ms
64 bytes from 198.51.100.1: icmp_seq=3ttl=62time=0.099 ms
--- 198.51.100.1 ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2026ms
rtt min/avg/max/mdev =0.099/0.116/0.145/0.020 ms
$ sudo ip link add ns1-veth0 type veth peer name gw1-veth0
$ sudo ip link add gw1-veth1 type veth peer name gw2-veth0
$ sudo ip link add gw2-veth1 type veth peer name ns2-veth0
作成したインターフェイスを Network Namespace に所属させる。
$ sudo ip link set ns1-veth0 netns ns1
$ sudo ip link set gw1-veth0 netns router1
$ sudo ip link set gw1-veth1 netns router1
$ sudo ip link set gw2-veth0 netns router2
$ sudo ip link set gw2-veth1 netns router2
$ sudo ip link set ns2-veth0 netns ns2
それぞれのインターフェイスをリンクアップさせる。
$ sudo ip netns exec ns1 ip link set ns1-veth0 up
$ sudo ip netns exec router1 ip link set gw1-veth0 up
$ sudo ip netns exec router1 ip link set gw1-veth1 up
$ sudo ip netns exec router2 ip link set gw2-veth0 up
$ sudo ip netns exec router2 ip link set gw2-veth1 up
$ sudo ip netns exec ns2 ip link set ns2-veth0 up
それぞれのインターフェイスに IP アドレスを付与する。
$ sudo ip netns exec ns1 ip address add 192.0.2.1/24 dev ns1-veth0
$ sudo ip netns exec router1 ip address add 192.0.2.254/24 dev gw1-veth0
$ sudo ip netns exec router1 ip address add 203.0.113.1/24 dev gw1-veth1
$ sudo ip netns exec router2 ip address add 203.0.113.2/24 dev gw2-veth0
$ sudo ip netns exec router2 ip address add 198.51.100.254/24 dev gw2-veth1
$ sudo ip netns exec ns2 ip address add 198.51.100.1/24 dev ns2-veth0
ホストに相当する Network Namespace にはデフォルトルートを設定しておく。
$ sudo ip netns exec ns1 ip route add default via 192.0.2.254
$ sudo ip netns exec ns2 ip route add default via 198.51.100.254
$ sudo ip netns exec router1 sysctl net.ipv4.ip_forward=1
$ sudo ip netns exec router2 sysctl net.ipv4.ip_forward=1
この状態で、それぞれのルータは自身が直接つながっているセグメントへの経路は把握している。
$ sudo ip netns exec router1 ip route show
192.0.2.0/24 dev gw1-veth0 proto kernel scope link src 192.0.2.254203.0.113.0/24 dev gw1-veth1 proto kernel scope link src 203.0.113.1
$ sudo ip netns exec ns1 ping -c3198.51.100.1-I192.0.2.1
PING 198.51.100.1(198.51.100.1) from 192.0.2.1 : 56(84) bytes of data.
From 192.0.2.254icmp_seq=1 Destination Net Unreachable
From 192.0.2.254icmp_seq=2 Destination Net Unreachable
From 192.0.2.254icmp_seq=3 Destination Net Unreachable
--- 198.51.100.1 ping statistics ---3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2041ms
$ sudo ip netns exec router1 ip route show
192.0.2.0/24 dev gw1-veth0 proto kernel scope link src 192.0.2.254203.0.113.0/24 dev gw1-veth1 proto kernel scope link src 203.0.113.1
router2 の BIRD を設定する
同じように router2 についても BIRD の設定ファイルを用意しよう。
$ cat<< 'EOF' > router2.conflog syslog all;log stderr all;log "/var/log/bird-router2.log" all;debug protocols all;router id 203.0.113.2;protocol device {}protocol direct { ipv4;}protocol rip { ipv4 { import all; export all; }; interface "gw2-veth0" { update time 10; };}protocol kernel { ipv4 { export filter { if proto = "direct1" then reject; accept; }; };}EOF
$ sudo ip netns exec router1 ip route show
192.0.2.0/24 dev gw1-veth0 proto kernel scope link src 192.0.2.254198.51.100.0/24 via 203.0.113.2 dev gw1-veth1 proto bird metric 32203.0.113.0/24 dev gw1-veth1 proto kernel scope link src 203.0.113.1
$ sudo ip netns exec ns1 ping -c3198.51.100.1-I192.0.2.1
PING 198.51.100.1(198.51.100.1) from 192.0.2.1 : 56(84) bytes of data.
64 bytes from 198.51.100.1: icmp_seq=1ttl=62time=0.129 ms
64 bytes from 198.51.100.1: icmp_seq=2ttl=62time=0.097 ms
64 bytes from 198.51.100.1: icmp_seq=3ttl=62time=0.112 ms
--- 198.51.100.1 ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2045ms
rtt min/avg/max/mdev =0.097/0.112/0.129/0.013 ms