🎓

Linux初心者のrhel8.5備忘録 ネットワーク編

2024/08/03に公開

はじめに

この記事は、以下二つの続編となります。こちらの記事が始めましての方は是非先に前編をご一読ください
https://zenn.dev/kanade1177/articles/cf7b52c9ac13ed
https://zenn.dev/kanade1177/articles/5f23b44eb39cb5

1.イーサネット設定

前回はホスト名の設定まで行いました。今回はネットワーク周りの設定を行なっていきます。
まずはネットワークインターフェイスの設定からスタートです。ネットワークインターフェイスに関しては以下記事を参考ください
https://e-words.jp/w/ネットワークインターフェース.html

ネットワークインターフェイスの設定ファイルは以下に格納されています

  • /etc/sysconfig/network-scripts

実際に確認します。今回は事前に3つのインターフェイスをVirtualBoxで設定したため、3つの設定ファイルが存在することがわかります。

この内、ifcfg-enp0s3に関してはインターネットとの接続用に使用しているため今回は触れずに
他二つを少しいじっていきます。

設定ファイルの中身をcatすると以下の様になっていることが確認できます

ファイルをいじる前に例によってバックアップを作成しておきましょう。

今回はipv4通信のみをする想定とし、ipv6の設定は不要とします。ipv6に関する設定をオフに変えてみます。
コマンドはホスト名の設定にも使用したnmcliコマンドです。

  nmcli con mod enp0s8 ipv6.method "disable" 

もう一度設定ファイルを確認するとipv6の設定が変わっていることが確認できます

再起動後に自動接続するため、以下コマンドを実行します

  nmcli con mod enp0s8 connection.autoconnect yes 

ONBOOTが変更されたことが分かります

enp0s9も同様の設定をしておきます

1.1 Bonding設定

Linuxにはbondingと呼ばれるネットワーク経路冗長化のための方法が存在します。
複数のインターフェイスを仮想的に1つのインターフェイスとして機能させる技術です。
AWSなどのクラウド環境では不要な技術ではあります。(そもそもAWS側でやってるし、設定もできない)
ちなみにWindowsではチーミングと呼ばれるものと内容は同じです。bondingには複数のモードが存在しますが今回はよく使用される「active-backup」を使用します。各モードに関しては公式ドキュメントが難解なため、以下サイトがおすすめです。
https://milestone-of-se.nesuke.com/nw-basic/link-aggregation/linux-bonding-and-switch-config/
余談ではありますが、実際の構築中にでハマった部分があります。設定値は間違いないのにも関わらず、ネットワークがつながらない事象が発生しました。原因は繋がっているスイッチ側の設定が、サーバ側で設定しているbondingのモードと不一致であったためでした。
私が経験した案件では、ネットワーク側の設定は他のチームが対応しており、しかも過去のパラメータが記載されたドキュメントも間違っておりこの様な齟齬が起きてしまいました。この記事を読まれた方には頭の片隅にでもおいて頂ければ幸いです。

本題に戻ります。設定には再びnmcliコマンドを使用します。設定項目に関しては以下公式に詳細があります。
https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/configuring-a-network-bond-by-using-nmcli_configuring-network-bonding

bondインターフェイス名は今回bond0とします。bond.optionにて設定しているオプションは以下です

オプション 説明
mode active-backupなどどのモードを使うかの指定です。mode=1はactive-backupを表します
primary 文字通りprimaryを指定します
miimon MII監視の間隔を指定します。MII監視とは自身にハードウェア的な問題がないかチェックする方法です
  nmcli con add type bond con-name bond0 ifname bond0 bond.options "mode=1,primary=enp0s8,miimon=100"

以下の様になれば正常にインターフェイスが作成されています。

bondingインターフェイス(bond0)を実際に使用するためにはIPアドレスなどを追加していきます。
今回はこのbondingインターフェイスを使用することはありませんが本番同様に設定していきます。
アドレスは適当なものを割り当てています。

  #ipv4アドレス設定
  nmcli con mod bond0 ipv4.adresses '192.168.1.0/24'

  #ipv4アドレスを手動で指定し取得するための設定
  nmcli con mod bond0 ipv4.method manual
  
  #ゲートウェイ設定
  nmcli con mod bond0 ipv4.gateway '192.168.1.0'

  #自動接続
  nmcli con mod bond0 connection.autoconnect yse

  #ipv6無効化
  nmcli con mod bond0 ipv6.method "disable"

設定が反映されていることを確認します

続いて、bond0に対して使用するインターフェイスを指定します。今回はenp0s8とenp0s9が対象です

  #インターフェイス追加(enp0s8)
  nmcli con add type ethernet slave-type bond con-name bond0-port1 ifname enp0s8 master bond0

  #インターフェイス追加(enp0s9)
  nmcli con add type ethernet slave-type bond con-name bond0-port2 ifname enp0s9 master bond0

正常に追加できれば以下の様になります

最後にbond0インターフェイスを有効化します

  #インターフェイス有効化
  nmcli con up bond0

以下の様になれば正常にアクティベートされています

設定された内容は /proc/net/bonding/インターフェイス名 で確認できます。
![](https://storage.googleapis.com/zenn-user-upload/3b6d99887348-20240803.png =500X)
※実際にはどこにも繋がっていないため、BondingMode以降は本番環境とはステータスが異なります

恐らくこのままだとエラーが/var/log/messageなどに吐かれ続けそうなのでbond0に関しては非活性にしておきます

1.2 スタッティックルーティング

AWSなどのクラウド環境ではルートテーブルがあるため非常に簡単にルーティングが管理できますがオンプレであれば手動で設定する必要が出てきます。以下は、bond0のインターフェイスを指定して、宛先のipと自分のipを紐づけています。

  #ルーティング先は192.168.2.0/24と仮定
  nmcli con mod bond0 +ipv4.routes "192.168.2.0/24 192.168.1.0"

ネットワークに関する設定は一旦以上となります!
お疲れ様でした!

Discussion