AlmaLinux 9 総合ガイド 第7章

第7章: ネットワーク設定と管理


7.1 この章で解説する主要な技術・概念

AlmaLinux 9を運用する上で欠かせないネットワーク設定と管理をさらに詳細に解説します。Linuxサーバーのネットワークは単なるIPアドレスの設定だけでなく、セキュリティや可用性を含めて総合的に設計・運用する必要があります。本章では以下のテーマを深掘りし、安定かつ安全なネットワーク環境を構築するためのノウハウを学びましょう。

  1. NetworkManagerの詳細 (nmcli, nmtui, GUI)
  2. IPアドレス構成 (IPv4/IPv6) とDNS設定
  3. firewalldの高度な設定 (ゾーン、リッチルール、ポートフォワーディング)
  4. VPNの概要 (OpenVPN、WireGuard など)
  5. ブリッジ、ボンディング、VLAN設定
  6. ネットワークトラブルシューティング (ping, traceroute, ss, iperf など)

7.2 NetworkManagerの詳細

7.2.1 NetworkManagerの役割

RHEL系ディストリビューション(AlmaLinux含む)では、従来のifcfgスクリプトに代わってNetworkManagerが標準で採用されています。NetworkManagerは以下の機能を提供し、ネットワーク管理を簡素化します。

  • グラフィカルツール(GNOME環境での「設定」など)や、CLIツール(nmcli, nmtui)を通じて統一的に設定を行える
  • ネットワーク切断/再接続時の自動再設定
  • VPNやブリッジなどの高度な設定を容易に扱える

7.2.2 nmcli (CLI) の活用

nmcli device status
nmcli connection show
  • device status: NIC一覧と状態、接続状況を表示
  • connection show: 設定済みのネットワーク接続プロファイル一覧

IPアドレスの静的設定例

# "enp0s3" インターフェースのプロファイルを編集
sudo nmcli connection modify enp0s3 \
  ipv4.method manual \
  ipv4.addresses 192.168.10.50/24 \
  ipv4.gateway 192.168.10.1 \
  ipv4.dns 8.8.8.8

# 設定を反映
sudo nmcli connection up enp0s3
  • ipv4.method manual として固定IPを指定
  • DNSやゲートウェイを同時にセットし、接続を再適用することで反映

VLANの設定例

# VLANインターフェースを作成 (id=100)
nmcli connection add type vlan con-name vlan100 dev enp0s3 id 100 \
  ipv4.method manual ipv4.addresses 192.168.100.10/24
nmcli connection up vlan100

7.2.3 nmtui (テキストUI)

sudo nmtui
  • Edit a connection からインターフェースを選択し、DHCP/静的IP、DNS、ホスト名などを対話的に設定可能
  • SSH越しでもGUIに近い感覚で操作できるため、初心者にもわかりやすい

7.3 IPアドレスとDNSの設定

7.3.1 IPv4とIPv6の共存

  • IPv4: 192.168.x.x のようなプライベートアドレス、ip addr コマンドでアドレス確認
  • IPv6: fe80::/64 のリンクローカルアドレスや、グローバルユニキャストアドレス (2001:db8::/32 など)
  • ipv6.methodipv6.addresses を設定すればIPv6も利用可能

7.3.2 DNS設定

  • NetworkManager経由でDNSサーバーを指定すると、/etc/resolv.conf が自動的に更新される(systemd-resolved が介在する場合もある)
  • /etc/resolv.conf が手動上書きされるとNetworkManagerと競合するため、基本的にはnmclinmtuiで管理する
nmcli connection modify enp0s3 ipv4.dns "8.8.8.8 8.8.4.4"
nmcli connection up enp0s3

Tips: DNSキャッシュとしてnscddnsmasqを利用するとクエリ応答が高速化するケースもある。


7.4 firewalldの高度な設定

7.4.1 firewalldの基本復習

  • ゾーン: インターフェースごとに信頼度を設定(public, private, internal, external, dmz, home など)
  • サービス/ポート: sudo firewall-cmd --add-service=http --permanent などで許可し、sudo firewall-cmd --reload で反映
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --list-all

7.4.2 リッチルール (Rich Rules)

リッチルールを使うと、ソースIPやポート、プロトコルなどを細かく制御できる。

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" \
  source address="192.168.10.0/24" port port="8080" protocol="tcp" accept'
sudo firewall-cmd --reload
  • ソースが192.168.10.0/24のTCP 8080を許可

マスカレードやフォワーディングの例

# IPマスカレードを有効にし、内側ネットワークをインターネットにNATする場合
sudo firewall-cmd --permanent --add-masquerade
# ポートフォワーディング
sudo firewall-cmd --permanent --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=192.168.10.50

7.4.3 ゾーンバインディング

nmcli でNICをどのゾーンに属させるか指定できる。

sudo nmcli connection modify enp0s3 connection.zone=public
sudo nmcli connection up enp0s3
  • DMZゾーンやtrustedゾーンなどを使い分けることで、インターフェースごとにセキュリティレベルを変えられる。

7.5 VPNの概要

7.5.1 OpenVPN

  • TCP/UDP 1194番ポートを使うことが多い
  • サーバー側でOpenVPNをインストールし、Server.confを設定し、認証用のCAとクライアント証明書を発行
  • クライアントにはOpenVPNクライアントソフトまたはNetworkManagerのVPNプラグインを導入し、.ovpnファイルを読み込む
sudo dnf install openvpn
sudo systemctl enable openvpn@server
sudo systemctl start openvpn@server

注意: 鍵や証明書管理がやや複雑。Easy-RSAなどのスクリプトを活用して効率化できる。

7.5.2 WireGuard

WireGuard
最新のVPNプロトコル。軽量・高速・シンプルな構成が特長。カーネルモジュールとして組み込まれており、暗号性能が高い。

sudo dnf install wireguard-tools
wg genkey | tee privatekey | wg pubkey > publickey
  • wg-quickコマンドやNetworkManager経由で設定
  • ポートがデフォルトでUDP 51820を使用し、クライアントは各ピアとして公開鍵を設定する

7.6 ブリッジ、ボンディング、VLAN設定

7.6.1 ブリッジ (Bridge)

仮想マシンやコンテナに対して同一L2ネットワークを提供するには、ブリッジインターフェースが便利。

# nmcliによるブリッジ作成例
sudo nmcli connection add type bridge con-name br0 ifname br0
sudo nmcli connection add type bridge-slave ifname enp0s3 master br0
sudo nmcli connection modify br0 ipv4.addresses 192.168.10.100/24 ipv4.gateway 192.168.10.1 ipv4.method manual
sudo nmcli connection up br0
  • bridge-slave は実NICをブリッジのスレーブとしてアタッチ
  • 仮想マシンやPodman/Dockerのネットワークをこのブリッジに繋げば、同一サブネットで通信可能

7.6.2 ボンディング (Bonding)

ボンディング (NICチーミング)
複数のNICを1つの論理インターフェースとして束ね、可用性(片方が障害でも継続)や帯域幅向上を図る技術。

# teamdまたはnmcliを使ってボンディング(チーム)を作成する例
sudo nmcli connection add type team con-name team0 ifname team0 config '{"runner": {"name": "activebackup"}}'
sudo nmcli connection add type team-slave ifname enp0s3 master team0
sudo nmcli connection add type team-slave ifname enp0s4 master team0
  • ランナーの種類: activebackup, loadbalance, lacp など
  • activebackup は1本がメインで、障害時にもう1本が引き継ぐ

7.6.3 VLAN (Virtual LAN)

  • 先述の nmcli例や、ifcfgファイル (/etc/sysconfig/network-scripts/ifcfg-enp0s3.100) にVLAN=yes として設定可能
  • VLANごとにサブネットを分割し、セキュリティやトラフィック制御を行う

7.7 ネットワークトラブルシューティング

7.7.1 基本コマンド

  • ping: 疎通確認(ICMPエコー)。ping -c 3 google.com など
  • traceroute: 通信経路(ルーターのホップ)を可視化。sudo dnf install traceroute
  • ss: ソケットステータス。ss -tln でTCPポートのLISTEN状態を確認
  • ip: ルーティングやNIC情報。ip addr, ip route, ip link
  • tcpdump: パケットキャプチャ。tcpdump -i enp0s3 port 80 など

7.7.2 名前解決の問題

  • dig, host: DNS問い合わせをテスト。sudo dnf install bind-utils で導入可能
  • /etc/resolv.conf が予期せず書き換えられる問題は、NetworkManager設定を確認
  • DNSキャッシュ競合 (systemd-resolved vs dnsmasqなど) に注意

7.7.3 iperfによるスループット測定

# サーバー側
iperf3 -s

# クライアント側
iperf3 -c <server-ip> -t 10
  • ネットワーク帯域や速度を数値化し、回線や設定に問題がないか検証

7.8 学習のまとめ

  1. NetworkManagerの活用: nmcliやnmtuiを使うことで、シンプルなDHCPから複雑なブリッジ/VLANまで、統一的な方法で設定管理ができる。
  2. IPアドレス・DNS設定: 固定IPや複数のDNSサーバーを指定する場合、GUI/CLIいずれもNetworkManagerから設定するのが推奨。
  3. firewalldの高度設定: リッチルールやポートフォワーディング、ゾーン管理を適切に行い、セキュアかつ柔軟にネットワークアクセスを制御する。
  4. VPN導入: OpenVPNやWireGuardを使うことで、遠隔地やクラウドから安全に内部ネットワークへ接続できる。鍵管理や暗号化設定を慎重に行う。
  5. ブリッジ、ボンディング、VLAN: 仮想化や高可用性、ネットワークセグメンテーションを行う上で重要な技術。NetworkManager経由で設定を一元管理可能。
  6. トラブルシューティング: ping、traceroute、ss、ipコマンドなどを使い、疎通、ルーティング、ポート状態を切り分ける。DNSの問題やパケットロス、帯域不足などを適切に診断する。

次章へのつながり

次の章(第8章)では、セキュリティ設定と強化をさらに深掘りします。AlmaLinux 9におけるSELinuxのカスタマイズやSSHセキュリティ、Fail2Banの導入など、多層的な防御戦略を習得し、ネットワークと連携したセキュアなシステムを構築する方法を学びましょう。