Armadilloフォーラム

コンテナとarmadilloの物理イーサネットの接続方法について

m.yoshida

2024年1月11日 16時38分

お世話になっております。
armadilloの物理イーサネットeth0とコンテナを接続する場合は、
/etc/atmark/containers/
で作成するconfファイルに

set_type network
set_network eth0

で外部ネットワークに接続可能でしょうか?
また確認方法などあれば合わせてご教示ねがいます。

コメント

at_dominique.m…

2024年1月31日 11時18分

m.yoshidaさん、

お世話になっています、
マルティネです。

返事が遅くなってすみません。

> armadilloの物理イーサネットeth0とコンテナを接続する場合は、
> /etc/atmark/containers/
> で作成するconfファイルに
>

> set_type network
> set_network eth0
> 

> で外部ネットワークに接続可能でしょうか?

コンテナからのネットワークは通常何もしなくても Ethernet が優先されます。
コンテナのデフォルト状態でも Armadillo Base OS 直接でも、Linux のルーティングテーブルにしたがって送信しています。
Base OS で使用している NetworkManager では、そのルーティングテーブルに「metric」の設定を行っていて、Ethernet > Wifi > LTE の順番で優先されています。(接続されてなければもちろんスキップされます)

なので、デフォルト状態ではなにもしなくても、Ethernet 接続がされている場合にコンテナからの外部ネットワーク接続は Ethernet で送信されます。

デフォルト以外の場合(例えば、NetworkManager 接続の ipv4.route-metric を変更することでデフォルトで通信するインターフェースを変更できますので、LTE を優先させた場合など)にはコンテナのネットワーク設定で一つのインターフェースを直接に設定することもできます。

armadillo:~# vi /etc/atmark/containers/net_eth0.conf
# このコンフィグファイルは podman のネットワークを作ります
set_type network
# そのネットワークは macvlan ドリアバーを使って eth0 に接続しています
add_args --driver=macvlan --opt parent=eth0
armadillo:~# vi /etc/atmark/containers/mycontainer.conf 
# イメージやコマンドを任意に設定してください
set_image docker.io/alpine
set_command sleep infinity
# set_network でネットワークのコンフィグファイルの名前を指定します
set_network net_eth0
armadillo:~# persist_file -rv /etc/atmark/containers #ファイルの永続化
armadillo:~# podman_start -a # 確認のためのコンテナ起動
Starting netavark dhcp-proxy
Creating network 'net_eth0'
net_eth0
Starting 'mycontainer'
8f748f285ac61605134a72c3c9258fa3f93714d13b7e079203525ccf396e7be6

> また確認方法などあれば合わせてご教示ねがいます。

外部サイトへの接続が可能でしたら、自分の IP アドレスを表示するサイトへ接続して確認した方が楽だと思います。

# Armadillo Base OS 側での eth0 の場合のアドレス確認
armadillo:~# curl --interface eth0 ifconfig.me; echo
x.y.z.40
# Armadillo Base OS 側での LTE の場合のアドレス確認
armadillo:~# curl --interface ppp0 ifconfig.me; echo
a.b.c.37
# デフォルトの場合のアドレス確認 (ABOS 側でもコンテナからでも)
armadillo:~# curl ifconfig.me; echo
x.y.z.40

外部接続できない場合は色々ありますが、万能などこでも使える方法は知りませんので必要でしたらまた聞いてください。

よろしくお願いします。