Product SiteDocumentation Site

第 10 章 ネットワークインフラ

10.1. ゲートウェイ
10.2. X.509 certificates
10.2.1. Creating gratis trusted certificates
10.2.2. 公開鍵基盤、easy-rsa
10.3. 仮想プライベートネットワーク
10.3.1. OpenVPN
10.3.2. SSH を使った仮想プライベートネットワーク
10.3.3. IPsec
10.3.4. PPTP
10.4. Quality of Service
10.4.1. 原理とメカニズム
10.4.2. 設定と実践
10.5. 動的ルーティング
10.6. IPv6
10.6.1. トンネル
10.7. ドメインネームサーバ (DNS)
10.7.1. DNS software
10.7.2. Configuring bind
10.8. DHCP
10.8.1. 設定
10.8.2. DHCP と DNS
10.9. ネットワーク診断ツール
10.9.1. ローカルの診断、netstat
10.9.2. リモートの診断、nmap
10.9.3. スニファ、tcpdumpwireshark
Linux はネットワークに関する Unix の財産すべてを受け継ぎ、Debian はネットワークを作成および管理する完全なツールセットを提供します。この章では、これらのツールを説明します。

10.1. ゲートウェイ

ゲートウェイは複数のネットワークを連結するシステムです。ゲートウェイという用語は外部 IP アドレスに向かう経路に出るために必須のローカルネットワークの「出口」を意味する場合が多いです。ゲートウェイは相互に連結する各ネットワークに接続されており、複数のインターフェース間で IP パケットを相互に伝送するためのルータとして振る舞います。
ローカルネットワークがプライベートアドレス (インターネットにルーティングされないアドレス) 範囲を使う場合、ゲートウェイはアドレスマスカレードを実行する必要があります。アドレスマスカレードを使うことで、ローカルネットワーク上のマシンが外部と通信することが可能になります。マスカレード動作とはネットワークレベルのプロキシ動作のようなものです。すなわち、内部のマシンからの外部宛接続はゲートウェイ自身からの接続に置き替えられます (なぜなら、ゲートウェイは外部にルーティングできるアドレスを持っているからです)。マスカレード接続を通過するデータは外部に送信され、応答として戻ってくるデータはマスカレード接続を通過して内部のマシンに送信されます。ゲートウェイはこの目的に専用の TCP ポート範囲を使います。この範囲は通常とても大きな番号 (60000 番より大きい番号) です。内部マシンからの接続はこれらの予約されたポート番号の 1 つから送信された接続として外部に送信されます。
ゲートウェイでは 2 種類のネットワークアドレス変換 (略して NAT) が実行されます。1 種類目は Destination NAT (DNAT) で、(通常は) 到着した接続の宛先 IP アドレス (および TCP や UDP ポート) を書き換える手法です。接続追跡メカニズムによって、通信の継続性を保証するために同じ接続でそれ以降に使われるパケットの宛先が書き換えられます。NAT の 2 種類目は Source NAT (SNAT) で、マスカレードは SNAT の特別な場合です。SNAT は (通常は) 出て行く接続のソース IP アドレス (および TCP や UDP ポート) を書き換えます。DNAT に関して言えば、出て行く接続の全パケットが接続追跡メカニズムによって適切に取り扱われます。NAT は IPv4 と IPv4 の制限されたアドレス空間だけに関連します。一方で IPv6 では、アドレス空間が広くなったことにより、すべての「内部」アドレスは直接インターネットにルーティングできるようになるため、NAT の有用性が減ります (これは内部マシンにアクセスできるようになることを意味しているのではありません。なぜなら、中間ファイアウォールがトラフィックをフィルタするからです)。
理論はここまでにして、具体的な例を説明します。Debian システムをゲートウェイとして機能させるには、以下に示す通り /proc/ 仮想ファイルシステムを使って、Linux カーネルの適切なオプションを有効化するだけです。
# echo 1 > /proc/sys/net/ipv4/conf/default/forwarding
このオプションを起動時に自動的に有効化するには、/etc/sysctl.confnet.ipv4.conf.default.forwarding オプションを 1 に設定してください。

例 10.1 /etc/sysctl.conf ファイル

net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.tcp_syncookies = 1
IPv6 に対して同様の効果を与えるには、IPv4 に対して手作業で行ったコマンドの ipv4 を単純に ipv6 へ置換して実行するか、/etc/sysctl.conf 中の net.ipv6.conf.all.forwarding オプションを 1 に設定してください。
IPv4 マスカレードを設定するには少し複雑な作業が必要です。すなわち netfilter ファイアウォールを設定する必要があります。
同様に、(IPv4 で) NAT を使うには netfilter の設定が必要です。netfilter の基本目的はパケットフィルタリングですから、詳細は第 14 章: 「セキュリティに書かれています (第 14.2 節「ファイアウォールとパケットフィルタリング」を参照してください)。