第5章 ネットワークの設定

# 第5章 ネットワークの設定

| ヒント
現代的な Debian に特化したネットワーク設定のガイドは The Debian Administrator's Handbook — Configuring the Network を参照下さい。

| ヒント
systemd の下では、networkd がネットワーク管理に使えます。systemd-networkd(8)y> を参照下さい。

## 5.1. 基本的ネットワークインフラ

現代的な Debian システムの基本的ネットワークインフラをレビューします。

表5.1 GUI のネットワーク設定ツール

パッケージ | ポプコン | サイズ | タイプ | 説明
--- | --- | --- | --- | ---
`network-manager` | V:422, I:469 | 7021 | 設定::NM | NetworkManager (デーモン): ネットワークを自動管理
`network-manager-gnome` | V:39, I:156 | 18 | 設定::NM | NetworkManager (GNOME フロントエンド)
`netplan.io` | V:1.4, I:8.6 | 340 | 設定::NM+networkd | Netplan (生成器): NetworkManager と systemd-networkd バックエンド用の統一的で宣言的なインターフェース
`ifupdown` | V:640, I:972 | 201 | 設定::ifupdown | ネットワークを接続したり切断したりする標準化されたツール (Debian 特定)
`pppoeconf` | V:0.2, I:4.0 | 176 | 設定::ヘルパー | PPPoE コネクションの設定ヘルパー
`wpasupplicant` | V:411, I:513 | 3896 | 設定::ヘルパー | WPA と WPA2 (IEEE 802.11i) のためのクライアントサポート
`wpagui` | V:0.2, I:1.4 | 779 | 設定::ヘルパー | wpa_supplicant の Qt GUI クライアント
`wireless-tools` | V:190, I:260 | 232 | 設定::ヘルパー | Linux のワイヤレス拡張を操作するツール
`iw` | V:38, I:472 | 332 | 設定::ヘルパー | Linux のワイヤレスデバイスを設定するツール
`iproute2` | V:775, I:987 | 4123 | 設定::iproute2 | iproute2、IPv6 や他の高度なネットワーク設定: ip(8) や tc(8) 等
`iptables` | V:382, I:642 | 2408 | 設定::Netfilter | パケットフィルターと NAT のための管理ツール (Netfilter)
`nftables` | V:254, I:872 | 189 | 設定::Netfilter | パケットフィルターと NAT のための管理ツール (Netfilter) ({ip,ip6,arp,eb}tables の後継)
`iputils-ping` | V:198, I:998 | 188 | テスト | ホスト名か IP アドレスによってリモートホストのネットワークからの到達性をテスト (iproute2)
`iputils-arping` | V:2, I:18 | 53 | テスト | ARP アドレスによって特定されるリモートホストのネットワークからの到達性をテスト
`iputils-tracepath` | V:2, I:21 | 50 | テスト | リモートホストへのネットワークパスを追跡
`ethtool` | V:97, I:254 | 1093 | テスト | Ethernet デバイス設定の表示と変更
`mtr-tiny` | V:4, I:39 | 182 | テスト::低レベル | リモートホストへのネットワークパスを追跡するツール (curses)
`mtr` | V:4, I:41 | 231 | テスト::低レベル | リモートホストへのネットワークパスを追跡するツール (curses と GTK)
`gnome-nettool` | V:0.5, I:9.1 | 2480 | テスト::低レベル | 共通のネットワーク情報操作のためのツール (GNOME)
`nmap` | V:25, I:186 | 4759 | テスト::低レベル | ネットワークマッパー / ポートスキャナー (Nmap、コンソール)
`tcpdump` | V:19, I:177 | 1346 | テスト::低レベル | ネットワークトラフィックアナライザー (Tcpdump、コンソール)
`wireshark` | V:4, I:39 | 17068 | テスト::低レベル | ネットワークトラフィックアナライザー (Wireshark、GTK)
`tshark` | V:2, I:24 | 433 | テスト::低レベル | ネットワークトラフィックアナライザー (コンソール)
`tcptrace` | V:0.2, I:1.7 | 407 | テスト::低レベル | `tcpdump` の出力から接続状況のまとめを作成
`dnsutils` | V:5, I:156 | 23 | テスト::低レベル | BIND によって提供されるネットワーククライアント: nslookup(8) と nsupdate(8) と dig(8)
`dlint` | V:0.1, I:2.1 | 52 | テスト::低レベル | ネームサーバーの閲覧で DNS のゾーン情報をチェック
`dnstracer` | V:0.1, I:1.1 | 63 | テスト::低レベル | DNS サーバーをその源流まで追跡

### 5.1.1. ホスト名の解決

ホスト名の解決もまた、現在 NSS (ネームサービススイッチ、Name Service Switch) メカニズムによってサポートされています。この解決の流れは次です。

1. "`hosts: files dns`" のようなスタンザのある "`/etc/nsswitch.conf`" ファイルがホスト名の解消の順序を規定します。(これは、"`/etc/host.conf`" ファイル中の "`order`" スタンザの機能を置換します。)

2. `files` メソッドが最初に呼び出されます。ホスト名が "`/etc/hosts`" ファイルに見つかると、それに対応する全ての有効アドレスを返し終了します。("`/etc/host.conf`" ファイルは "`multi on`" を含みます。)

3. `dns` メソッドが発動されます。"`/etc/resolv.conf`" ファイルで識別されるインターネットドメイン名システム (DNS) への問い合わせでホスト名が見つかれば、それに関する全ての有効アドレスを返します。

典型的なワークステーションでは、ホスト名は例えば "host_name" と設定され、オプショナルなドメイン名は空文字列に設定されてインストールされているかもしてません。その場合、"`/etc/hosts`" は以下のようになります。

    127.0.0.1 localhost
    127.0.1.1 host_name

    # The following lines are desirable for IPv6 capable hosts
    ::1     localhost ip6-localhost ip6-loopback
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters

各行は IP アドレス で始まり、関連する ホスト名がそれに続きます。

本例の2行目の IP アドレス `127.0.1.1` は他の Unix 系システムでは見かけないかもしれません。bug #719621 に記録されているように、Debian インストーラー は恒久的 IP アドレスのないシステムのために一部ソフトウェアー (GNOME等) のための回避策としてこの項目を作成します。

host_name は、"`/etc/hostname`" の中に定義されたホスト名と一致します(「ホスト名」参照)。

恒久的 IP アドレスを持つシステムでは `127.0.1.1` の代えてその恒久的 IP アドレスがここにあるべきです。

恒久的 IP アドレスと Domain 名システム (DNS)が提供する完全修飾ドメイン名 (FQDN) を持つシステムでは、その標準的な host_name(ホスト名).domain_name(ドメイン名) が host_name(ホスト名) のみに代えて使われるべきです。

`resolvconf` パッケージがインストールされなかったら、"`/etc/resolv.conf`" は静的なファイルです。インストールされると、それはシンボリックリンクになります。いずれにせよ、解決機構を初期化する情報を含んでいます。もし DNS が IP="`192.168.11.1`" に見つかるなら、それは以下の内容です。

    nameserver 192.168.11.1

`resolvconf` パッケージはこの "`/etc/resolv.conf`" をシンボリックリンクにし、フックスクリプトで自動的にその内容を管理します。

典型的 adhoc な LAN 環境にある PC ワークステーションの場合、基本的な `files` や `dns` 法に加えて Multicast DNS (mDNS) 経由でホスト名を解決する事ができます。

- Avahi は Debian で Multicast DNS サービスの探索の枠組みを提供します。

- Apple Bonjour / Apple Rendezvous と同等です。

- `libnss-mdns` プラグインパッケージが GNU C ライブラリー (glibc) の GNU Name Service Switch (NSS) 機能に mDNS 経由のホスト名解決を提供します。

- "`/etc/nsswitch.conf`" ファイルには "`hosts: files mdns4_minimal [NOTFOUND=return] dns`" のようなスタンザがあるべきです(他の設定は`/usr/share/doc/libnss-mdns/README.Debian`を参照下さい)。

- ".local" で終わる 擬似-top-level domain が末尾についたホスト名は、IPv4 アドレス "`224.0.0.251`" か IPv6 アドレス "`FF02::FB`" から、マルチキャスト UDP パケット中の mDNS クエリーメッセージ送ることで解決されます。

| 注記
ドメイン名システムにおける ジェネリックトップレベルドメイン (gTLD) の拡張が進行中です。LAN内のみで使うドメイン名を選ぶ際に名前衝突に注意が必要です。

| 注記
`systemd-resolved` と合わせての `libnss-resolve` や、`libnss-myhostname` や、`libnss-mymachine` のようなパッケージを"`/etc/nsswitch.conf`" ファイル中の "`hosts`" 行上に対応するリスト項目を挙げて使用すると、上記で述べた伝統的なネットワーク設定はオーバーライドされるかもしれません。詳しくは、nss-resolve(8) や、systemd-resolved(8) や、nss-myhostname(8) や、nss-mymachines(8) を参照下さい。

### 5.1.2. ネットワークインターフェース名

systemd は "`enp0s25`" のような "予測可能なネットワークインターフェース名" を用います。

### 5.1.3. LAN のためのネットワークアドレス範囲

rfc1918 によってローカルエリアネットワーク (LAN) での使用に予約されている各クラス毎の IPv4 32ビットアドレス範囲を確認します。これらのアドレスは本来のインターネット上のアドレスとかち合う事が無いことが保証されています。

| 注記
コロンのついた IP アドレスは IPv6 アドレスです。たとえば "`::1`" は `localhost` です。

表5.2 ネットワークアドレス範囲のリスト

クラス | ネットワークアドレス | ネットマスク | ネットマスク / ビット | サブネットの数
--- | --- | --- | --- | ---
A | 10.x.x.x | 255.0.0.0 | /8 | 1
B | 172.16.x.x — 172.31.x.x | 255.255.0.0 | /16 | 16
C | 192.168.0.x — 192.168.255.x | 255.255.255.0 | /24 | 256

| 注記
これらのアドレス内の1つがホストに付与されている場合、そのホストはインターネットに直接アクセスせず、各サービスのプロキシとなるかネットワークアドレス変換 (NAT) をするゲートウエーを通してアクセスしなければいけません。ブロードバンドルーターは消費者 LAN 環境のために通常 NAT を行います。

### 5.1.4. ネットワークデバイスサポート

Debian システムによってほとんどのハードウエアーデバイスはサポートされていますが、一部のネットワークデバイスはそのサポートのために DFSG non-free のファームウエアーが必要です。「ハードウエアードライバーとファームウエアー」を参照下さい。

## 5.2. デスクトップのための現代的なネットワーク設定

`systemd`下の現代的な Debian デスクトップ環境では、ネットワークインターフェースは、`lo` が "`networking.service`" で、他のインターフェースが "`NetworkManager.service`" で典型的には初期化されます。

Debian では、NetworkManager (NM) (network-manager と関連パッケージ) 等の管理デーモン経由でネットワーク接続の管理ができます。

- それらは洒落た GUI やコマンドラインのユーザーインターフェースが同梱されています。

- それらにはバックエンドシステムとして、自前のデーモンが同梱されています。

- それらによりあなたのシステムをインターネットへ容易に接続できます。

- それらによりインターネットへの有線や無線のネットワークの管理が容易にできます。

- それらにより旧来の "`ifupdown`" パッケージと独立にネットワークを設定できます。

| 注記
サーバーにはこの様な自動ネットワーク設定を使わないで下さい。これらはラップトップ上のモービルデスクトップを主対象としています。

これらの現代的なネットワーク設定ツールは旧来の "`ifupdown`" パッケージやその "`/etc/network/interfaces`" 設定ファイルとの競合を避けるように適正に設定する必要があります。

### 5.2.1. GUI のネットワーク設定ツール

Debian における NM の公式のドキュメンテーションは "`/usr/share/doc/network-manager/README.Debian`" にあります。

デスクトップのための現代的ネットワーク設定の要点は以下です。

1. 以下のようにして、例えば `foo` というデスクトップユーザーを "`netdev`" グループに属するようにします。(GNOME や KDE のような現代的デスクトップ環境の下では D-bus 経由でそれを自動的にするのも一つの方法です。)

       $ sudo usermod -a -G netdev foo

2. "`/etc/network/interfaces`" の設定を以下のようにできるだけ簡単にします。

       auto lo
       iface lo inet loopback

3. 以下のようにして NM を再起動します。

       $ sudo systemctl restart NetworkManager

4. GUI 経由でネットワークを設定します。

| 注記
`ifupdown` との干渉を避けるために、NM は "`/etc/network/interfaces`" にリストされてないインターフェースのみを管理します。

| ヒント
NM のネットワーク設定能力を拡張したい場合には、`network-manager-openconnect`、`network-manager-openvpn-gnome`、`network-manager-pptp-gnome`、`mobile-broadband-provider-info`、`gnome-bluetooth` 等の適当なプラグインモジュールや補足パッケージを探して下さい。

## 5.3. GUI無しの現代的なネットワーク設定

上記とは異なり、systemd の下では、ネットワークは `/etc/systemd/network/` を使って設定されているかもしれません。systemd-resolved(8) や resolved.conf(5) や systemd-networkd(8) を参照下さい。

これによりGUI無しの現代的なネットワーク設定ができます。

DHCP クライアントの設定は "`/etc/systemd/network/dhcp.network`" を作成することで設定できます。例えば:

    [Match]
    Name=en*

    [Network]
    DHCP=yes

静的ネットワーク設定は "`/etc/systemd/network/static.network`" を作成することで設定できます。例えば:

    [Match]
    Name=en*

    [Network]
    Address=192.168.0.15/24
    Gateway=192.168.0.1

## 5.4. クラウドのための現代的なネットワーク設定

クラウドのための現代的なネットワーク設定は `cloud-init` と `netplan.io` パッケージを使っているかもしれません (「クラウドシステムの初期化」を参照下さい)。

`netplan.io` パッケージは ネットワーク設定バックエンドとして `systemd-networkd` と `NetworkManager` をサポートし、宣言的な YAML データーを使ったネットワーク設定を可能にします。 YAMLを変更する時は:

- "`netplan generate`" コマンドを実行して、YAMLからすべての必要なバックエンド設定を生成します。

- "`netplan apply`" コマンドを実行して、生成される設定をバックエンドに適用します。

"Netplan ドキュメンテーション"とnetplan(5) と netplan-generate(8) と netplan-apply(8) を参照下さい。

更に、`cloud-init` がどのようにして`netplan.io` の設定を代替データーソースを使って一体化するのかは "Cloud-init ドキュメンテーション" (特に "設定ソース"と "Netplan パススルー") を参照下さい。

### 5.4.1. クラウドのための現代的なネットワーク設定

DHCP クライアントの設定はデーターソースファイル "`/etc/systemd/network/dhcp.network`" を作成することで設定できます:

    network:
      version: 2
      ethernets:
        all-en:
          match:
            name: "en*"
          dhcp4: true
          dhcp6: true

### 5.4.2. クラウドのための静的IPを使う現代的なネットワーク設定

静的ネットワーク設定はデーターソースファイル "`/etc/systemd/network/static.network`" を作成することで設定できます:

    network:
      version: 2
      ethernets:
        eth0:
          addresses:
            - 192.168.0.15/24
          routes:
            - to: default
              via: 192.168.0.1

### 5.4.3. クラウドのための Network Manager を使う現代的なネットワーク設定

Network Manager インフラを用いるネットワーククライアントの設定は、データーソースファイル "`/etc/netplan/00-network-manager.yaml`" を作成することで設定できます:

    network:
      version: 2
      renderer: NetworkManager

## 5.5. 低水準ネットワーク設定

Linux における低水準のネットワークを設定するには iproute2 プログラム (ip(8)、…) を用います。

### 5.5.1. Iproute2 コマンド

Iproute2 コマンドは低水準ネットワーク設定の完全な機能を提供します。旧式の net-tools コマンドと新しい iproute2 コマンド等との翻訳表を次に示します。

表5.3 旧式の `net-tools` コマンドと新しい `iproute2` コマンド等との翻訳表

旧式の net-tools | 新しい iproute2 等 | 操作
--- | --- | ---
ifconfig(8) | `ip addr` | デバイスのプロトコル (IP または IPv6) アドレス
route(8) | `ip route` | ルーティングテーブル
arp(8) | `ip neigh` | ARP または NDISC キャッシュ項目
`ipmaddr` | `ip maddr` | マルチキャストアドレス
`iptunnel` | `ip tunnel` | IP 経由トンネル
nameif(8) | ifrename(8) | MAC アドレスに基づきネットワークインターフェースを命名
mii-tool(8) | ethtool(8) | イーサーネットデバイスの設定

ip(8) とLinux Advanced Routing & Traffic Controlを参照下さい。

### 5.5.2. 安全な低レベルネットワーク操作

以下の低レベルネットワークコマンドは、ネットワーク設定を変更しないので安全に使えます。

表5.4 低レベルネットワークコマンドのリスト

コマンド | 説明
--- | ---
`ip addr show` | アクティブなインターフェースのリンクとアドレスの状態を表示
`route -n` | 数字を使ったアドレスで全てのルーティングテーブルを表示
`ip route show` | 数字を使ったアドレスで全てのルーティングテーブルを表示
`arp` | ARP キャッシュテーブルの現状の内容を表示
`ip neigh` | ARP キャッシュテーブルの現状の内容を表示
`plog` | ppp デーモンのログを表示
`ping yahoo.com` | "`yahoo.com`" までのインターネット接続の確認
`whois yahoo.com` | ドメインデーターベースに "`yahoo.com`" を誰が登録したかを確認
`traceroute yahoo.com` | "`yahoo.com`" までのインターネット接続の追跡
`tracepath yahoo.com` | "`yahoo.com`" までのインターネット接続の追跡
`mtr yahoo.com` | "`yahoo.com`" までのインターネット接続の追跡 (繰り返し)
`dig [@dns-server.com] example.com [{a|mx|any}]` | "`example.com`" のDNS レコードを "`dns-server.com`" で"`a`" か "`mx`" か "`any`" かのレコードに関して確認します。
`iptables -L -n` | パケットフィルターの確認
`ss -a` | オープンポートの発見
`ss -l` | 聴取中のポートの発見
`ss -l -t -n` | 聴取中の TCP ポートの発見 (数字)
`dlint example.com` | "`examle.com`" の DNS ゾーン情報を確認

| ヒント
これらの低レベルネットワーク設定ツールは "`/usr/sbin/`" 中にあります。"`/usr/sbin/ifconfig`" 等のような完全コマンドパスを使うか、 "`~/.bashrc`" 中の "`$PATH`" リストに "`/usr/sbin`" を追加する必要があるかもしれません。

## 5.6. ネットワークの最適化

一般的なネットワークの最適化は本書の射程外です。ここでは消費者用の接続に関する課題にのみ触れます。

表5.5 ネットワーク最適化ツールのリスト

パッケージ | ポプコン | サイズ | 説明
--- | --- | --- | ---
`iftop` | V:6, I:88 | 93 | ネットワークインターフェースの帯域利用情報を表示
`iperf` | V:2, I:34 | 431 | インターネットプロトコルのバンド幅測定ツール
`ifstat` | V:0.6, I:5.5 | 52 | インターフェース統計モニター
`bmon` | V:2, I:20 | 141 | 可搬型バンド幅モニター兼速度推定機
`ethstatus` | V:0.2, I:2.6 | 41 | ネットワークデバイスのスループットを迅速に測定するスクリプト
`bing` | V:0.07, I:0.50 | 80 | 経験則的確率バンド幅試験ソフト
`bwm-ng` | V:1.0, I:9.6 | 95 | 簡単軽量のコンソール式のバンド幅モニター
`ethstats` | V:0.05, I:0.39 | 21 | コンソール式のイーサーネット統計モニター
`ipfm` | V:0.04, I:0.11 | 78 | 帯域分析ツール

### 5.6.1. 最適 MTU の発見

NM は普通最適の 最大送信単位 (MTU: Maximum Transmission Unit) を自動的に設定します。

場合によっては、ping(8) を "`-M do`" オプションとともに用いて多くのデーターパケットサイズの ICMP パケットを送る実験後 MTU を手動で設定したいと考えるかもしれません。MTU は IP フラグメンテーションを起こさずおくれる最大のデーターパケットサイズに IPv4 の場合は 28 バイト IPv6 の場合は 48 バイト足したものです。例えば以下では IPv4 接続の場合は 1460 と IPv6 接続の場合は 1500 と突き止めます。

    $ ping -4 -c 1 -s $((1500-28)) -M do www.debian.org
    PING  (149.20.4.15) 1472(1500) bytes of data.
    ping: local error: message too long, mtu=1460

    ---  ping statistics ---
    1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

    $ ping -4 -c 1 -s $((1460-28)) -M do www.debian.org
    PING  (130.89.148.77) 1432(1460) bytes of data.
    1440 bytes from klecker-misc.debian.org (130.89.148.77): icmp_seq=1 ttl=50 time=325 ms

    ---  ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 325.318/325.318/325.318/0.000 ms
    $ ping -6 -c 1 -s $((1500-48)) -M do www.debian.org
    PING www.debian.org(mirror-csail.debian.org (2603:400a:ffff:bb8::801f:3e)) 1452 data bytes
    1460 bytes from mirror-csail.debian.org (2603:400a:ffff:bb8::801f:3e): icmp_seq=1 ttl=47 time=191 ms

    --- www.debian.org ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 191.332/191.332/191.332/0.000 ms

このプロセスはパス MTU (PMTU) 発見 (RFC1191) で、tracepath(8) コマンドで自動化できます。

表5.6 最適 MTU 値の基本的なガイドライン

ネットワーク環境 | MTU | 理由
--- | --- | ---
ダイヤルアップ接続 (IP: PPP) | 576 | 標準
イーサーネット接続 (IP: DHCP または固定) | 1500 | 標準かつデフォールト

これらの基本的なガイドラインに加えて、次を覚えておきます。

- 何らかのトンネル手法 (VPN等) を使うと、それらのオーバーヘッドのために最適 MTU を更に減らすかもしれません。

- MTU 値は実験的に決定される PMTU 値を越すべきではありません。

- もし他の制約条件を満たすなら、MTU 値は一般的に大きい方がいいです。

最大セグメントサイズ (MSS) はパケットサイズの代替尺度として使われます。MSS と MTU の関係は次です。

- IPv4 ではMSS = MTU - 40

- IPv6 ではMSS = MTU - 60

| 注記
iptables(8) (「Netfilter インフラ」を参照下さい) を使う最適化は MSS を使ってパッケットサイズを制約できるのでルーターとして有用です。iptables(8) 中の "TCPMSS" を参照下さい。

### 5.6.2. WAN TCP の最適化

現代的な高帯域でレイテンシーの大きな WAN では、TCP のスループットは TCP バッファーサイズパラメーターを "TCP tuning" にある手順で調整することで最大化できます。今のところ現在の Debian のデフォールトは高速の 1G bps の FTTP サービスでつながっている私の LAN でも十分機能しています。

## 5.7. Netfilter インフラ

Netfilter はLinux カーネルのモジュール (「カーネルモジュール初期化」を参照下さい) を利用するステートフルファイアーウォールとネットワークアドレス変換 (NAT) のインフラを提供します。

表5.7 ファイアーウォールツールのリスト

パッケージ | ポプコン | サイズ | 説明
--- | --- | --- | ---
`nftables` | V:254, I:872 | 189 | パケットフィルターと NAT のための管理ツール (Netfilter) ({ip,ip6,arp,eb}tables の後継)
`iptables` | V:382, I:642 | 2408 | netfilter の管理ツール(IPv4 用の iptables(8)、IPv6 用の ip6tables(8))
`arptables` | V:0.1, I:1.8 | 102 | netfilter の管理ツール(ARP 用の arptables(8))
`ebtables` | V:14, I:24 | 276 | netfilter の管理ツール(Ethernet ブリッジング用の ebtables(8))
`iptstate` | V:0.2, I:1.7 | 121 | netfilter の状態を常時モニター (top(1) と類似)
`ufw` | V:82, I:109 | 862 | Uncomplicated Firewall (UFW) netfilter ファイアーウォールの管理プログラム
`gufw` | V:6, I:11 | 3682 | Uncomplicated Firewall (UFW) 用のグラフィカル ユーザーインターフェース
`firewalld` | V:14, I:22 | 2581 | firewalld はネットワークゾーンをサポートする動的管理ファイアーウォールプログラム
`firewall-config` | V:0.7, I:3.3 | 1096 | firewalld 用のグラフィカル ユーザーインターフェース
`shorewall-init` | V:0.18, I:0.40 | 88 | Shoreline ファイアーウォール初期化
`shorewall` | V:2.2, I:5.0 | 3090 | Shoreline ファイアーウォール、netfilter 設定ファイル生成システム
`shorewall-lite` | V:0.02, I:0.06 | 71 | Shoreline ファイアーウォール、netfilter 設定ファイル生成システム (軽装備バージョン)
`shorewall6` | V:0.7, I:1.3 | 1334 | Shoreline ファイアーウォール、netfilter 設定ファイル生成システム (IPv6 バージョン)
`shorewall6-lite` | V:0.01, I:0.02 | 71 | Shoreline ファイアーウォール、netfilter 設定ファイル生成システム (IPv6 軽装備バージョン)

`nftables` パッケージ提供の、比較的新しいユーザースペース nft(8) コマンドは、The netfilter.org "nftables" project を参照ください。 (Linux kernel >= 3.13)

`iptables` や類似パッケージ提供の、比較的古いユーザースペース iptables(8) や類似コマンドは、The netfilter.org "iptables" project を参照ください。 (Linux kernel >= 2.4.x)

シェルから対話形式で手動で netfilter を設定し、その状態を "`nft list ruleset > file`" や iptables-save(8) で保存し、"`nft -f file`" や iptables-restore(8) を使って init スクリプト経由でシステムのリブート時に回復できます。

shorewall のような設定ヘルパースクリプトはこの過程を簡単にします。

Netfilter Documentation (または "`/usr/share/doc/iptables/html/`" 中) の文書を参照下さい。

- Linux Networking-concepts HOWTO

- Linux 2.4 Packet Filtering HOWTO

- Linux 2.4 NAT HOWTO

- nftables HOWTO

第4章 認証とアクセスの制御 |  | 第6章 ネットワークアプリケーション