Linux の基礎知識

【Linuxの基礎知識】ネットワーク設定とトラブルシューティングを徹底解説!

ネットワークセキュリティ 2

Linux基礎知識(全17記事)

├─【Linuxの基礎知識】Linuxとは?基本概要と仕組みをわかりやすく解説!
├─【Linuxの基礎知識】インストールからログインまでの完全マニュアル
├─【Linuxの基礎知識】カーネルの役割と起動プロセスをわかりやすく解説!
├─【Linuxの基礎知識】ファイルシステムを極める!ディレクトリ構造とその関連性を解説
├─【Linuxの基礎知識】ディレクトリとファイル操作を完全マスター!初心者向けガイド
├─【Linuxの基礎知識】初心者向け!Linux管理に役立つ基本コマンド完全ガイド
├─【Linuxの基礎知識】ユーザー管理を極める!アクセス権との連携で強固なシステム構築
├─【Linuxの基礎知識】リンクとiノードについて理解を深めよう!
├─【Linuxの基礎知識】LVMとは? LVMを理解しよう!
├─【Linuxの基礎知識】過去事例から学ぶ!システムセキュリティの基本
├─【Linuxの基礎知識】ディスク管理の完全ガイド!初心者から実践までを徹底解説
├─【Linuxの基礎知識】ネットワーク設定とトラブルシューティングを徹底解説!
├─【Linuxの基礎知識】リソース監視ツールの使い方を徹底解説!
├─【Linuxの基礎知識】パッケージ管理の応用テクニックをマスター!
├─仮想化とコンテナの基本を学ぶ!
├─バックアップとリストアのベストプラクティス
└─RAIDとディスク管理を徹底解説!

Linuxを利用する上で、ネットワークの設定やトラブルシューティングは避けて通れない重要なスキルです。適切なネットワーク設定を行うことで、サーバーやクライアントの通信を安定させ、トラブル発生時の迅速な対応が可能になります。

特に、企業システムでは安定性や長期的なサポートを重視するため、RHEL系(Red Hat Enterprise Linux、CentOS、Rocky Linux)が広く採用されています。本記事では、企業システムの運用を前提に、RHEL系を基準としたネットワーク設定について解説します。

本記事では、Linuxのネットワーク設定方法から、診断ツールの使い方、トラブルシューティング、ファイアウォール管理、VPNの設定、パフォーマンス最適化、セキュリティ対策までを徹底解説します。初心者から実践者まで幅広く活用できる内容を網羅しているため、Linuxネットワークの基礎から応用までしっかりと理解できるようになります。

Linuxのネットワーク設定でつまずいたり、トラブル発生時に適切な対応ができるようになりたい方は、ぜひ本記事を参考にしてください。

Linuxのネットワークの基本

Linuxを運用する上で、ネットワーク設定の理解は不可欠です。特にサーバー環境では、適切なネットワーク設定がシステムの安定稼働に直結します。本章では、Linuxのネットワークの基本概念、ネットワーク設定の概要、主要なネットワーク設定ファイルについて詳しく解説します。

ネットワークとは?Linuxでの役割

ネットワークは、複数のコンピュータやデバイスが相互に通信できるようにする仕組みです。Linuxはサーバー用途で広く使用されており、以下のようなネットワーク関連の役割を果たします。

  • Webサーバー: ApacheやNginxを用いたWebサイトのホスティング
  • データベースサーバー: MySQLやPostgreSQLを活用したデータ処理
  • ファイルサーバー: NFSやSambaによるファイル共有
  • 仮想環境のネットワーク: DockerやKVMなどのネットワーク管理

Linuxのネットワーク機能を正しく理解し、適切に設定することで、これらのサービスを安定して運用できます。

Linuxのネットワーク設定の概要

Linuxでは、ネットワーク設定を適切に行うことで、効率的な通信が可能になります。主なネットワーク設定項目は以下の通りです。

  • ネットワークインターフェースの管理 (ip コマンドを使用)
  • IPアドレスの設定 (静的IP / DHCPの割り当て)
  • ルーティング設定 (ip route によるルート管理)
  • DNS設定 (/etc/resolv.conf によるネームサーバー設定)
  • ネットワーク設定ファイルの編集 (RHEL系では /etc/sysconfig/network-scripts/, Ubuntu系では /etc/netplan/)

RHEL系では主に NetworkManager を利用する環境が増えていますが、従来の network-scripts を使用することもあります。

ネットワークインターフェースとIPアドレスの基本

ネットワークインターフェース(NIC: Network Interface Card)は、Linuxがネットワークに接続するための物理または仮想デバイスです。Linuxでは、以下のようなインターフェースが一般的です。

インターフェース名説明
eth0, eth1有線LANインターフェース
wlan0, wlan1無線LANインターフェース
loループバックインターフェース(127.0.0.1)
ens33, eno1 などサーバー環境で利用される命名規則

IPアドレスの設定方法

  • 静的IPの設定:
    手動でIPアドレスを設定し、固定化する。
  • DHCPによる割り当て:
    dhclient または NetworkManager を使用して動的にIPアドレスを取得する。
インターフェースの確認方法

ip a # 現在のネットワークインターフェースの状態を確認
ifconfig -a # 古い環境での確認方法

Linuxのネットワーク設定ファイルの構成

Linuxでは、ネットワークの設定を行うためにさまざまな設定ファイルが用意されています。主要なファイルは以下の通りです。

設定ファイル説明
/etc/sysconfig/network-scripts/ifcfg-*RHEL系(CentOS, Rocky Linux)のネットワーク設定
/etc/resolv.confDNSサーバーの設定

ネットワークインターフェースの設定

IPアドレスなどの設定には「/etc/sysconfig/network-scripts/」 内の設定ファイルを編集します。

例: ifcfg-eth0 の設定

cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8

この設定を適用するには、以下のコマンドを実行します。

systemctl restart network

/etc/resolv.conf によるDNS設定

nameserver 8.8.8.8
nameserver 8.8.4.4

cat /etc/resolv.conf

systemd-resolve --status

本章では、Linuxのネットワーク設定について解説しました。特にRHEL系では network-scriptsNetworkManager を利用することが一般的ですが、Ubuntuでは netplan への移行が進んでいます。適切な設定方法を理解し、Linuxのネットワークを正しく管理しましょう。

Linuxのネットワーク設定方法

RHEL系のLinux環境では、ネットワークの設定を適切に管理することが、サーバーの安定運用に直結します。RHEL系では、ネットワーク設定の方法として nmclinmtui を利用するケースが増えており、従来の ifconfigroute コマンドから ip コマンドへの移行も進んでいます。また、ネットワークの動的管理を行う systemd-networkdsystemd-resolved の利用も一般的です。本記事では、RHEL系の環境に特化し、ネットワークインターフェースの管理、静的IPとDHCPの設定、ルーティングとゲートウェイの管理、DNSの設定方法について詳しく解説します。

ネットワークインターフェースの管理

ネットワークインターフェースの設定は、サーバーが通信を行うための基本的な構成要素です。RHEL系では、ip コマンドや nmcli を用いて、インターフェースの状態を確認・変更できます。

ifconfig / ip コマンドによる設定

従来の ifconfig コマンドは非推奨となっており、現在は ip コマンドが標準的に使用されます。

ネットワークインターフェースの状態を確認

ip a

IPアドレスを手動で設定

ip addr add 192.168.1.100/24 dev eth0

設定を削除

ip addr del 192.168.1.100/24 dev eth0

nmcli でのネットワーク管理

nmcli を使用すると、NetworkManager を介してネットワーク設定を管理できます。CUIで直感的に操作できる nmtui も利用可能です。

ネットワークインターフェースの状態を確認

nmcli device status

新しい接続を作成

nmcli con add type ethernet ifname eth0 con-name my-eth0 ip4 192.168.1.100/24 gw4 192.168.1.1

設定の適用

nmcli con up my-eth0

systemd-networkd の利用

近年、RHEL系の一部環境では systemd-networkd を使用するケースもあります。設定は /etc/systemd/network/ 配下に記述します。

既にネットワークの設定をnmcli で設定している環境ではnmlieと競合を起こすため、systemd-networkd は不要です。

例: 静的IPアドレスを設定

[Match]
Name=eth0

[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8

適用後、サービスを再起動します。

systemctl restart systemd-networkd

静的IPアドレスとDHCPの設定

RHEL系では、静的IPアドレスとDHCPのどちらも NetworkManager で設定できます。特定の環境では dhclient コマンドを使用することもあります。

nmcli で現在の接続情報を確認(NetworkManager使用時)

NetworkManager を使用している場合、次のコマンドで現在の接続情報を表示できます。

nmcli device show eth0 | grep 'IP4.DHCP4'

  • 出力例(DHCP使用時):

    IP4.DHCP4.OPTION[1]: dhcp_lease_time = 86400

    この出力がある場合、DHCP で IP アドレスを取得している。

  • 出力がなければ静的IP設定の可能性が高い。

dhclient コマンドの使用

dhclient を使用すると、手動でDHCPからIPを取得できます。

DHCPでIPアドレスを取得

dhclient eth0

現在のリース情報を確認

cat /var/lib/dhclient/dhclient.leases

static 設定と dhcp 設定の違い

静的IPとDHCPの違いは、以下の設定ファイルで確認できます。

静的IPの設定例 (/etc/sysconfig/network-scripts/ifcfg-eth0)

DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8

DHCPの設定例 (/etc/sysconfig/network-scripts/ifcfg-eth0)

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

ルーティングとゲートウェイの設定

ネットワークの通信を適切に制御するために、ルーティング設定が必要です。

route / ip route コマンドでルートを設定

RHEL系では、ip route コマンドを使用してルーティング設定を行います。

デフォルトゲートウェイの設定

ip route add default via 192.168.1.1

特定のネットワーク宛のルート追加

ip route add 192.168.2.0/24 via 192.168.1.254

ルートの確認

ip route show

ネットワーク設定ファイルでのゲートウェイ設定

/etc/sysconfig/network-scripts/ifcfg-eth0 の中でゲートウェイを設定できます。

GATEWAY=192.168.1.1

設定適用後、ネットワークを再起動します。

systemctl restart network

LinuxでのDNS設定

DNSの設定は /etc/resolv.conf や systemd-resolved を用いて管理します。

/etc/resolv.conf の編集

DNSサーバーを手動で設定する場合、/etc/resolv.conf に直接記述します。

nameserver 8.8.8.8
nameserver 8.8.4.4

設定を確認するには、以下のコマンドを実行します。

cat /etc/resolv.conf

systemd-resolved の管理

近年のRHEL系では systemd-resolved を用いることもあります。

DNS設定の確認

systemd-resolve --status

特定のインターフェースのDNSを設定

systemd-resolve --interface=eth0 --set-dns=8.8.8.8

サービスの再起動

systemctl restart systemd-resolved

RHEL系のLinuxでは、NetworkManager を中心にネットワーク管理を行い、ipnmcli などのツールを活用して設定を行います。静的IPアドレスとDHCPの違いを理解し、ルーティングやDNSの設定を適切に管理することで、安定したネットワーク環境を構築できます。本記事で紹介した方法を活用し、RHEL系のネットワーク管理スキルを向上させましょう。

Linuxのネットワーク診断とトラブルシューティング

Linuxを運用する上で、ネットワークトラブルは避けて通れません。適切な診断ツールを活用し、問題の原因を素早く特定することで、システムの安定性を維持することができます。本章では、ネットワークの診断に役立つ基本ツールの紹介と、よくあるトラブルの原因と解決策について詳しく解説します。

ネットワーク診断に使える基本ツール

Linuxにはネットワークトラブルを診断するための多くのコマンドが用意されています。これらを適切に使い分けることで、ネットワークの状況を素早く把握し、問題の原因を突き止めることができます。

疎通確認や名前解決が正しく動作しているかをチェック

  1. ping: ネットワークの疎通確認を行う。

    ping 8.8.8.8

  2. traceroute: 通信経路を確認し、どこでパケットが遅延・ロスしているか調査する。

    traceroute 8.8.8.8

  3. nslookup: DNSの解決状況を確認する。

    nslookup google.com

  4. dig: より詳細なDNS情報を取得する。

    dig google.com

システム内部の通信状態を詳しく調査

  1. netstat: 現在のネットワーク接続やリスニングポートを確認する。

    netstat -tulnp

  2. ss: netstat の代替コマンドで、より高速に情報を取得できる。

    ss -tulnp

  3. tcpdump: ネットワークパケットのキャプチャを行い、通信の詳細を解析する。

    tcpdump -i eth0 port 80

  4. nmap: ネットワークスキャンを行い、開放ポートやサービスを確認する。

    nmap -sS 192.168.1.1/24

よくあるネットワークトラブルと解決策

ネットワークトラブルはさまざまな原因によって発生しますが、適切な診断と対応を行うことで迅速に復旧できます。ここでは、Linuxでよく発生するネットワークトラブルとその解決策を解説します。

ネットワーク接続ができない場合

ネットワーク接続ができない原因

  • ケーブルが抜けている、または無線LANが切断されている
  • ネットワークインターフェースが有効になっていない
  • IPアドレスが正しく設定されていない
  • ]ルーティングの設定に問題がある

対処法

  1. インターフェースの状態を確認

    ip a

  2. インターフェースを有効化

    ip link set eth0 up

  3. DHCPでIPを再取得

    dhclient eth0

  4. ネットワークのルートを確認

    ip route show

DNSが機能しない場合

DNSが機能しない原因

  • /etc/resolv.conf の設定が間違っている
  • DNSサーバーがダウンしている
  • systemd-resolved の設定に問題がある

対処法

  1. 現在のDNS設定を確認

    cat /etc/resolv.conf

  2. DNS設定でGoogle Public DNSを指定する

    echo "nameserver 8.8.8.8" > /etc/resolv.conf

  3. systemd-resolved のステータスを確認

    systemd-resolve --status

ルーティングエラーの対処

ルーティングエラーの原因

  • デフォルトゲートウェイが設定されていない
  • 静的ルートが誤って設定されている
  • ルータ側の設定に問題がある

対処法

  1. デフォルトゲートウェイの設定を確認

    ip route show

  2. ゲートウェイを手動で追加

    ip route add default via 192.168.1.1

  3. 設定を永続化(RHEL系)

    GATEWAY=192.168.1.1

journalctl / dmesg を使ったログ解析

ネットワークトラブルの原因が特定できない場合は、システムログを確認することで問題の手がかりを得ることができます。

  1. journalctl で systemd 管理下のログを確認

    journalctl -xe -u network

  2. dmesg でカーネルログを確認し、ネットワークデバイスのエラーを特定

    dmesg | grep eth0

本章では、Linuxのネットワーク診断に役立つツールと、よくあるトラブルの解決策について解説しました。pingtraceroute などの基本ツールを活用し、問題の原因を特定した上で、適切な対応を行うことが重要です。ネットワークトラブルは発生するものですが、適切な知識を身につけることで、迅速に対処できるようになります。

Linuxのファイアウォール設定

Linuxのファイアウォールは、システムのセキュリティを強化するために不可欠な要素です。適切なルールを設定することで、不正なアクセスをブロックし、安全な通信のみを許可できます。Linuxでは主に iptablesfirewalldufw などのファイアウォール管理ツールが利用されます。本章では、それぞれのツールを使用したパケットフィルタリングやポート制御、NATの設定方法について解説します。

iptables を使用したパケットフィルタリング

iptables は、Linuxのカーネルに組み込まれたパケットフィルタリング機能を利用し、詳細なルールを設定できる強力なツールです。サーバーのセキュリティを強化するために、適切なルールを定義して不正アクセスを防ぎます。

iptables の基本ルール

iptables のルールは、チェーン(INPUT、OUTPUT、FORWARD)とポリシーによって管理されます。

  • 基本的なチェーン
    • INPUT : 外部からのパケットを処理
    • OUTPUT : 内部から外部へ送信するパケットを処理
    • FORWARD : ルーターのようにパケットを中継
  • 現在のルールを確認

    iptables -L -v -n

  • デフォルトポリシーを設定

    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT ACCEPT

ポートの開放と制限

特定のポートを開放することで、必要なサービスだけが外部と通信できるようになります。

  • SSH(ポート22)を許可

    iptables -A INPUT -p tcp --dport 22 -j ACCEPT

  • HTTP(ポート80)とHTTPS(ポート443)を許可

    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    iptables -A INPUT -p tcp --dport 443 -j ACCEPT

  • 特定のIPアドレスのみSSHを許可

    iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT

  • ルールを保存

    iptables-save > /etc/sysconfig/iptables

NAT の設定

NAT(Network Address Translation)は、プライベートIPアドレスを外部のパブリックIPに変換する際に使用されます。

  • IPマスカレードを有効化

    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

  • 特定のポートをリダイレクト(ポートフォワーディング)

    iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80

firewalldの使い方

firewalldは、iptables のフロントエンドとして動作し、より簡単にファイアウォールを管理できるツールです。特に、RHEL系では firewalldが標準で採用されています。

firewalld の基本設定とゾーン管理

firewalld は、ゾーンベースでファイアウォールのルールを管理します。ゾーンごとに異なるセキュリティレベルを設定できるため、柔軟なアクセス制御が可能です。

  • firewalld のステータスを確認

    systemctl status firewalld

  • ゾーンの一覧を表示

    firewall-cmd --get-zones

  • 特定のゾーンにサービスを追加

    firewall-cmd --zone=public --add-service=http --permanent
    firewall-cmd --zone=public --add-service=https --permanent
    firewall-cmd --reload

  • ポートを手動で開放

    firewall-cmd --zone=public --add-port=8080/tcp --permanent
    firewall-cmd --reload

Linuxのファイアウォール設定では、iptables を用いた詳細な制御から、firewalld を利用した簡易管理まで、さまざまな方法が用意されています。サーバーの運用環境に応じて、適切なファイアウォールを設定し、セキュリティを強化することが重要です。ファイアウォールを適切に設定することで、外部からの不正アクセスを防ぎ、安全なネットワーク環境を構築できます。

LinuxのVPN・プロキシ設定

企業ネットワークやリモートアクセス環境では、VPN(仮想プライベートネットワーク)やプロキシサーバーの適切な設定が不可欠 です。VPNを利用することで、安全なリモート接続が可能になり、プロキシサーバーを活用することでネットワークのセキュリティや管理が向上します。本章では、RHEL系の環境 における VPNの設定方法とプロキシサーバーの構築方法 について詳しく解説します。

VPNを利用したネットワーク接続

VPN(仮想プライベートネットワーク)は、インターネットを経由して安全な通信を確立する技術 です。RHEL系では OpenVPNWireGuard などのツールを利用してVPN接続を構築できます。

OpenVPN の設定

OpenVPN は、広く利用されているオープンソースのVPNソフトウェア で、高いセキュリティと柔軟な設定が可能です。

  1. OpenVPN のインストール

    yum install -y epel-release
    yum install -y openvpn easy-rsa

  2. サーバー側の設定
    • 設定ファイルを作成

      cp /usr/share/doc/openvpn*/sample-config-files/server.conf /etc/openvpn/server.conf

    • 鍵・証明書の作成

      cd /etc/openvpn/
      easy-rsa init-pki
      easy-rsa build-ca
      easy-rsa build-server-full server nopass

    • サービスの起動

      systemctl enable --now openvpn@server

  3. クライアントの設定
    • せ定ファイルを編集

      cp /usr/share/doc/openvpn*/sample-config-files/client.conf ~/client.ovpn

    • VPN接続を確立

      yopenvpn --config ~/client.ovpn

WireGuard の導入と設定

WireGuard は、シンプル・高速・高セキュリティを特徴とする新世代の VPN プロトコルです。2020年に Linux カーネルに統合され、最新の暗号技術(ChaCha20, Poly1305)を採用し、OpenVPN や IPsec よりも軽量で高速な接続を実現します。設定が簡単で、モバイル環境でも安定した通信が可能なため、近年企業ネットワークやクラウド環境での導入が増えています。

これまでの VPN(OpenVPN, IPsec)との違い
項目WireGuardOpenVPN / IPsec
速度非常に高速(カーネルレベルで動作)比較的遅い(ユーザースペースで動作)
セキュリティ最新の暗号技術(ChaCha20, Poly1305)AES, SHA-1 など(古い暗号方式も対応)
設定の簡潔さシンプルな設定(数行のコンフィグで動作)設定が複雑(証明書・鍵管理が必要)
接続確立の速さミリ秒単位で確立可能OpenVPN/IPsec は遅い(数秒〜数十秒)
安定性モバイル環境でも途切れにくいIP変更時に再接続が必要
  1. WireGuard のインストール

    dnf install -y epel-release elrepo-release
    dnf install -y kmod-wireguard wireguard-tools

  2. サーバー側の設定
    1. 設定ファイルを作成

      mkdir /etc/wireguard
      touch /etc/wireguard/wg0.conf

    2. 秘密鍵と公開鍵の生成

      wg genkey | tee /etc/wireguard/privatekey | wg pubkey > /etc/wireguard/publickey

    3. 設定ファイルの編集

      以下の内容を /etc/wireguard/wg0.conf に記述

      [Interface]
      PrivateKey = (生成された秘密鍵)
      Address = 10.0.0.1/24
      ListenPort = 51820

      [Peer]
      PublicKey = (クライアントの公開鍵)
      AllowedIPs = 10.0.0.2/32

    4. サービスの起動

      systemctl enable --now wg-quick@wg0

  3. クライアントの設定

    1. 設定ファイルを作成

      以下の内容を /etc/wireguard/wg-client.conf に記述

      [Interface]
      PrivateKey = (クライアントの秘密鍵)
      Address = 10.0.0.2/24

      [Peer]
      PublicKey = (サーバーの公開鍵)
      Endpoint = サーバーのIP:51820
      AllowedIPs = 0.0.0.0/0

    2. VPN接続を確立

      wg-quick up wg-client

VPN接続時のルーティング設定

VPNを利用すると、特定のトラフィックをVPN経由にするルーティング設定が必要になる場合があります。

  1. すべての通信をVPN経由にする

    ip route add default via 10.0.0.1 dev wg0

  2. 特定のサブネットのみVPN経由にする

    ip route add 192.168.100.0/24 via 10.0.0.1 dev wg0

  3. ルーティング設定を永続化
    RHEL では /etc/sysconfig/network-scripts/route-eth0 にルートを記述することで永続化可能です。

プロキシサーバーの設定

プロキシサーバーは、内部ネットワークと外部ネットワークの間に配置し、通信を制御する仕組み です。RHEL系では、Squid を利用したプロキシサーバーの構築や、proxychains を用いたプロキシ経由の通信が可能です。

Squid を使ったプロキシサーバー

Squid は、オープンソースのHTTPプロキシサーバー で、キャッシュ機能やアクセス制御を提供します。

  1. Squid のインストール

    dnf install -y squid

  2. 設定ファイルの編集
    以下の内容を /etc/squid/squid.conf に記述

    http_port 3128
    acl localnet src 192.168.1.0/24
    http_access allow localnet
    http_access deny all

  3. Squid の起動

    systemctl enable --now squid

  4. クライアント側の環境変数設定
    プロキシを使用する環境変数を設定

    export http_proxy="http://192.168.1.1:3128"
    export https_proxy="http://192.168.1.1:3128"

proxychains によるプロキシ経由接続

ProxyChains は、Linux や他の Unix 系システムで使用されるプロキシツールです。任意のプログラムの通信をプロキシ経由に強制し、TCP および DNS リクエストをプロキシトンネルを通じて送信できます。HTTP、SOCKS4、SOCKS5 などのプロキシサーバーをサポートし、複数のプロキシをチェーン状に設定することも可能です。

Web システム(ブラウザ) vs. クライアントサーバ型アプリ
項目Web システムクライアントサーバ型
通信方式ブラウザ ⇄ Webサーバークライアントアプリ ⇄ サーバー
プロキシの適用方法Apache mod_proxy, Squid, ブラウザのプロキシ設定proxychains でアプリ単位で強制的にプロキシを適用
プロトコルHTTP / HTTPSSSH, FTP, SOCKS5, RDP, VPN など
プロキシの目的Web フィルタリング、負荷分散、キャッシュネットワーク制限の回避、匿名アクセス、ペネトレーションテスト

基本的に proxychains は、 クライアントサーバ型のアプリケーションで使用されることが多い です。ようは、クラサバ環境用のプロキシと思えばいいと思います。

  1. ProxyChains のインストール

    dnf install -y proxychains-ng

  2. 設定ファイルの編集

    以下の内容を /etc/proxychains.conf に記述

    strict_chain
    proxy_dns
    tcp_read_time_out 15000
    tcp_connect_time_out 8000

    [ProxyList]
    socks5 192.168.1.1 1080

  3. プロキシ経由で通信

    proxychains4 curl http://example.com

  4. 特定のアプリケーションをプロキシ経由で実行

    proxychains4 ssh user@example.com

  5. ProxyChains のデバッグモードを有効化(問題の原因を特定)

    proxychains4 -f /etc/proxychains.conf -d curl http://example.com

RHEL系の環境では、VPNを利用することでリモート接続のセキュリティを強化でき、プロキシサーバーを導入することでネットワークの制御や匿名性を向上 させることが可能です。

Linuxのネットワークパフォーマンス最適化

Linuxのネットワークパフォーマンスを最適化することで、高速で安定した通信 を実現できます。特に、サーバー環境では、TCP/IPのチューニングNIC(ネットワークインターフェースカード)の設定 を適切に行うことで、通信遅延の低減・スループットの向上 が可能です。本章では、sysctl を活用した TCP/IP の最適化、および ethtool を利用したネットワークインターフェースのチューニングについて解説します。

sysctl を利用したTCP/IPの最適化

Linux では sysctl を利用して TCP/IP スタックのパラメータを調整 できます。デフォルト設定のままでは、特定の環境で ネットワーク性能が十分に発揮されない ことがあるため、適切にチューニングを行うことが重要です。

データベースのパフォーマンスチューニングを行う場合、DBメーカー(Oracle, MySQL, PostgreSQL など)がシステム要件として推奨するカーネルパラメータの値を指定していることが多い ため、適切な設定を確認せずに変更すると、システムの動作に悪影響を及ぼす可能性があります。推奨値を理解していない場合は、安易に設定を変更せず、公式ドキュメントや担当者と確認することを推奨します。

ネットワークバッファサイズの調整

 ネットワークバッファサイズを適切に調整することで、大量のデータ通信時の パケットロスを低減 し、スループットを向上させることができます。

  1. 現在の設定を確認

    sysctl -a | grep net.core

  2. ネットワークバッファサイズの変更

    以下の設定を /etc/sysctl.conf に追加し、バッファサイズを拡張します。

    net.core.rmem_max = 16777216
    net.core.wmem_max = 16777216
    net.core.rmem_default = 8388608
    net.core.wmem_default = 8388608

  3. 設定を反映

    sysctl -p

チューニングが必要な環境

  • データベースサーバー(MySQL / PostgreSQL など)

    大量のクエリ処理時にネットワーク遅延を抑え、クライアント ⇄ DB 間の同時接続数の増加に対応する。

  • ストレージ / ファイル転送サーバー(NFS / Samba / FTP)

    大容量データの送受信でボトルネックにならないよう、バッファサイズや TCP ウィンドウサイズを調整。

  • 動画・ストリーミングサーバー(YouTube, Twitch, CDN など)

    TCP バッファを最適化し、高速ストリーミングを実現。

  • Web サーバー(Apache / Nginx / HAProxy)

    同時接続数やキープアライブ接続の処理効率を向上。

TCPウィンドウサイズの最適化

TCPウィンドウサイズは、送受信時に 一度に送信できるデータ量を決定するパラメータ です。適切に設定することで、長距離通信や大容量データ転送のパフォーマンス向上 が期待できます。

  1. 現在の設定を確認

    sysctl -a | grep tcp

  2. TCPウィンドウサイズの最適化

    以下の設定を /etc/sysctl.conf に追加します。

    net.ipv4.tcp_rmem = 4096 87380 16777216
    net.ipv4.tcp_wmem = 4096 65536 16777216
    net.ipv4.tcp_window_scaling = 1
    net.ipv4.tcp_mtu_probing = 1

  3. 設定を反映

    sysctl -p

ethtool を活用したネットワークチューニング

ethtool は、NIC(ネットワークインターフェースカード)の詳細設定を行うツール です。適切な設定を行うことで、レイテンシの低減やスループット向上 に寄与します。

NIC のオフロード設定を誤ると、サーバーのネットワークが切断され、遠隔地からのアクセスが不可能になる恐れがあります。特にリモート環境では復旧が困難になるため、慎重に操作してください。設定に自信がない場合や仕組みを十分に理解していない場合は、ネットワーク担当者に任せ、安易に変更しないことを推奨します。筆者がこれをしでかして現場が大混乱になりました・・

NICの設定変更

NIC の設定を適切に変更することで、通信速度やエラーレートを最適化できます。

  • 利用可能なオプションを確認

    ethtool eth0

  • NIC のオフロード設定を調整

    オフロード機能を有効化すると、CPU 負荷を軽減し、パケット処理を高速化できます。

    ethtool -K eth0 tso on
    ethtool -K eth0 gso on
    ethtool -K eth0 gro on

スループット向上のための最適化

  • 送受信キューのサイズ変更

    ethtool -G eth0 rx 4096 tx 4096

  • 割り込みの最適化

    ethtool -C eth0 rx-usecs 50
    ethtool -C eth0 tx-usecs 50

本章では、Linuxのネットワークパフォーマンスを最適化する方法 について解説しました。

Linuxのネットワークセキュリティ対策

Linux環境では、サーバーを外部ネットワークに公開する際に適切なセキュリティ対策 を講じることが不可欠です。特に、SSHのセキュリティ強化 は重要で、不正アクセスを防ぐためにポート変更や鍵認証の設定、Fail2banの導入、SELinuxによる制御 などが有効です。本章では、Linuxのネットワークセキュリティを強化する方法を詳しく解説します。

SSHのセキュリティ強化

SSH(Secure Shell)は、リモートアクセスや管理を行う際に最も多く使用されるプロトコル ですが、デフォルト設定のまま運用すると攻撃者の標的になりやすい ため、適切な対策が必要です。

ポート変更と鍵認証の設定

SSHのデフォルトポート(22番)は攻撃対象になりやすいため、ポート変更や鍵認証を導入することでセキュリティを強化できます。

  1. SSHポートの変更
    1. 設定ファイルを編集

      vi /etc/ssh/sshd_config

    2. ポート番号を変更(例: 20222)

      Port 20222

    3. 設定を反映

      systemctl restart sshd

  2. SSH鍵認証の設定
    1. 鍵ペアを作成

      ssh-keygen -t rsa -b 4096

    2. 公開鍵をサーバーに登録

      ssh-copy-id -i ~/.ssh/id_rsa.pub user@server

    3. パスワードログインを無効化(/etc/ssh/sshd_config を編集)

      PasswordAuthentication no

    4. 設定を反映

      systemctl restart sshd

fail2ban を活用した攻撃対策

fail2ban は、SSH やその他のサービスへの 不正アクセスを検知し、自動的にIPアドレスをブロックするツール です。このツールはあまり聞き馴染みのないツールな方も多いのではないでしょうか。

fail2banが防げる主なインシデント

  • SSH のブルートフォース攻撃

    短時間に何度もログイン試行を行う攻撃を検知し、IP をブロック。

  • 不正な管理画面ログイン試行

    Apache/Nginx の管理ページや WordPress のログインページなどでの総当たり攻撃を防止。

  • メールサーバー(Postfix, Dovecot)への不正アクセス

    メールアカウントへのパスワード総当たり攻撃を防ぐ。

  • FTP/SSH/Samba などのサービスへの不正接続試行

    設定次第で、さまざまな認証サービスに対する異常な試行を検出し遮断。

  • DoS 攻撃の初期段階のブロック

    短時間で大量のリクエストを送る攻撃を検出し、IP を一時的に禁止。

🔥 簡単に言うと「一定回数以上の不正アクセスを試みたIPを自動でブロックする」ことで、サーバーのセキュリティを強化するツールです! 🚀

  1. fail2ban のインストール

    dnf install -y epel-release
    dnf install -y fail2ban

  2. 設定ファイルを作成

    cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

  3. SSH保護の設定(/etc/fail2ban/jail.local に追加)

    [sshd]
    enabled = true
    bantime = 3600
    findtime = 600
    maxretry = 5

  4. fail2ban の起動と有効化

    systemctl enable --now fail2ban

  5. 現在のブロック状況を確認

    fail2ban-client status sshd

SELinux を使ったセキュリティ管理

SELinux(Security-Enhanced Linux)は、システムのアクセス制御を強化するセキュリティ機能 で、プロセスやユーザーの権限を厳密に制御 できます。

  1. SELinux の状態を確認

    sestatus

  2. SELinux のモード変更
    1. 強制モード(Enforcing)

      setenforce 1

    2. 許可モード(Permissive)

      setenforce 0

  3. 永続的なモード変更(/etc/selinux/config を編集)

    SELINUX=enforcing

  4. ポリシーの適用

    restorecon -Rv /etc/ssh/sshd_config

Linux のネットワークセキュリティを強化するためには、SSH の設定変更、不正アクセス対策、SELinux の活用 などの方法が重要です。

正直な話、過去に私が携わってきた現場はその扱いの面倒くささから、selinuxに関しては100%「disable(無効化)」にして構築する案件が多かったのですが、近年ではセキュリティ意識の高まりや、SELinux の安定性・利便性の向上に伴い、SELinux を有効(enforcing)にして運用するケースが増加しています。

Red Hat などの主要なディストリビューションは、SELinux の無効化を推奨していません。特に、RHEL 9 以降のバージョンでは、SELinux を無効化する手順が変更され、無効化が容易ではなくなっています。

このような背景から、現在では SELinux を有効にした状態でシステムを構築・運用することが推奨されています。無効化するのではなく、permissive モード を活用してログを確認し、必要に応じてポリシーを調整する運用が一般的です。

まとめ

Linuxのネットワーク設定やセキュリティ対策、パフォーマンス最適化について詳しく解説してきました。本記事を通じて、ネットワークの基礎から実践的なチューニング、セキュリティ強化の手法 まで幅広く理解できたはずです。ここでは、記事の総括やよくある質問、参考資料をまとめます。

本記事の総括

Linuxのネットワークを適切に管理し、安定した通信環境を構築するには、以下のポイントを押さえておくことが重要です。

1️⃣ 基本的なネットワーク設定

  1. ネットワークインターフェースの管理
    • ip コマンドや nmcli を使用し、適切にインターフェースを設定する
    • 静的 IP アドレスと DHCP の違いを理解し、適切に設定する
  2. ルーティングと DNS 設定
    • ip route/etc/resolv.conf を利用して適切なネットワークルートを設定する
    • systemd-resolved を活用した DNS の管理

2️⃣ ネットワークのパフォーマンス最適化

  1. TCP/IP スタックの最適化
    • sysctl を利用して TCPウィンドウサイズやバッファサイズを調整 し、高速通信を実現
  2. NIC のチューニング
    • ethtool を活用して 送受信キューサイズの最適化やオフロード設定 を行う

3️⃣ セキュリティ対策

  1. SSH の強化
    • ポート変更と鍵認証の導入 により、不正ログインのリスクを低減
    • fail2ban を使用し、ブルートフォース攻撃を防止
  2. ファイアウォール管理
    • iptablesfirewalld を適切に設定し、不要な通信を遮断
  3. SELinux の活用
    • システムのアクセス制御を厳密にし、脆弱性を防ぐ

よくある質問(FAQ)

  • Q1: Linux でネットワークが繋がらない場合の基本的な確認方法は?
    • ip a

      上記コマンドでネットワークインターフェースの状態を確認
    • ping 8.8.8.8

      上記コマンドで外部ネットワークへの接続をチェック
    • systemctl status NetworkManager

      上記コマンドでネットワークサービスの状態を確認
  • Q2: SSH ポートを変更したら接続できなくなった場合の対処法は?
    • /etc/ssh/sshd_configPort 設定が正しく適用されているか確認
    • firewall-cmd --permanent --add-port=20222/tcp && firewall-cmd --reload

      上記コマンドで新しいポートを許可
    • systemctl restart sshd

      上記コマンドを実行し、設定を適用

参考資料・リンク集


この記事を読んだら、次は 「【Linuxの基礎知識】リソース監視ツールの使い方を徹底解説!」 を読むのがおすすめです!

よく読まれている記事

1

Shellとは? Shellとは、人間の理解できる言葉を機会へ伝えるプログラムです。 Linux環境でコマンドプロンプト画面を開いているとき、常にShellは起動している状態です。 「Shell」とは ...

2

「私たちが日々利用しているスマートフォンやインターネット、そしてスーパーコンピュータやクラウドサービス――これらの多くがLinuxの力で動いていることをご存じですか?無料で使えるだけでなく、高い柔軟性 ...

3

プログラミング言語を習得しようと思った時、必ずと言っていいほど候補として挙げられるのが「Java」というプログラミング言語です。 「Java」は、現在日本で最も使われている言語であり、非常に人気のある ...

4

Shellスクリプト基礎知識(全13記事+2) ├─【Shellの基礎知識】Shellスクリプト入門|初心者が押さえる基本├─【Shellの基礎知識】変数と特殊変数の使い方|初心者向け解説├─【She ...

-Linux の基礎知識