第7章: ネットワーク設定と管理
7.1 この章で解説する主要な技術・概念
AlmaLinux 9を運用する上で欠かせないネットワーク設定と管理をさらに詳細に解説します。Linuxサーバーのネットワークは単なるIPアドレスの設定だけでなく、セキュリティや可用性を含めて総合的に設計・運用する必要があります。本章では以下のテーマを深掘りし、安定かつ安全なネットワーク環境を構築するためのノウハウを学びましょう。
- NetworkManagerの詳細 (nmcli, nmtui, GUI)
- IPアドレス構成 (IPv4/IPv6) とDNS設定
- firewalldの高度な設定 (ゾーン、リッチルール、ポートフォワーディング)
- VPNの概要 (OpenVPN、WireGuard など)
- ブリッジ、ボンディング、VLAN設定
- ネットワークトラブルシューティング (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.method
やipv6.addresses
を設定すればIPv6も利用可能
7.3.2 DNS設定
- NetworkManager経由でDNSサーバーを指定すると、
/etc/resolv.conf
が自動的に更新される(systemd-resolved
が介在する場合もある) - /etc/resolv.conf が手動上書きされるとNetworkManagerと競合するため、基本的には
nmcli
かnmtui
で管理する
nmcli connection modify enp0s3 ipv4.dns "8.8.8.8 8.8.4.4"
nmcli connection up enp0s3
Tips: DNSキャッシュとして
nscd
やdnsmasq
を利用するとクエリ応答が高速化するケースもある。
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 学習のまとめ
- NetworkManagerの活用: nmcliやnmtuiを使うことで、シンプルなDHCPから複雑なブリッジ/VLANまで、統一的な方法で設定管理ができる。
- IPアドレス・DNS設定: 固定IPや複数のDNSサーバーを指定する場合、GUI/CLIいずれもNetworkManagerから設定するのが推奨。
- firewalldの高度設定: リッチルールやポートフォワーディング、ゾーン管理を適切に行い、セキュアかつ柔軟にネットワークアクセスを制御する。
- VPN導入: OpenVPNやWireGuardを使うことで、遠隔地やクラウドから安全に内部ネットワークへ接続できる。鍵管理や暗号化設定を慎重に行う。
- ブリッジ、ボンディング、VLAN: 仮想化や高可用性、ネットワークセグメンテーションを行う上で重要な技術。NetworkManager経由で設定を一元管理可能。
- トラブルシューティング: ping、traceroute、ss、ipコマンドなどを使い、疎通、ルーティング、ポート状態を切り分ける。DNSの問題やパケットロス、帯域不足などを適切に診断する。
次章へのつながり
次の章(第8章)では、セキュリティ設定と強化をさらに深掘りします。AlmaLinux 9におけるSELinuxのカスタマイズやSSHセキュリティ、Fail2Banの導入など、多層的な防御戦略を習得し、ネットワークと連携したセキュアなシステムを構築する方法を学びましょう。