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.conf | DNSサーバーの設定 |
ネットワークインターフェースの設定
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-scripts
や NetworkManager
を利用することが一般的ですが、Ubuntuでは netplan
への移行が進んでいます。適切な設定方法を理解し、Linuxのネットワークを正しく管理しましょう。
Linuxのネットワーク設定方法
RHEL系のLinux環境では、ネットワークの設定を適切に管理することが、サーバーの安定運用に直結します。RHEL系では、ネットワーク設定の方法として nmcli
や nmtui
を利用するケースが増えており、従来の ifconfig
や route
コマンドから ip
コマンドへの移行も進んでいます。また、ネットワークの動的管理を行う systemd-networkd
や systemd-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
を中心にネットワーク管理を行い、ip
や nmcli
などのツールを活用して設定を行います。静的IPアドレスとDHCPの違いを理解し、ルーティングやDNSの設定を適切に管理することで、安定したネットワーク環境を構築できます。本記事で紹介した方法を活用し、RHEL系のネットワーク管理スキルを向上させましょう。
Linuxのネットワーク診断とトラブルシューティング
Linuxを運用する上で、ネットワークトラブルは避けて通れません。適切な診断ツールを活用し、問題の原因を素早く特定することで、システムの安定性を維持することができます。本章では、ネットワークの診断に役立つ基本ツールの紹介と、よくあるトラブルの原因と解決策について詳しく解説します。
ネットワーク診断に使える基本ツール
Linuxにはネットワークトラブルを診断するための多くのコマンドが用意されています。これらを適切に使い分けることで、ネットワークの状況を素早く把握し、問題の原因を突き止めることができます。
疎通確認や名前解決が正しく動作しているかをチェック
- ping: ネットワークの疎通確認を行う。
ping 8.8.8.8
- traceroute: 通信経路を確認し、どこでパケットが遅延・ロスしているか調査する。
traceroute 8.8.8.8
- nslookup: DNSの解決状況を確認する。
nslookup google.com
- dig: より詳細なDNS情報を取得する。
dig google.com
システム内部の通信状態を詳しく調査
- netstat: 現在のネットワーク接続やリスニングポートを確認する。
netstat -tulnp
- ss: netstat の代替コマンドで、より高速に情報を取得できる。
ss -tulnp
- tcpdump: ネットワークパケットのキャプチャを行い、通信の詳細を解析する。
tcpdump -i eth0 port 80
- nmap: ネットワークスキャンを行い、開放ポートやサービスを確認する。
nmap -sS 192.168.1.1/24
よくあるネットワークトラブルと解決策
ネットワークトラブルはさまざまな原因によって発生しますが、適切な診断と対応を行うことで迅速に復旧できます。ここでは、Linuxでよく発生するネットワークトラブルとその解決策を解説します。
ネットワーク接続ができない場合
ネットワーク接続ができない原因
- ケーブルが抜けている、または無線LANが切断されている
- ネットワークインターフェースが有効になっていない
- IPアドレスが正しく設定されていない
- ]ルーティングの設定に問題がある
対処法
- インターフェースの状態を確認
ip a
- インターフェースを有効化
ip link set eth0 up
- DHCPでIPを再取得
dhclient eth0
- ネットワークのルートを確認
ip route show
DNSが機能しない場合
DNSが機能しない原因
- /etc/resolv.conf の設定が間違っている
- DNSサーバーがダウンしている
- systemd-resolved の設定に問題がある
対処法
- 現在のDNS設定を確認
cat /etc/resolv.conf
- DNS設定でGoogle Public DNSを指定する
echo "nameserver 8.8.8.8" > /etc/resolv.conf
- systemd-resolved のステータスを確認
systemd-resolve --status
ルーティングエラーの対処
ルーティングエラーの原因
- デフォルトゲートウェイが設定されていない
- 静的ルートが誤って設定されている
- ルータ側の設定に問題がある
対処法
- デフォルトゲートウェイの設定を確認
ip route show
- ゲートウェイを手動で追加
ip route add default via 192.168.1.1
- 設定を永続化(RHEL系)
GATEWAY=192.168.1.1
journalctl / dmesg を使ったログ解析
ネットワークトラブルの原因が特定できない場合は、システムログを確認することで問題の手がかりを得ることができます。
- journalctl で systemd 管理下のログを確認
journalctl -xe -u network
- dmesg でカーネルログを確認し、ネットワークデバイスのエラーを特定
dmesg | grep eth0
本章では、Linuxのネットワーク診断に役立つツールと、よくあるトラブルの解決策について解説しました。ping
や traceroute
などの基本ツールを活用し、問題の原因を特定した上で、適切な対応を行うことが重要です。ネットワークトラブルは発生するものですが、適切な知識を身につけることで、迅速に対処できるようになります。
Linuxのファイアウォール設定
Linuxのファイアウォールは、システムのセキュリティを強化するために不可欠な要素です。適切なルールを設定することで、不正なアクセスをブロックし、安全な通信のみを許可できます。Linuxでは主に iptables
、firewalld
、ufw
などのファイアウォール管理ツールが利用されます。本章では、それぞれのツールを使用したパケットフィルタリングやポート制御、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系では OpenVPN や WireGuard などのツールを利用してVPN接続を構築できます。
OpenVPN の設定
OpenVPN は、広く利用されているオープンソースのVPNソフトウェア で、高いセキュリティと柔軟な設定が可能です。
- OpenVPN のインストール
yum install -y epel-release
yum install -y openvpn easy-rsa - サーバー側の設定
- 設定ファイルを作成
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
- 設定ファイルを作成
- クライアントの設定
- せ定ファイルを編集
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)との違い
項目 | WireGuard | OpenVPN / IPsec |
---|---|---|
速度 | 非常に高速(カーネルレベルで動作) | 比較的遅い(ユーザースペースで動作) |
セキュリティ | 最新の暗号技術(ChaCha20, Poly1305) | AES, SHA-1 など(古い暗号方式も対応) |
設定の簡潔さ | シンプルな設定(数行のコンフィグで動作) | 設定が複雑(証明書・鍵管理が必要) |
接続確立の速さ | ミリ秒単位で確立可能 | OpenVPN/IPsec は遅い(数秒〜数十秒) |
安定性 | モバイル環境でも途切れにくい | IP変更時に再接続が必要 |
- WireGuard のインストール
dnf install -y epel-release elrepo-release
dnf install -y kmod-wireguard wireguard-tools - サーバー側の設定
- 設定ファイルを作成
mkdir /etc/wireguard
touch /etc/wireguard/wg0.conf - 秘密鍵と公開鍵の生成
wg genkey | tee /etc/wireguard/privatekey | wg pubkey > /etc/wireguard/publickey
- 設定ファイルの編集
以下の内容を
/etc/wireguard/wg0.conf
に記述[Interface]
PrivateKey = (生成された秘密鍵)
Address = 10.0.0.1/24
ListenPort = 51820
[Peer]
PublicKey = (クライアントの公開鍵)
AllowedIPs = 10.0.0.2/32 - サービスの起動
systemctl enable --now wg-quick@wg0
- 設定ファイルを作成
- クライアントの設定
- 設定ファイルを作成
以下の内容を
/etc/wireguard/wg-client.conf
に記述[Interface]
PrivateKey = (クライアントの秘密鍵)
Address = 10.0.0.2/24
[Peer]
PublicKey = (サーバーの公開鍵)
Endpoint = サーバーのIP:51820
AllowedIPs = 0.0.0.0/0 - VPN接続を確立
wg-quick up wg-client
- 設定ファイルを作成
VPN接続時のルーティング設定
VPNを利用すると、特定のトラフィックをVPN経由にするルーティング設定が必要になる場合があります。
- すべての通信をVPN経由にする
ip route add default via 10.0.0.1 dev wg0
- 特定のサブネットのみVPN経由にする
ip route add 192.168.100.0/24 via 10.0.0.1 dev wg0
- ルーティング設定を永続化
RHEL では /etc/sysconfig/network-scripts/route-eth0 にルートを記述することで永続化可能です。
プロキシサーバーの設定
プロキシサーバーは、内部ネットワークと外部ネットワークの間に配置し、通信を制御する仕組み です。RHEL系では、Squid を利用したプロキシサーバーの構築や、proxychains を用いたプロキシ経由の通信が可能です。
Squid を使ったプロキシサーバー
Squid は、オープンソースのHTTPプロキシサーバー で、キャッシュ機能やアクセス制御を提供します。
- Squid のインストール
dnf install -y squid
- 設定ファイルの編集
以下の内容を/etc/squid/squid.conf
に記述http_port 3128
acl localnet src 192.168.1.0/24
http_access allow localnet
http_access deny all - Squid の起動
systemctl enable --now squid
- クライアント側の環境変数設定
プロキシを使用する環境変数を設定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 / HTTPS | SSH, FTP, SOCKS5, RDP, VPN など |
プロキシの目的 | Web フィルタリング、負荷分散、キャッシュ | ネットワーク制限の回避、匿名アクセス、ペネトレーションテスト |
基本的に proxychains は、 クライアントサーバ型のアプリケーションで使用されることが多い です。ようは、クラサバ環境用のプロキシと思えばいいと思います。
- ProxyChains のインストール
dnf install -y proxychains-ng
- 設定ファイルの編集
以下の内容を
/etc/proxychains.conf
に記述strict_chain
proxy_dns
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
socks5 192.168.1.1 1080 - プロキシ経由で通信
proxychains4 curl http://example.com
- 特定のアプリケーションをプロキシ経由で実行
proxychains4 ssh user@example.com
- 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 など)がシステム要件として推奨するカーネルパラメータの値を指定していることが多い ため、適切な設定を確認せずに変更すると、システムの動作に悪影響を及ぼす可能性があります。推奨値を理解していない場合は、安易に設定を変更せず、公式ドキュメントや担当者と確認することを推奨します。
ネットワークバッファサイズの調整
ネットワークバッファサイズを適切に調整することで、大量のデータ通信時の パケットロスを低減 し、スループットを向上させることができます。
- 現在の設定を確認
sysctl -a | grep net.core
- ネットワークバッファサイズの変更
以下の設定を
/etc/sysctl.conf
に追加し、バッファサイズを拡張します。net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.rmem_default = 8388608
net.core.wmem_default = 8388608 - 設定を反映
sysctl -p
チューニングが必要な環境
- データベースサーバー(MySQL / PostgreSQL など)
大量のクエリ処理時にネットワーク遅延を抑え、クライアント ⇄ DB 間の同時接続数の増加に対応する。
- ストレージ / ファイル転送サーバー(NFS / Samba / FTP)
大容量データの送受信でボトルネックにならないよう、バッファサイズや TCP ウィンドウサイズを調整。
- 動画・ストリーミングサーバー(YouTube, Twitch, CDN など)
TCP バッファを最適化し、高速ストリーミングを実現。
- Web サーバー(Apache / Nginx / HAProxy)
同時接続数やキープアライブ接続の処理効率を向上。
TCPウィンドウサイズの最適化
TCPウィンドウサイズは、送受信時に 一度に送信できるデータ量を決定するパラメータ です。適切に設定することで、長距離通信や大容量データ転送のパフォーマンス向上 が期待できます。
- 現在の設定を確認
sysctl -a | grep tcp
- 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 - 設定を反映
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番)は攻撃対象になりやすいため、ポート変更や鍵認証を導入することでセキュリティを強化できます。
- SSHポートの変更
- 設定ファイルを編集
vi /etc/ssh/sshd_config
- ポート番号を変更(例: 20222)
Port 20222
- 設定を反映
systemctl restart sshd
- 設定ファイルを編集
- SSH鍵認証の設定
- 鍵ペアを作成
ssh-keygen -t rsa -b 4096
- 公開鍵をサーバーに登録
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
- パスワードログインを無効化(
/etc/ssh/sshd_config
を編集)PasswordAuthentication no
- 設定を反映
systemctl restart sshd
- 鍵ペアを作成
fail2ban を活用した攻撃対策
fail2ban は、SSH やその他のサービスへの 不正アクセスを検知し、自動的にIPアドレスをブロックするツール です。このツールはあまり聞き馴染みのないツールな方も多いのではないでしょうか。
fail2banが防げる主なインシデント
- SSH のブルートフォース攻撃
短時間に何度もログイン試行を行う攻撃を検知し、IP をブロック。
- 不正な管理画面ログイン試行
Apache/Nginx の管理ページや WordPress のログインページなどでの総当たり攻撃を防止。
- メールサーバー(Postfix, Dovecot)への不正アクセス
メールアカウントへのパスワード総当たり攻撃を防ぐ。
- FTP/SSH/Samba などのサービスへの不正接続試行
設定次第で、さまざまな認証サービスに対する異常な試行を検出し遮断。
- DoS 攻撃の初期段階のブロック
短時間で大量のリクエストを送る攻撃を検出し、IP を一時的に禁止。
🔥 簡単に言うと「一定回数以上の不正アクセスを試みたIPを自動でブロックする」ことで、サーバーのセキュリティを強化するツールです! 🚀
- fail2ban のインストール
dnf install -y epel-release
dnf install -y fail2ban - 設定ファイルを作成
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- SSH保護の設定(
/etc/fail2ban/jail.local
に追加)[sshd]
enabled = true
bantime = 3600
findtime = 600
maxretry = 5 - fail2ban の起動と有効化
systemctl enable --now fail2ban
- 現在のブロック状況を確認
fail2ban-client status sshd
SELinux を使ったセキュリティ管理
SELinux(Security-Enhanced Linux)は、システムのアクセス制御を強化するセキュリティ機能 で、プロセスやユーザーの権限を厳密に制御 できます。
- SELinux の状態を確認
sestatus
- SELinux のモード変更
- 強制モード(Enforcing)
setenforce 1
- 許可モード(Permissive)
setenforce 0
- 強制モード(Enforcing)
- 永続的なモード変更(
/etc/selinux/config
を編集)SELINUX=enforcing
- ポリシーの適用
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️⃣ 基本的なネットワーク設定
- ネットワークインターフェースの管理
ip
コマンドやnmcli
を使用し、適切にインターフェースを設定する- 静的 IP アドレスと DHCP の違いを理解し、適切に設定する
- ルーティングと DNS 設定
ip route
や/etc/resolv.conf
を利用して適切なネットワークルートを設定するsystemd-resolved
を活用した DNS の管理
2️⃣ ネットワークのパフォーマンス最適化
- TCP/IP スタックの最適化
sysctl
を利用して TCPウィンドウサイズやバッファサイズを調整 し、高速通信を実現
- NIC のチューニング
ethtool
を活用して 送受信キューサイズの最適化やオフロード設定 を行う
3️⃣ セキュリティ対策
- SSH の強化
- ポート変更と鍵認証の導入 により、不正ログインのリスクを低減
fail2ban
を使用し、ブルートフォース攻撃を防止
- ファイアウォール管理
iptables
やfirewalld
を適切に設定し、不要な通信を遮断
- SELinux の活用
- システムのアクセス制御を厳密にし、脆弱性を防ぐ
よくある質問(FAQ)
- Q1: Linux でネットワークが繋がらない場合の基本的な確認方法は?
ip a
上記コマンドでネットワークインターフェースの状態を確認ping 8.8.8.8
上記コマンドで外部ネットワークへの接続をチェックsystemctl status NetworkManager
上記コマンドでネットワークサービスの状態を確認
- Q2: SSH ポートを変更したら接続できなくなった場合の対処法は?
/etc/ssh/sshd_config
の Port 設定が正しく適用されているか確認firewall-cmd --permanent --add-port=20222/tcp && firewall-cmd --reload
上記コマンドで新しいポートを許可systemctl restart sshd
上記コマンドを実行し、設定を適用
参考資料・リンク集
- 公式ドキュメント
- 関連ツールの公式ページ
この記事を読んだら、次は 「【Linuxの基礎知識】リソース監視ツールの使い方を徹底解説!」 を読むのがおすすめです!