ip link add dev mgmt0 type vrf table 10
ip link set dev mgmt0 up
ip link set dev eth3 master mgmt0
ip link set dev eth3 up
ip route add default via 192.168.1.1 table 10
ip route add ::/0 via 2001:470:fe36:1::1 table 10
ip link add dev lb0 type vrf table 4
ip link set dev lb0 up
ip link set dev eth4 master lb0
ip link set dev eth4 up
ip route add default via 192.168.202.1 table 4
route delete default
route delete default
route delete default
route add default gw 192.168.22.1
route delete -host 192.168.1.1
route delete -host 192.168.202.1
ip route del ::/0 via 2001:470:fe36:1::1
ip route del ::/0 via 2001:470:fe36:face::1
ip route del 2001:470:fe36:1::1/64
route -6 add default gw 2001:470:fe36:face::1
sysctl -w net.ipv4.tcp_l3mdev_accept=1
sysctl -w net.ipv4.udp_l3mdev_accept=1
$ ip route show
default via 192.168.22.1 dev eth0
192.168.22.0/24 dev eth0 proto kernel scope link src 192.168.22.218 metric 100
192.168.52.0/24 dev eth1 proto kernel scope link src 192.168.52.218 metric 101
192.168.111.0/24 dev eth2 proto kernel scope link src 192.168.111.218 metric 102
$ ip route show table 10
default via 192.168.1.1 dev eth3
broadcast 192.168.1.0 dev eth3 proto kernel scope link src 192.168.1.218
local 192.168.1.218 dev eth3 proto kernel scope host src 192.168.1.218
broadcast 192.168.1.255 dev eth3 proto kernel scope link src 192.168.1.218
$ ip route show table 4
default via 192.168.202.1 dev eth4
broadcast 192.168.202.0 dev eth4 proto kernel scope link src 192.168.202.218
local 192.168.202.218 dev eth4 proto kernel scope host src 192.168.202.218
broadcast 192.168.202.255 dev eth4 proto kernel scope link src 192.168.202.218
$ ip -6 route show
::1 dev lo proto kernel metric 256 pref medium
2001:470:fe36:111::/64 dev eth2 proto kernel metric 102 pref medium
2001:470:fe36:cafe::/64 dev eth1 proto kernel metric 101 pref medium
2001:470:fe36:face::/64 dev eth0 proto kernel metric 100 pref medium
fe80::/64 dev eth0 proto kernel metric 1024 pref medium
fe80::/64 dev eth1 proto kernel metric 1024 pref medium
fe80::/64 dev eth2 proto kernel metric 1024 pref medium
fe80::/64 dev eth3 proto kernel metric 1024 pref medium
default via 2001:470:fe36:face::1 dev eth0 metric 1 pref medium
$ ip -6 route show table 10
anycast 2001:470:fe36:1:: dev eth3 proto kernel metric 0 pref medium
local 2001:470:fe36:1::218:1 dev eth3 proto kernel metric 0 pref medium
anycast fe80:: dev eth3 proto kernel metric 0 pref medium
local fe80::8785:99b6:f03b:cf5e dev eth3 proto kernel metric 0 pref medium
multicast ff00::/8 dev eth3 proto kernel metric 256 pref medium
default via 2001:470:fe36:1::1 dev eth3 metric 1024 pref medium
$ ip -d link show type vrf
7: mgmt0: mtu 65575 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether 56:64:d2:f2:ee:55 brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 1280 maxmtu 65575
vrf table 10 addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
8: lb0: mtu 65575 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether 2e:68:9e:22:5f:0e brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 1280 maxmtu 65575
vrf table 4 addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
VRF しているインターフェースのルーティング情報が乗っていると削除して、正しいルーティング情報に直すので roure del したり route add しています。上記になっているのが、僕は一番美しいルーティングテーブルだと思っているのであります。
この辺り、nmcli だとちゃんとやってくれるのかなぁ?
$ traceroute -n 192.168.1.217
traceroute to 192.168.1.217 (192.168.1.217), 30 hops max, 60 byte packets
1 192.168.22.1 0.416 ms 0.460 ms 0.456 ms
2 192.168.1.217 0.659 ms 0.654 ms *
$ ip vrf exec mgmt0 traceroute -n 192.168.1.217
traceroute to 192.168.1.217 (192.168.1.217), 30 hops max, 60 byte packets
1 192.168.1.1 0.405 ms 0.323 ms 0.324 ms
2 192.168.1.217 0.665 ms 0.668 ms 0.687 ms
$ ip vrf exec mgmt0 ssh 192.168.1.217
>
# ip link set dev br0 up
# ip link set dev eth0 promisc on
# ip link set dev eth0 up
# ip link set dev eth0 master br0
# ifconfig eth0 0.0.0.0 up
# ifconfig eth0 inet6 del 2001:470:fe36:face::218:1/64 up
# route add default gw 192.168.22.1 dev br0
# ip route del ::/0 via 2001:470:fe36:face::1
# route -6 add default gw 2001:470:fe36:face::1 dev br0
上から順に説明すると、
docker network create で生成した br0 を UP します
eth0 のプロミスキャス・モードを有効化します
eth0 を UP します
eth0 と br0 をブリッジ化します
br0 に IPv4/IPv6 アドレスが付加されるので eth0 側から削除します
最後にルーティング情報を設定します
こんな感じでしょうか。
ロードバランサセグメント用の設定も書いておきます。
# docker network create LB-Segment \
-o "com.docker.network.bridge.name"="br4" \
--driver=bridge \
--subnet 192.168.202.0/24 \
--gateway 192.168.202.218
# ip link set dev br4 up
# ip link set dev eth4 promisc on
# ip link set dev eth4 up
# ip link set dev eth4 master br4
# ifconfig eth4 0.0.0.0 up
# ip link set dev lb0 up
# ip link set dev br4 master lb0
# ip link set dev br4 up
# ip route add default via 192.168.202.1 table 4
# ip link set eth0 promisc off
# ip link set eth0 down
# ip link set dev eth0 nomaster
# ip link delete br0 type bridge
# docker network rm Service-Segment
# ifconfig eth0 192.168.22.218/24
# ifconfig eth0 inet6 add 2001:470:fe36:face::218:1/64
# route add default gw 192.168.22.1 dev eth0
# ip route del ::/0 via 2001:470:fe36:face::1
# route -6 add default gw 2001:470:fe36:face::1 dev eth0
# ping -q -c 3 192.168.22.1 > /dev/null 2>&1
3. IPv4/IPv6 デアルスタク対応コンテナの起動
最後に Docker コンテナの使い方について書いておきます。何回も書いている通り bridge-utils を捨てて ip link set dev コマンドに移行したので Docker コンテナは IPv4/IPv6 のデアルスタクで動作させられます。
$ docker search almaLinux
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
almalinux The official build of AlmaLinux OS. 102 [OK]
<以下略>
$ docker pull almaLinux
Using default tag: latest
latest: Pulling from library/almalinux
<略>
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
almalinux latest acaca326f3b3 6 weeks ago 190MB
$ docker tag almalinux:latest almalinux8:1
$ docker image rm almalinux:latest
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
almalinux8 1 acaca326f3b3 6 weeks ago 190MB
$ docker run -it --name almalinux8 almalinux:1 /bin/bash
[root@b2db6f534790 /]#
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
039e8158c77b Access-Segment bridge local
622593f73c12 Service-Segment bridge local
9eb6f5610d75 bridge bridge local
d30c681a9f92 host host local
afbbadaba67f none null local
無事に作成できるとこんな感じでしょうか。
ifconfig -a したときには br0 と br1 に IP アドレスが付いていて、eth0 と eth1 には IP アドレスはついていない状態が正解です。
これで Docker ホストとコンテナで同一セグメントを利用する環境が整いました。次にコンテナを run してみましょうかねぇ;-)。
コンテナ内から Docker ホストに対して ping を打つのは、コンテナ起動ごとに MAC アドレスが書き換わるので、上位のルータに対して MAC アドレスの更新をする必要があるためです。ルータ側の MAC アドレス書き換えタイムアウトまで待っても良いですねぇ。根が短気な性分なものでして・・f(^^;;。
これで Service-Segment 側に指定した IP アドレスにウェブブラウザからアクセスすると、WordPress の初期設定画面が表示できると思います。
データベースは MySQL ですが 192.168.52.204 で動作している MySQL サーバへのアクセスは eth1 側を抜けていくので WordPress の初期設定画面で IP アドレス・ユーザ名・パスワードを設定するとアクセスできると思います。
あ。当然、 MySQL 側ではデータベースとアクセス用のアカウントを作成しておいてください。ここでは割愛しています。
ubuntu のネットワーク設定より Red Hat Linux 系のネットワーク設定のほうが楽と、いうか、個人的にも直感的に設定できるような状態ですしね(^^;;。今回は由緒正しく /etc/sysconfig/network-scripts/ 配下のファイルを用意して VRF の設定をしてみたいと思います。
ip link add dev mgmt0 type vrf table 10
ip link set dev mgmt0 up
ip link set dev eth2 master mgmt0
ip addr add dev eth2 192.168.1.217/24
ip link set dev eth2 up
ip route add default via 192.168.1.1 table 10
ip route add ::/0 via 2405:6580:aa40::1 table 10
route delete default
route delete default
route add default gw 192.168.22.1
ip route del ::/0 via 2405:6580:aa40::1
ip route del ::/0 via 2001:470:fe36:face::1
route -6 add default gw 2001:470:fe36:face::1
sysctl -w net.ipv4.tcp_l3mdev_accept=1
sysctl -w net.ipv4.udp_l3mdev_accept=1
# ip route show
default via 192.168.22.1 dev eth0
192.168.1.1 dev eth2 proto static scope link metric 102
192.168.22.0/24 dev eth0 proto kernel scope link src 192.168.22.217
192.168.52.0/24 dev eth1 proto kernel scope link src 192.168.52.217
# ip -6 route show
::1 dev lo proto kernel metric 256 pref medium
2405:6580:aa40::/64 dev eth2 proto kernel metric 102 pref medium
2001:470:fe36:face::/64 dev eth0 proto kernel metric 100 pref medium
2001:470:fe36:cafe::/64 dev eth1 proto kernel metric 101 pref medium
# ip route show table 10
default via 192.168.1.1 dev eth2
broadcast 192.168.1.0 dev eth2 proto kernel scope link src 192.168.1.217
local 192.168.1.217 dev eth2 proto kernel scope host src 192.168.1.217
broadcast 192.168.1.255 dev eth2 proto kernel scope link src 192.168.1.217
# ip -6 route show table 10
local 2405:6580:aa40::217:1 dev eth2 proto kernel metric 0 pref medium
local fe80::751c:3cc8:a2c0:2fcb dev eth2 proto kernel metric 0 pref medium
multicast ff00::/8 dev eth2 proto kernel metric 256 pref medium
default via 2405:6580:aa40::1 dev eth2 metric 1024 pref medium
# ip -d link show type vrf
6: mgmt0: mtu 65575 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether 12:c4:f9:dc:1f:bf brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 1280 maxmtu 65575
vrf table 10 addrgenmode none numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
3. AMD DASH のネットワークと認証設定
「他社製オプション ROM の管理」画面にはいりました。青ベースの画面になりますね。
僕の場合はオンボードの Realtek の NIC と PCI-e x16 スロットに HP 純正の Intel の 2Port NIC のカードが入っているので MAC アドレスが 3 個見えますが、ここから Realtek の NIC の設定画面に入ります。Realtek は一番下の NIC ですね。
index.html (index.shtml) に include があると、 Nginx + quiche パッチではまともに動作しないようです。 quiche パッチを詳しく追ってはいないのですが、どうやら include 部分がそげ落ちているようです・・。 orz
まぁ、今の段階では SSI を利用しないコンテンツを用意する必要がありそうです。
二個目。
テレワークなどで、PC にカメラを接続する機会が多いのですが、せっかく購入したカメラ。もっと色々な用途で使ってみたい。などと思うわけです。 USB Video Class 、俗に USB な UVC カメラを FreeBSD に接続し、 webcamd や obs-studio をインストールして『ストリーミングなどしてみんべ。』などと思うわけです。
このブログでも以前に「NotePCに付いているカメラを FreeBSD で使う。」と、いうのを書いていたりしますが;-)。
interface GigabitEthernet4
description # VLAN1 Network #
no ip address
!
description に “#” を使っていると telnet モジュールはプロンプトだと勘違いして処理がそこで止まります。
show interfaces status や show interfaces description ・ show running-config など何一つまともに動きません。