情報システム管理 情報システム管理
7 . DHCP、 NAT
水野嘉明
本日の内容 本日の内容
1 . DHCP サーバ
DHCP
の仕組みと設定2 . NAT
NAT
の仕組みとNAT
ルータの実現1 1 . . DHCPサーバ DHCPサーバ
1 . 1 DHCP の仕組み
1 . 2 DHCP サーバの設定
1 . 3 クライアントの設定
1 1 . . DHCPサーバ DHCPサーバ
DHCP
Dynamic Host Configuration
Protocol
クライアントの IP アドレス割
り当てを自動化する仕組み
1 1 . . 1 1 DHCP DHCP の仕組 の仕組
クライアント全てに、固定IPア ドレスを割り振るのは、無駄が大 きい/不便なことがある
クライアントが起動した時に、
プールしてある IP アドレスの中か ら、動的に割り振る
(注) サーバは、固定の方が便利
DHCPサーバは、IPアドレス以 外にも 様々な情報を配布
ネットマスク
DNSドメイン名
ルータ (デフォルトゲートウェ イ)のアドレス
NISドメイン名
その他のサーバアドレスetc.
1 1 . . 1 1 DHCP DHCP の仕組 の仕組
7
新しいクライアン トが接続した時に
、 IP
アドレス等 を割り振る7
DHCP
サーバクライアン ト
1 1 . . 1 1 DHCP DHCP の仕組 の仕組
IP アドレ ス
【問題】
TCP/IPにて通信するためには、 IPアドレスが必要。IPアド レス等が未定の時に、どのようにし てDHCPサーバと通信するのか?
【答】
ブロードキャストを用いる1 1 . . 1 1 DHCP DHCP の仕組 の仕組
9
(1) IP
アドレス要求のブ ロードキャストを、ネットワークに流す
(2) DHCP
サーバが、IP
アドレスを割り当てる9
DHCP
サーバクライアン ト
1 1 . . 1 1 DHCP DHCP の仕組 の仕組
無視 無視
1 1 . . 2 2 DHCP DHCP サーバの設定 サーバの設定
KNOPPIX
では、ISC
版 dhcpd を使用 他に次のような
DHCP
サーバがある Dnsmasq
( Linux 用、 DNS 機能あ り) Windows
サーバのDHCP
サーバ
ルータ内実装1 1 . . 2 2 DHCP DHCP サーバの設定 サーバの設定
設定ファイルは、
/etc/dhcpd.conf または /etc/dhcp3/dhcpd.conf
このファイルに、配布する情報
を記述する
12
dhcpd.conf 記述例
12
##
## dhcpd.conf
##
ddns-update-style none;
shared-network DHCP {
option subnet-mask 255.255.255.0;
default-lease-time 21600;
max-lease-time 43200;
(続く
1 1 . . 2 2 DHCP DHCP サーバの設定 サーバの設定
( 続き)
subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.16 192.168.1.240;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
option domain-name "xxxx.xx.xx";
option domain-name-servers 192.168.1.1;
} }
1 1 . . 2 2 DHCP DHCP サーバの設定 サーバの設定
/etc/dhcpd.conf
記述内容 option subnet-mask
ネットマスクの値
default-lease-time/max-lease-time
IP
アドレスの有効期間 range
プールしてある
IP
アドレスの範囲 option routers
1 1 . . 2 2 DHCP DHCP サーバの設定 サーバの設定
1 1 . . 2 2 DHCP DHCP サーバの設定 サーバの設定
デーモンを起動
KNOPPIX (Debian系)
RedHat系
$ invoke-rc.d dhcpd start
$ update-rc.d dhcpd defaults $ service dhcpd start
$ chkconfig dhcpd on
注意
ネットワークに、複数のDHCP
サーバは(原則として)存在でき ないルータに
DHCP
サーバ機能がある 場合は、止める必要がある1 1 . . 2 2 DHCP DHCP サーバの設定 サーバの設定
1 1 . . 3 クライアントの設定 3 クライアントの設定
Linux クライアントの設定
設定ファイルを編集する
/etc/network/interfaces
(Debian 系 )
/etc/sysconfig/network- scripts /ifcfg-eth0
(RedHat 系 )
1 1 . . 3 クライアントの設定 3 クライアントの設定
KNOPPIXでの設定例
( /etc/network/interfaces )
# The primary network interface allow-hotplug eth0
iface eth0 inet dhcp
1 1 . . 3 クライアントの設定 3 クライアントの設定
【参考】 固定IPアドレス時の設定例 (KNOPPIX)
allow-hotplug eth0 iface eth0 inet static
address 133.79.53.115
netmask 255.255.255.0
broadcast 133.79.53.255
gateway 133.79.53.1
1 1 . . 3 クライアントの設定 3 クライアントの設定
ifup / ifdown
というツールが、 こ の/etc/network/interfaces
を用いるファイルを読み込む
dhclient (DHCP
クライアント)
を呼び出し、IP
アドレスを取得
ifconfig
を呼び出す
Windows
での クライアントの設定1 1 . . 3 クライアントの設定 3 クライアントの設定
2 2 . . NAT NAT
2 . 1 NAT とは
2 . 2 ルータによる接続
2 .3 IP アドレス変換の仕組み
2 .4 NAT ルータの実現
2 .5 iptables の基本的な使用法
2 2 . . 1 1 NAT NAT とは とは
NAT
Network Address Translation
プライベート IP アドレスと、グ
ローバル IP アドレスを変換する
仕組み
2 2 . . 1 1 NAT NAT とは とは
グローバル IP アドレスの枯渇問題
プライベート IP アドレスを使用
ローカルなネットワーク内だけ で通用する IP アドレス
外部には、アクセスできない
外部にアクセスする時には、プライ ベートアドレスをグローバルアドレ スに変換し、これで外部にアクセス する
プライベート
IP
アドレスグローバル
IP
アドレス変換
2 2 . . 1 1 NAT NAT とは とは
26 26
ハブ ハブ
プライベー トアドレス空
グローバルアドレス空 間
インターネッ ト
ルータ
NAT
ルータ2 2 . . 1 1 NAT NAT とは とは
NAT ルータの機能
パケット中継機能
IP アドレス変換
パケットフィルタリング
(ファイアウォール)
2 2 . . 1 1 NAT NAT とは とは
2 2 . . 2 2 ルータによる接続 ルータによる接続
ルータとは
ネットワーク間を相互接続する 通信機器
OSI基本参照モデルの第 1 層
「物理層」から第 3 層「ネット
ワーク層」までの接続を担う
ルータは、複数のIPアドレスを持つ
192.168.1.254 192.168.11.253
192.168.11.0/24 192.168.1.0/24
二つのネットワークを相互接
続
292 2 . . 2 2 ルータによる接続 ルータによる接続
ルータと TCP/IPの階層構造
LANW AN W ANLAN
IP LAN
IP IP
IP LAN
TCP TCP
アプリ アプリ
ルータ ルータ コンピュー
タ コンピュー
タ
2 2 . . 2 2 ルータによる接続 ルータによる接続
【参考】
LAN
同士の接続には、層(機能 レベル)毎に、異なる装置がある4~7層 ネットワー
ク層
データリン ク層
物理層
4~7層 ネットワー
ク層
データリン ク層
物理層 ゲートウェイ
ルータ /
レイヤ3スイッチ
ブリッジ /
スイッチングハ ブ
リピータ
2 2 . . 2 2 ルータによる接続 ルータによる接続
192.168.1.4 192.168.1.0/24
192.168.11.0/24 172.16.4.0/24 192.168.1.254 192.168.11.253
192.168.11.254
172.16.4.254
172.16.4.3
Default: 192.168.1.254
192.168.12.254
172.16.6.254
Default: 172.16.4.254
2 2 . . 2 ルータによる接続 2 ルータによる接続
パケット転送に必要な情報
IP
アドレスとネットマスクパケットを送りたいホストが同一 ネットワークに属するかどうかの 判定に必要
ルーティング情報受取ったパケットをどこへ送るか
デフォルトゲートウェイ
2 2 . . 2 2 ルータによる接続 ルータによる接続
ルーティング情報の例
IP宛先アドレ
ス ネットマスク ゲートウェ IP アドレスイ
インターフェ ース IP アド
レス
10.1.1.0 255.255.255.0 10.1.1.254 10.1.1.254 10.1.2.0 255.255.255.0 10.1.2.254 10.1.2.254 0.0.0.0 0.0.0.0 10.1.1.1 10.1.1.254
デフォルトゲートウ
2 2 . . 2 2 ルータによる接続 ルータによる接続
NAT ルータの機能
パケット中継機能
IP アドレス変換
パケットフィルタリング
(ファイアウォール)
2 2 . . 3 3 IP IP アドレス変換の仕組 アドレス変換の仕組
み み
2 2 . . 3 3 IP IP アドレス変換の仕組 アドレス変換の仕組 み み
パケットのヘッダに、以下の情報
送り元の IP アドレス
送り先の IP アドレス
送り元ポート番号
送り先ポート番号 など
これらを書き換える
37
IP IP アドレス変換 アドレス変換
37
データ
インターネッ
NAT
ルータ トヘッダ
(プライベ-
ト) ヘッダ
(グローバル
)
2 2 . . 3 3 IP IP アドレス変換の仕組 アドレス変換の仕組
み み
IP
アドレスの変換方式には二通り(1)
プールしてあるIP
アドレスを、順に割り当てる
–
同時に外部にアクセスできるク ライアント数には、限度(2) IP
アドレスと、ポート番号を組に して、変換する–
または マスカレード2 2 . . 3 3 IP IP アドレス変換の仕組 アドレス変換の仕組
み み
NAPTの例
送り元 192.168.1.1 (20031) ⇒ 160.30.21.110 (10001)
送り元 192.168.1.2 (20055) ⇒ 160.30.21.110 (10002)
送り元 192.168.1.9 (20055) ⇒ 160.30.21.110 (10003) NAPT は、変換を記憶しておく
プライベー
ト グローバ ル
2 2 . . 3 3 IP IP アドレス変換の仕組 アドレス変換の仕組
み み
返信のあて先が
160.30.21.110 (10001)
⇒ 192.168.1.1 (20031) に返す
160.30.21.110 (10002)
⇒ 192.168.1.2 (20055) に返す :
2 2 . . 3 3 IP IP アドレス変換の仕組 アドレス変換の仕組
み み
NAPTは、変換結果を記憶してお り、それによって返信を配達する
外部主導のアクセスは拒否する = ファイアウォール機能
2 2 . . 3 3 IP IP アドレス変換の仕組 アドレス変換の仕組
み み
2 2 . . 3 3 IP IP アドレス変換の仕組 アドレス変換の仕組 み み
NAT
の メリット
グローバルIP
アドレスの節約
外部に対して、内部ネットワークの アドレス体系を隠蔽
ネットワークの柔軟性
NAT
の デメリット
パケット遅延
一部アプリケーションが動作しない2 2 . . 4 4 NAT NAT ルータの実現 ルータの実現
ルータ機能(パケット中継機能)は、
UNIXのカーネルに備わっている
Linuxにおけるパケットフィルタリ ングと NAPT (IPマスカレード)機能 は、
iptables コマンド による
(「 5. ネットワークとファイアウォール」)
2 2 . . 4 4 NAT NAT ルータの実現 ルータの実現
パケット中継機能
ネットワークインタフェースは、二つ以上が必要
内部へ 外部へ
パケット中継機能
パケット中継機能は、デフォル トではオフになっている
⇒ これをオンにする
/proc/sys/net/ipv4/ip_forward に 1を書く
$ echo 1 > /proc/sys/net/ipv4/ip_forward
2 2 . . 4 4 NAT NAT ルータの実現 ルータの実現
# Controls IP packet forwarding net.ipv4.ip_forward = 1
:
再起動時にも有効にするに
は、 /etc/sysctl.cont ファイルの net.ipv4.ip_forward 行を編集
/
etc/sysctl.cont
2 2 . . 4 4 NAT NAT ルータの実現 ルータの実現
NAPT ( IP
マスカレード)機能 iptables
の 【POSTROUTING
】 チェインにて実現する ファイアウォール機能
同じくiptables
コマンドにて実現2 2 . . 4 4 NAT NAT ルータの実現 ルータの実現
2 2 . . 5 5 iptables iptables の基本的な使用 の基本的な使用 法 法
iptables
は、パケットが通過する経路 上に、5つのチェイン を設けている 【 INPUT 】
【 FORWARD 】
【 OUTPUT 】
【 PREROUTING 】
【 POSTROUTING 】
再掲
5つのチェインとパケットの流れ
ローカルプロセス INPUT
OUTPUT ルーティング
(経路)の 決定
POSTROUTING FORWARD
入ってくるパケッ ト
出て行くパケ ット
PREROUTING
2 2 . . 5 5 iptables iptables の基本的な使 の基本的な使 用法 用法
再掲
2 2 . . 5 5 iptables iptables の基本的な使 の基本的な使 用法 用法
iptables のチェイン
チェイン名 対象
INPUT
入力(受信)パケットOUTPUT
出力(送信)パケットFORWARD
インタフェース間をまたぐ転送パケット
PREROUTING
受信時にアドレス変換iptables は、このチェインを監視し 『このパケットの送信元アドレスを 書き換える』
『このパケットは通さない』
『このパケットは通す』
などの処理を行う
チェインをユーザ定義することも可
2 2 . . 5 5 iptables iptables の基本的な使用 の基本的な使用
法 法
iptables には、 テーブル と言う概 念がある
filter テーブル
パケットフィルタリング用
nat テーブル
IP マスカレード用
2 2 . . 5 5 iptables iptables の基本的な使用 の基本的な使用
法 法
各テーブルで、使用できるチェイ ンが異なる
filter
テーブル–INPUT, FORWARD, OUTPUT
nat テーブル
–PREROUTING, OUTPUT, POSTROUTING
2 2 . . 5 5 iptables iptables の基本的な使用 の基本的な使用
法 法
$ iptables -t table
名-A chain
名パラ メータ
-j
処理方法
iptables
コマンドどのチェイン に
どのようなパケ ットが通過する
どう処理するか どのテーブル
の
2 2 . . 5 5 iptables iptables の基本的な使用 の基本的な使用 法 法
コマンド
2 2 . . 5 5 iptables iptables の基本的な使用 の基本的な使用 法 法
iptables の主なコマンド
オプション 意味
-A
新しいルールを追加 (末尾)-I
新しいルールを追加 (先頭)-D
ルールを削除-F
すべてのルールを削除(初期 化)-P
ポリシー(基本ルール)を設 定-L
ルールの一覧表示55
どのテーブルの
filter または nat を指定する
どのチェインに
前述のチェイン名を指定する INPUT, FORWARD, ・・・
2 2 . . 5 5 iptables iptables の基本的な使用 の基本的な使用
法 法
57
どのようなパケットが通過する時に57
項目 オプションと指定例 インタフェース
-i eth0
プロトコル
-p tcp
送信元アドレス
-s 192.168.0.0/24
送信先アドレス-d 192.168.0.2
送信元ポート
--sport 23
送信先ポート
--dport 1024:65535
接続要求パケット
--syn
2 2 . . 5 5 iptables iptables の基本的な使 の基本的な使
用法 用法
どう処理するか
処理 指定
パケットを許可す
る
ACCEPT
パケットを拒否す
る
DROP
IP
マスカレードMASQUERADE
2 2 . . 5 5 iptables iptables の基本的な使用 の基本的な使用
法 法
iptables
コマンドによる設定は、再 起動により リセットされる⇒ コマンドによりセーブしなければ ならない
$ invoke-rc.d iptables save filename
セーブする場所は、ディストリビュー ションにより異なる
( /etc/sysconfig/iptables
等) 592 2 . . 5 5 iptables iptables の基本的な使 の基本的な使 用法 用法
$ iptables-save > filename
/etc/sysconfig/iptables ファイルの例
2 2 . . 5 5 iptables iptables の基本的な使用 の基本的な使用
法 法
NAPT ( IP マスカレード)機能 の 設定例
$ iptables -t nat -A POSTROUTING
-s 192.168.0.0/24 -j MASQUERADE
2 2 . . 5 5 iptables iptables の基本的な使用 の基本的な使用
法 法
次回の予定