目次
![]() |
ヒント |
---|---|
最近の Debian に特化したネットワーク設定のガイドは The Debian Administrator's Handbook — Configuring the Network を参照下さい。 |
現代的な Debian システムの基本的ネットワークインフラをレビューします。
表5.1 GUI のネットワーク設定ツール
パッケージ | ポプコン | サイズ | タイプ | 説明 |
---|---|---|---|---|
network-manager
|
V:369, I:440 | 14500 | 設定::NM | NetworkManager (デーモン): ネットワークを自動管理 |
network-manager-gnome
|
V:126, I:371 | 5350 | 設定::NM | NetworkManager (GNOME フロントエンド) |
ifupdown
|
V:584, I:987 | 217 | 設定::ifupdown | ネットワークを接続したり切断したりする標準化されたツール (Debian 特定) |
isc-dhcp-client
|
V:219, I:982 | 689 | 設定::低レベル | DHCP クライアント |
pppoeconf
|
V:0, I:7 | 192 | 設定::ヘルパー | PPPoE コネクションの設定ヘルパー |
wpasupplicant
|
V:341, I:503 | 3817 | , , | WPA と WPA2 (IEEE 802.11i) のためのクライアントサポート |
wpagui
|
V:0, I:2 | 800 | , , | wpa_supplicant の Qt GUI クライアント |
wireless-tools
|
V:176, I:239 | 297 | , , | Linux のワイヤレス拡張を操作するツール |
iw
|
V:223, I:477 | 294 | , , | Linux のワイヤレスデバイスを設定するツール |
iproute2
|
V:701, I:949 | 3294 | 設定::iproute2 | iproute2、IPv6 や他の上級ネットワーク設定:
ip (8) や tc (8) 等 |
iptables
|
V:306, I:942 | 2521 | 設定::Netfilter | パケットフィルターと NAT のための管理ツール (Netfilter) |
iputils-ping
|
V:206, I:997 | 118 | テスト | ホスト名か IP アドレスによってリモートホストのネットワークからの到達性をテスト (旧来、GNU) |
iputils-arping
|
V:5, I:78 | 60 | テスト | ARP アドレスによって特定されるリモートホストのネットワークからの到達性をテスト |
iputils-tracepath
|
V:4, I:46 | 52 | テスト | リモートホストへのネットワークパスを追跡 |
ethtool
|
V:96, I:267 | 631 | テスト | Ethernet デバイス設定の表示と変更 |
mtr-tiny
|
V:6, I:52 | 161 | テスト::低レベル | リモートホストへのネットワークパスを追跡するツール (curses) |
mtr
|
V:4, I:44 | 214 | , , | リモートホストへのネットワークパスを追跡するツール (curses と GTK) |
gnome-nettool
|
V:1, I:31 | 2110 | , , | 共通のネットワーク情報操作のためのツール (GNOME) |
nmap
|
V:28, I:231 | 4452 | , , | ネットワークマッパー / ポートスキャナー (Nmap、コンソール) |
zenmap
|
V:0, I:4 | 2939 | , , | ネットワークマッパー / ポートスキャナー (GTK) |
tcpdump
|
V:18, I:196 | 1330 | , , | ネットワークトラフィックアナライザー (Tcpdump、コンソール) |
wireshark
|
I:52 | 72 | , , | ネットワークトラフィックアナライザー (Wireshark、GTK) |
tshark
|
V:2, I:30 | 427 | , , | ネットワークトラフィックアナライザー (コンソール) |
tcptrace
|
V:0, I:2 | 401 | , , | tcpdump の出力から接続状況のまとめを作成 |
snort
|
V:0, I:1 | 2206 | , , | 柔軟なネットワーク侵入検知システム (Snort) |
ntopng
|
V:1, I:1 | 969 | , , | ネットワークの使用状況をウェッブブラウザーで表示 |
dnsutils
|
V:39, I:423 | 275 | , , | BIND によって提供されるネットワーククライアント:
nslookup (8) と nsupdate (8) と
dig (8) |
dlint
|
V:0, I:5 | 53 | , , | ネームサーバーの閲覧で DNS のゾーン情報をチェック |
dnstracer
|
V:0, I:1 | 60 | , , | DNS サーバーをその源流まで追跡 |
ホスト名の解決もまた、現在 NSS (ネームサービススイッチ、Name Service Switch) メカニズムによってサポートされています。この解決の流れは次です。
"hosts: files dns
" のようなスタンザのある
"/etc/nsswitch.conf
"
ファイルがホスト名の解消の順序を規定します。(これは、"/etc/host.conf
" ファイル中の
"order
" スタンザの機能を置換します。)
files
メソッドが最初に発動されます。ホスト名が
"/etc/hosts
"
ファイルに見つかると、それに対応する全ての有効アドレスを返し終了します。("/etc/host.conf
"
ファイルは "multi on
" を含みます。)
dns
メソッドが発動されます。"/etc/resolv.conf
"
ファイルで識別されるインターネットドメイン名システム
(DNS) への問い合わせでホスト名が見つかれば、それに関する全ての有効アドレスを返します。
例えば、"/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, Zeroconf) 経由でホスト名を解決する事ができます。
Avahi は Debian で Multicast DNS サービスの探索の枠組みを提供します。
libnss-mdns
プラグインパッケージが GNU C ライブラリー (glibc) の GNU Name
Service Switch (NSS) 機能に mDNS 経由のホスト名解決を提供します。
"/etc/nsswitch.conf
" ファイルには "hosts: files
mdns4_minimal [NOTFOUND=return] dns mdns4
" のようなスタンザがあるべきです。
ホスト名が ".local" で終わる 擬似-top-level domain (TLD) が解決されます。
mDNS の IPv4 リンク-ローカル のマルチキャストアドレス "224.0.0.251
" とか IPv6
でそれに相当する "FF02::FB
" が ".local
" で終わる名前の
DNS クエリーに用いられます。
非推奨である NETBios over TCP/IP
を使うホスト名解決は、winbind
パッケージをインストールすると提供できます。このような機能を有効にするには、"/etc/nsswitch.conf
"
ファイル中に "hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
wins
" のようなスタンザが必要です。(最近の Windows システムは通常 dns
メソッドをホスト名の解決に使います。)
![]() |
注記 |
---|---|
ドメイン名システムにおける ジェネリックトップレベルドメイン (gTLD) の拡張が進行中です。LAN内のみで使うドメイン名を選ぶ際に名前衝突に注意が必要です。 |
systemd は "enp0s25
" のような
"予測可能なネットワークインターフェース名"
を用います。
rfc1918 によってローカルエリアネットワーク (LAN) での使用に予約されている各クラス毎の IPv4 32ビットアドレス範囲を確認します。これらのアドレスは本来のインターネット上のアドレスとかち合う事が無いことが保証されています。
![]() |
注記 |
---|---|
コロンのついた IP アドレスは IPv6 アドレスです。たとえば
" |
表5.2 ネットワークアドレス範囲のリスト
クラス | ネットワークアドレス | ネットマスク | ネットマスク / ビット | of subnets |
---|---|---|---|---|
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 を行います。 |
Debian システムによってほとんどのハードウエアーデバイスはサポートされていますが、一部のネットワークデバイスはそのサポートのために DFSG non-free のファームウエアーが必要です。「ハードウエアードライバーとファームウエアー」を参照下さい。
最近の systemd
下の Debian
デスクトップ環境では、ネットワークインターフェースは、lo
が
"networking.service
" で、他のインターフェースが
"NetworkManager.service
" で通常初期化されます。
Debian では、NetworkManager (NM) (network-manager と関連パッケージ) 等の管理デーモン経由でネットワーク接続の管理ができます。
![]() |
注記 |
---|---|
サーバーにはこの様な自動ネットワーク設定を使わないで下さい。これらはラップトップ上のモービルデスクトップを主対象としています。 |
これらの現代的なネットワーク設定ツールは旧来の "ifupdown
" パッケージやその
"/etc/network/interfaces
"
設定ファイルとの競合を避けるように適正に設定する必要があります。
Debian における NM の公式のドキュメンテーションは
"/usr/share/doc/network-manager/README.Debian
" にあります。
デスクトップのための現代的ネットワーク設定の要点は以下です。
次のようにして、例えば foo
というデスクトップユーザーを
"netdev
" グループに属するようにします。(GNOME や KDE のような現代的デスクトップ環境の下では
D-bus 経由でそれを自動的にするのも一つの方法です。)
$ sudo adduser foo netdev
"/etc/network/interfaces
" の設定を次のようにできるだけ簡単にします。
auto lo iface lo inet loopback
次のようにして NM を再起動します。
$ sudo systemctl restart network-manager
GUI 経由でネットワークを設定します。
![]() |
注記 |
---|---|
|
![]() |
ヒント |
---|---|
NM
のネットワーク設定能力を拡張したい場合には、 |
上記とは異なり、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
Linux における低水準のネットワークを設定するには iproute2 プログラム
(ip
(8)、…) を用います。
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) と IPROUTE2
Utility Suite Howto を参照下さい。
次の低レベルネットワークコマンドは、ネットワーク設定を変更しないので安全に使えます。
表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 |
パケットフィルターの確認 |
netstat -a |
オープンポートの発見 |
netstat -l --inet |
聴取中のポートの発見 |
netstat -ln --tcp |
聴取中の TCP ポートの発見 (数字) |
dlint example.com |
"examle.com " の DNS ゾーン情報を確認 |
![]() |
ヒント |
---|---|
これらの低レベルネットワーク設定ツールは " |
一般的なネットワークの最適化は本書の射程外です。ここでは消費者用の接続に関する課題にのみ触れます。
表5.5 ネットワーク最適化ツールのリスト
パッケージ | ポプコン | サイズ | 説明 |
---|---|---|---|
iftop
|
V:7, I:112 | 97 | ネットワークインターフェースの帯域利用情報を表示 |
iperf
|
V:3, I:52 | 322 | インターネットプロトコルのバンド幅測定ツール |
ifstat
|
V:0, I:8 | 59 | インターフェース統計モニター |
bmon
|
V:1, I:17 | 146 | 可搬型バンド幅モニター兼速度推定機 |
ethstatus
|
V:0, I:4 | 40 | ネットワークデバイスのスループットを迅速に測定するスクリプト |
bing
|
V:0, I:1 | 80 | 経験則的確率バンド幅試験ソフト |
bwm-ng
|
V:1, I:17 | 90 | 簡単軽量のコンソール式のバンド幅モニター |
ethstats
|
V:0, I:0 | 23 | コンソール式のイーサーネット統計モニター |
ipfm
|
V:0, I:0 | 78 | 帯域分析ツール |
NM normally sets optimal Maximum Transmission Unit (MTU) automatically.
In some occasion, you may wish to set MTU manually after experiments with
ping
(8) with "-M do
" option to send a
ICMP packet with various data packet size. MTU is the maximum succeeding
data packet size without IP fragmentation plus 28 bytes for the IPv4 and
plus 48 bytes for the IPv6. For example the following finds MTU for IPv4
connection to be 1460 and MTU for IPv6 connection to be 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 | 標準かつデフォールト |
In addition to these basic guide lines, you should know the following.
何らかのトンネル手法 (VPN等) を使うと、それらのオーバーヘッドのために最適 MTU を更に減らすかもしれません。
MTU 値は実験的に決定される PMTU 値を越すべきではありません。
もし他の制約条件を満たすなら、MTU 値は一般的に大きい方がいいです。
最大セグメントサイズ (MSS) はパケットサイズの代替尺度として使われます。MSS と MTU の関係は次です。
IPv4 ではMSS = MTU - 40
IPv6 ではMSS = MTU - 60
![]() |
注記 |
---|---|
|
現代的な高帯域でレイテンシーの大きな WAN では、TCP のスループットは TCP バッファーサイズパラメーターを "TCP Tuning Guide" や "TCP tuning" に書かれている手順で調整することで最大化できます。今のところ現在の Debian のデフォールトは高速の 1G bps の FTTP サービスでつながっている私の LAN でも十分機能しています。
Netfilter はLinux カーネルのモジュール (「カーネルモジュール初期化」参照下さい) を利用するステートフルファイアーウォールとネットワークアドレス変換 (NAT) のインフラを提供します。
表5.7 ファイアーウォールツールのリスト
パッケージ | ポプコン | サイズ | 説明 |
---|---|---|---|
iptables
|
V:306, I:942 | 2521 | netfilter の管理ツール(IPv4 用の
iptables (8)、IPv6 用の ip6tables (8)) |
arptables
|
V:0, I:2 | 96 | netfilter の管理ツール(ARP 用の
arptables (8)) |
ebtables
|
V:14, I:33 | 265 | netfilter の管理ツール(Ethernet ブリッジング用の
ebtables (8)) |
iptstate
|
V:0, I:3 | 116 | netfilter の状態を常時モニター
(top (1) と類似) |
shorewall-init
|
V:0, I:0 | 68 | Shoreline ファイアーウォール初期化 |
shorewall
|
V:5, I:11 | 2458 | Shoreline ファイアーウォール、netfilter 設定ファイル生成システム |
shorewall-lite
|
V:0, I:0 | 65 | Shoreline ファイアーウォール、netfilter 設定ファイル生成システム (軽装備バージョン) |
shorewall6
|
V:1, I:2 | 779 | Shoreline ファイアーウォール、netfilter 設定ファイル生成システム (IPv6 バージョン) |
shorewall6-lite
|
V:0, I:0 | 64 | Shoreline ファイアーウォール、netfilter 設定ファイル生成システム (IPv6 軽装備バージョン) |
netfilter のユーザー空間の主プログラムは
iptables
(8) です。シェルから対話形式で手動で netfilter を設定し、その状態を
iptables-save
(8)
で保存し、iptables-restore
(8) を使って init
スクリプト経由でシステムのリブート時に回復できます。
shorewall のような設定ヘルパースクリプトはこの過程を簡単にします。
http://www.netfilter.org/documentation/
(または "/usr/share/doc/iptables/html/
" 中) の文書を参照下さい。
![]() |
ヒント |
---|---|
これらは Linux 2.4
のために書かれたとはいえ、 |