※ これはあくまでできますが、本来の利用方法ではありません。
ネタとしてお楽しみください。
さくらのクラウドではブリッジでの接続ができません。
NICのMACアドレスで固定化したものを割り当てたり、任意のものに変更することはできますか?
さくらのクラウドのスイッチは作成したVMのMACアドレス以外のパケットは
VMを出ることができないと推測されます。
VMの中にブリッジを作りLXDのコンテナなどに、そのためルーター+スイッチのIPアドレスや、
スイッチのローカルIPアドレスを直接割り当て 通信することはできません。
通常だとこのような構成になると思います。
しかし、eth0のデバイスについているMACアドレスのみがVMの外側と通信できるため、
この状況ではインターネットに接続できません。
コンテナ1のveth0についているMACアドレスで通信するため、VMの外側に出れない。
そこで、ふと気になったのがVRRPの仮想MACアドレスの扱いです。
VRRPを利用した場合の仮想IPアドレス(VIP)の使用について制限はありますか?
VRID 1~4までが利用できる事になっています。
仮想MACアドレスを使用する場合、以下の4種類のみ使用可能です。
00:00:5e:00:01:01
00:00:5e:00:01:02
00:00:5e:00:01:03
00:00:5e:00:01:04
もしかして、このMACアドレスであれば通信すればVMから出ることが可能ではないか?
ということで試してみることにします!
network:
ethernets:
eth0:
dhcp4: 'no'
dhcp6: 'no'
bridges:
br0:
interfaces: [ eth0 ]
macaddress: <eth0のMACアドレス>
addresses:
- XXX.XXX.XXX.5/29
dhcp4: 'no'
dhcp6: 'no'
gateway4: XXX.XXX.XXX.1
とりあえず、br0を作ります。
br0につないだコンテナを作ります。
lxd のdefault profileでbr0に接続されるようにしています。
devices:
eth0:
nictype: bridged
parent: br0
type: nic
普通にコンテナにもネットワークの設定をします。
# lxc launch images:ubuntu/22.04 c1
# lxc exec c1 bash
root@c1:~# cat << _EOF_ > /etc/netplan/10-lxc.yaml
network:
ethernets:
eth0:
dhcp4: 'no'
dhcp6: 'no'
addresses:
- XXX.XXX.XXX.8/29
gateway4: XXX.XXX.XXX.1
nameservers:
addresses:
- 133.242.0.3
- 133.242.0.4
renderer: networkd
version: 2
root@c1:~# netplan apply
普通に繋がりません。。。
root@c1:~# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 133.242.60.197 icmp_seq=1 Destination Host Unreachable
From 133.242.60.197 icmp_seq=2 Destination Host Unreachable
From 133.242.60.197 icmp_seq=3 Destination Host Unreachable
^C
--- 8.8.8.8 ping statistics ---
5 packets transmitted, 0 received, +3 errors, 100% packet loss, time 4088ms pipe 4
VRRP用の仮想MACアドレスを設定してみます。
network:
ethernets:
eth0:
dhcp4: 'no'
dhcp6: 'no'
addresses:
- XXX.XXX.XXX.8/29
macaddress:
gateway4: XXX.XXX.XXX.1
nameservers: 00:00:5e:00:01:01
addresses:
- 133.242.0.3
- 133.242.0.4
renderer: networkd
version: 2
root@c1:~# netplan apply
無事外部に疎通できました!
root@c1:~# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=18.1 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=118 time=18.2 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=118 time=18.3 ms
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 18.120/18.195/18.267/0.060 ms
4つほど使えるので、1つのL2ネットワーク内で4コンテナ以内であれば、
bridgeを使って直接IPアドレスを割り当て通信することが出来そうです。
ただ、本来の用途とは全く違うので、つながった!面白い!ぐらいに
とどめておくとよさそうです。