NAT - みる会図書館


検索対象: BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー
37件見つかりました。

1. BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー

寺集 皀 SU で My Se 内 0 了を作るツ ら外部 ( インターネット ) へのアクセ たり、 ppp 接続以外でも NAT を使用で 図 1 のような構成を仮定すると、 pc きるように汎用的な natd を用意したり スが可能となる。しかしながら NAT の から外部ネットワークへのアクセスは 仕組み上、一般に外部から内部の特定 192.16.1.254 をゲートウェイとして利用 している。 NetBSD では pppd に組み込 のマシンへの接続については困難であ まれてはいないが、 IP filter の中の ipnat する。通常のネットワークであれば、 コマンドを使用することで NAT を実現 る。これに関しては外部からアクセス 192.16.1.1 というアドレスが外部へ流れ させたいケースよりも、むしろ逆に外 できる。これは OpenBSD でも同様で、 てしまうが、 NAT を経由したアクセス 部からアクセスさせたくないというケ BSD / OS での状況は確認していないが、 の場合は、グローバルアドレスである IP filter は利用できるはずなので恐らく ースのほうが多いだろうから、この点 A. B ℃ . D という値に変換されてバケッ ipnat の利用もできるはすである。それ が必ずしも弱点とは言えないのかもし トカ毓れる。外部の接続先から見ると、 ぞれの具体的な設定はオンラインマニ あたかも A. B ℃ . D ( つまり NAT BOX) れない。 ュアル等を参照するか、本誌の特集に 今後 128bit という広大なアドレス空 からの接続に見える。またこの仕組み 参 間を持っ IPv6 への移行が完了すれば、 もいくつかの例が載っているので、 をさらに利用すると、グローバルアド 考にするといいだろう。 NAT の必要性はなくなっていくのでは レスを一つ取得するだけで、プライベ ートアドレスを持っ複数の環境から外 ないかと思われるが、現状の IPv4 べー スの TCP / IP 環境で外部ネットワークと 部へのアクセスが可能となる。たとえ の接続を行う場合には当面必須とも言 ば PCI ( 192.16.1.1) と PC2 ( 192.16. える機能であろう。 1.2 ) の 2 台から外部向けのバケットに 最後に NAT の実装に関して簡単に触 関してアドレス変換を行うこともでき れておくことにする。 NAT の実装例に るのである ( 図 2 ) 。 はいろいろなものがある。 Linux におけ この機能を利用すれば、ダイアルア る IP Masquerade 等は NAT の代名詞とい ップ環境で IP アドレスを一つしか取得 できないようなケースでも技術的には注 3 える程有名である。 FreeBSD では IIJ- ppp を機能拡張して NAT 機能を持たせ 複数の異なる IP アドレスを持つ端末か 192.16.1. x ネットワーク A. B. C. D NAT BOX PC2(192.16.1.2 ) ※ 192.16.1. x ネットワーク上から外部ネットワーク向けのバケットは NAT BOX にて A. B. C. D に変換されて外部へ出て行く。 図 2 NAT によるアドレス変換 注 3 プロバイダ等によってはこのような接続を禁止している場合もあるため、「技術的には」と書いている。 BSD magazine 2000 No. 5

2. BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー

集 でう が可能であるが、 ppp の nat 機能では、 もあるように、 ppp に対して NAT 機能 6000 番に変更してローカルネットワー 一組のホスト間の転送しかできない。 を追加 / 拡張された方である。なぜ、 クに送り出している。 HostA では 6000 ポートを使ってコネクションを張って RealAudio などを扱うことができないサ より多くのサービスを natd で扱うために ービスが存在するのかは、佐藤氏の きたことから、 HostA ではディスプレイ 番号 0 の x サーバーに HostB の x クライ こまでの説明でまったく触れてい 「 iij - ppp を NAT 対応にする技術情報と アントを張り付けることになる。 詳細」のページ なかったが、実は natd によって、ネッ もし、別のホスト Hostc ()P アドレ トワークを介したすべてのサービスを http : //configure. sh/FreeBSD/NAT/ ス : 192.168.0.3 ) に対しても同様な設 中継できるわけではない ( これは他の nat2. html 定をしたければ、 /etc/natd. conf に NAT を実現する方法でも同様である ) 。 一部の特殊な通信形態を持っサービ を参照すると良いだろう。これを読む ス、たとえば、 RealAudio の通信形態 と、 ppp の NAT 機能の拡張に苦労され redirect-port tcp 192.168.0.3 : 6000 6011 などは現状の natd では扱うことができ ているのがわかる。このときの経験を を追加し、 natd を再起動する。そして 兀に、 libalias の NAT 機能の拡張を試み ない。 そこで、佐藤淳一氏は、 natd ( 実際 外部のホスト上でのディスプレイ番号 られていて、その第一段が、この Real は libalias というライプラリ ) を ReaI は 11 を使うことになる。 system の対応なのである。ちなみに この方法は、 ssh を使う方法と比べ、 system (ReaIAudio 、 RealVideo の rtsp 、 佐藤氏によって ppp で利用可能になっ pna の UDP 転送 ) 対応にするためのパ 転送先のホストを増やしたり変更する ていたサービスは、 CU-SeeMe 、 ReaI たびに、 H 。 stGW の設定を変更する必 ッチを作成し、それを次の URL で公開 Audio 、 VDO Live Video 、 DiabIo 、 要があることが欠点である。また、当 QuickTime4 であり、今後は、これらの されている。 サービスが natd でも順次利用可能にな 然であるが、この方法では、 HostA か http : //configure. sh/FreeBSD/ ることであろう。なお、佐藤氏の NAT ら H 。 stB の経路がすべて信頼できる extend—libalias—j . html ( 盗聴されていない ) という保証のある 機能は、 4. O-RELEASE 以降では ppp へ の改造は行われず、ⅱ ba ⅱ as への対応の 場合に使うべきである。 佐藤淳一氏と言えば、「ダイアルアッ ちなみに、 IPFiIter でも同様な設定 みにするそうである。 プサーバーの構築」の節に FreeBSD の旧 F ⅱ te 「による NAT の実現方法 FreeBSD には、 ipfw と natd を組み合わせた方式以外に カーネルの再構築 「ダイアルアップサーバーの構築 NetBS D 編」 ( 以後、 旧 F ⅱ te 「を利用可能に 「 NetBSD 編」と略すことにする ) で紹介された旧 FiIter も標 ンフィグファイルに加え 準でインストールされている。もちろん、これによって、ゲ 構 natd のところで kernel の ートウェイに NAT 機能を持たせることも可能である。また、 らを参照してもらいたい。 旧 F ⅱ ter は多くの OS に移植されているので、 FreeBSD でもこ 再構築すること以外 ( れを利用することがあるだろう。そこで、ここでは旧 Filter を ール ipl.ko を 用いた NAT 機能の実現方法を簡潔に示す ( 詳しくは NetBSD 編を参照 ) 。なお、ここで示す実例は、「 FreeBSD の ipfw と # kldload modules/ip natd による NAT の実現方法」の図 1 の環境を想定し、また、 その設定により「 NetBSD 編」と同じように基本的な機能の としてロードすることで み実現している。 ーめに、リスト 1 のエントリをコ ーネルを再構築する。 ipfw と 、を簡単に示したのでそち こめのローダブルモジュ 00 ハになる。 リ イ 7 BSD magazine 2000 NO. 5

3. BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー

、」 0 0 z て 0 E CO ー大 の空間には「プライベートアドレス」 る際にバケット内の IP アドレスやポー 最近のダイアルアップルータには と呼ばれるアドレスが予約されており、 ト番号等を変換するのであるが、この NAT (Network Address TransIation) と 外部のネットワークにバケットを流し 機能がなぜそれほど重要となっている 呼ばれる機能が用意されていることが たりしなければ自由に利用できるため、 のであろうか ? 多い。これはそもそもどういうもの このアドレス空間を使用することで必 か ? またこのような機能が利用され その理由の最大のものとして、 IP ア 要な IP アドレスを割り当てるケースが ドレス空間の枯渇が挙げられる。 1Pv4 るようになった背景にはどういうもの 多い。しかしながらこの空間のアドレ が設計された時点では 32bit の空間とい があるのだろう注 1 。 スを使用している限り、外部のネット うのは途方もなく広い空間であったか NAT 機能が流行りだしたのは比較的 ワークとの接続を行うことはできない。 もしれないが、現在のように pc が普及 最近である。しかし最近のルータであ この問題を解決するために NAT を使 れば、この機能は当たり前のように付 しネットワーク接続が一般的になり、 用することができる。外部接続向けの さらに従来は IP アドレスを付与しなか 属している。 NAT とは一言で言えば ったような機器でさえ遠隔管理用に グローバル IP アドレスを取得しておき、 TCP/IP 通信を行うような時代である。 外部接続時にはプライベートアドレス 甲アドレスを変換してしまう機能のこと をそのアドレスへ変換することで対応 当然 32bit の空間での破綻は目の前にあ るといえるかもしれない注 2 。この 32bit する。 である。ルータ等がバケットを中継す 内部ネットワーク ( 192.16.1. x) A. B. C. D ( グローバルアドレス ) te 「 net ( 外部ネットワーク ) グローバル旧アドレスを使用 NAT BOX したネットワーク 192.16.1.254 ー PC ( 192.16.1.1 ) 同様上社れ名称に灯 IP Ma 、 querade 」というものがある。これは Li 。。、で実装された NAT 機能の名称であるが、実装される時期が早か。たこ 注 1 N の名称を NAT 同義語として使用したりする人もいる。 に破綻してい う意見もあるかもしれない。 注 イ 0 B magazine 20 C) N 図 1 ここで仮定するネットワークの構成 5

4. BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー

集 皀 SID で M ッ明作るツ (ISP との接続部分 ) と外部向けサーバー との通信をフィルタリング処理をしっ っさばければよい。ここは * BSD を搭載 するならば、複数枚の PCI タイプのイ ーサネットカードをさした lntel pc を用 意するのが低コストで簡単である。複 数枚の ISA タイプのイーサネットカー ドの場合は、それぞれを利用するため にカーネルの再構築が必要となること が多く、 IRQ や IO 空間リソースの配分 を注意深く考える必要がある。 PCI ス ロットの 2 つ以上をイーサネットカード で塞がれるので、 BookPC や IU や 2U ク ラスの薄いラックマウント型ケースの pc などを利用する場合、 PCI スロット 数が不足することがある。マルチボー トイーサカードである PLANEX 社 FXP- 4AT 注 14 は * BSD から使用できる数少な いカードであったが、どうやら販売終 了したようで非常に残念である。当然 内部ルーター部分でも、 ipfil のような フィルタ機能は必須である。 さらに、内部利用者計算機から The lnternet へのアクセスを行う場合、内部 ネットワークが Private IP Address であ れば、なんらかの中継作業が必要とな る。この中継手段には、上で挙げた NAT 、 delegate の他に、 socks 注 15 、 squiclm6 などが利用できる。 機器間接続装置 各計算機やルーター同士を繋ぐネッ トワーク接続としては、ほとんどが IOOBASE-TX か IOBASE-T によるもの になるだろう。古いワークステーショ ンなどを利用していると、 10BASE-2 や IOBASE-5 の場合もあるが、 10BASE-2 ポートを持つ HUB や MAU を使用し、一 基本的には IOBASE - T に変換して接続 するとよい。 ・ PLANEX EH ー 802a 注 17 ・ ContreCOM 210T series 近年、 IOOBASE-TX/IOBASE-T 自動 切替機能付ィーサネットスイッチング ハプが非常に低価格化している。ある 二つの計算機間の通信が別の計算機か ら観測しにくくなることもあり、でき る限りスイッチングハプを導入するほ うがよい。ただし、 8 ポートクラスのイ ーサネットスイッチングハプでも、意 外と消費電力が大きく、 AC アダブタタ イプの場合、かなり大型のアダブタに 注 18 CATV インターネット 地域系 NTT に関係なく 24 時間繋ぎつばなしにできる CATV インターネットは、その低価格と高帯域ゆえに爆発的にユー ザーが増加している。ケーブルモデムは、基本的にはブリッ ジでありルーターではないが、旧しか通さないなどのちょっと したフィルタ機能がついているようである。しかし、 ISDN ル ーターのようにユーザーが自由にコントロールできるフィルタ 機能があるわけではない。 さて、このような CATV インターネットの場合、ケーブル モデムに接続した計算機は、大抵の場合 CATV 会社の DHCP サーバーか引 P address をもらって通信を行うようになって こで、与えられる旧 address が、いわゆる GloballP いる。 address の会社 (ZAQ など ) と、 CATV 会社に NAT が導入さ れていて各ユーザーには P 「ⅳ ate 旧 address が割り振られる会 http: ″ www.allied-telesis.co.jp/products/product/trans/21 Ot/ http://www.planex.co.jp/product/hub/eh802a.html http://www.squid-cache.org/ http: ″ www.socks.nec.com/ http: ″ www.planex.cojp/product/adpter/fxp4at.htm 社 ( 東急 CATV など ) があるようだ。 特に後者の場合、 NAT のため、 The ternet からのアクセ スを受け付けるのが困難 しかし、 DTCP ( 1 1 0 が発展してきており、そ スを提供することがで に際しては、 したりすることを ただし、 の で林 CAT る。 、、、参照 ) のような tunneling 技術 なでも、外部向けサービ てきている。 立ロ 0 サービスを提供 ろもあるので、契約 きちんと読む必要がある。 残念ながら、 CATV 会社也域社なので、困った規約 があっても契約する会社択る自由はほとんどないのが 注 14 注 15 注 16 注 17 注 18 実情なのが残念なところ。あ 2000 No. 5 BSD magazine 23

5. BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー

集 M ッ了を作るプ collection で用意されている ports/net/ 適用するには、 ipfw(8) コマンドで、 ppp-nt の ppp である。標準コマンドの # ipfw —f flush /usr/sbin/ppp では、現在、 -nat オプショ # ipfw /etc/ipfw. conf ターミナルアダブタを使って、 ISP に ンにより、 Iibalias(4) を用いた NAT 機能 が拡張されている。 ports/net/ppp-nt ダイアルアップ接続する際には、 Free とする。 ( 以下 ppp-nt) は、 2.2.7-RELEASE に付 BSD Box にターミナルアダブタをシリ 実際は、 OS の起動時に直ちに有効 属していた ppp ( 8 ) (/usr/sbin/ppp) をベ になるように、 /etc/rc. conf に設定して アル接続し、 ppp ( 8 ) を使ったダイアル ースに、 NAT 機能とタイムスケジュー アップ接続の設定をする必要がある。 おくのがよいだろう。そのようにする ル機能を加えた ppp である。この頃の ppp ( 8 ) コマンドは、大野俊治さん には、リスト 5 の設定を /etc/rc. conf に追 (tony-o@ii.」.ad.jp) の IIJ-PPP と呼ばれ リリースに付属している ppp(8) では 加する。 NAT 機能が十分に追加されていなかっ る、トンネルデバイスを使ったユーザ firewall_enable は ipfirewall を有効に たため、佐藤淳一さん (junichi@con ーランドの PPP プログラムをベースに機 するかどうかの指定である。この値が 能追加・改良を加えていったものであ " YES " であれば、以降の設定が有効に figure. sh 、 http://configure.sh/FreeBSD/ NAT/nat. html) によって、 NAT 機能が る。 なる。 拡張されたものだ。また、 NTT のテレ FreeBSD では 2 つの種類の ppp コマン firewall—script は ipfirewall の設定を口 ホーダイサービスの普及に伴い、山本 ードするためのスクリプトの指定であ ドが選択可能である。標準コマンドと 茂さん (shigeru@bremen.or.jp 、 http. して付属している /usr/sbin/ppp と ports る。特に特殊なことをしたい場合でな い限りは、 FreeBSD 標準で用意された /etc/rc. firewall を使用するとよいだろう。 firewa11_enab1e="YES" firewall—type は、 firewall—script で指 firewall—script="/etc/rc. firewall" 定されたスクリプト中で使用される変 firewall—type="/etc/ipfw. conf " 数だ。 /etc/rc. firewall スクリプトでは、 firewa11—quiet="YES " open/client/simple/closed/UNKNOWN/ ファイル名のいずれかのタイプになる。 上記の例では、ファイル名のタイプで 使用している。 firewall—quiet は、 ipfw でフィルタリ ングルールをロードしたときにコンソ ールに表示しないかどうかを指定する。 この値が、 " YES " であれば、コンソー ルに表示しない。 /etc/ipfw. conf のセキ ュリティ配慮と同様に こではコン ソールに表示しないという設定にする。 上記のとおり設定した後にマシンを reboot すると、バケットフィルタリング が有効になる。 現在、設定されているフィルタリン グルールは、 an タ : ル マリスト 5 /etc/rc. conf 追加分 表 1 ネットワーク環境 接続工ントリ名 ispdialup COMI (si00) n0 ISDN 同期 64K ( B チャンネル ICH ) OX-AAAA-BBBB 、 OX-CCCC-DDDD f00 bar PAP ℃ HAP 両方サポート TA を接続するシリアルポート 使用するトンネルデバイス 接続速度 旧 P アクセスポイント 旧 P アカウント名 旧 P パスワード名 旧 P アカウント認証方法 ISP Dialup Network X. Y. Z. x / 24 tunO COM 1 (sioO) FreeBSD Box edO: 192.168.0.1 192.168.0. x / 24 Personal Network Ethernet # ipfw —a list で確認できる。 図 2 57 BSD magazine 2000 No. 5

6. BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー

追加したい処理を記述できる。標準の もしくは設定ファイル内に //www.bremen.or.jp/shigeru/FreeBSD/pp p. html) によって、 ppp 接続の時間を サンプル設定ファイルは、 /usr/share/ 制限できるタイムスケジュール機能が examples/ppp 以下に用意されている。 enable nat yes 拡張された。 Ondemand ダイアルアップの設定は、 これらの 2 つの ppp コマンドの設定は と記述することで使用できる。実際の /usr/share/exmaples/ppp/ppp. conf の 若干違うので、 こでは両方の設定に pmdemand 工ントリの設定を参考にす 設定は、リスト 6 、 7 のようになる。 ついて簡単にふれることにする。 る。 ports/net/ppp-nta ppp ( 8 ) を使う前に /usr/sbin/ppp 編 Ports/Packages Collections で提供され トンネルテパイスの構築 これは、標準で付属している / usr / る ports/net/ppp-nt の ppp コマンドを使用 ppp コマンドはカーネルのトンネルデ sbin/ppp コマンドを使用する際の設定 する際の設定である。 N 酊機能は、設 バイス (tun) を用いてユーザーランド である。 NAT 機能は - nat オプション、 定ファイルに以下の書式で設定する。 で実装されたプログラムなので、使用 するためにはカーネルにこのデバイス が組み込まれている必要がある。そこ で、カーネルコンフィグレーションフ ァイルに、次のカーネルオプションを 追加して、カーネルの再構築を行う。 マリスト 6 /etc/ppp/ppp. conf default : device /dev/cuaa0 set timeout 180 set redial 10 set openmode active set speed 115200 set 10g Phase Chat LCP IPCP CCP tun command set dial "ABORT BUSY ABORT NO**sCARRIER TIMEOUT 5 \ " \ " AT \ set OK—AT—OK ATEIQO OK **dATDT**T TIMEOUT 40 CONNECT" # Syncronized PPP ( 64K ) for NEC Aterm (AT$NI=I) set dial "ABORT BUSY ABORT NO**sCARRIER TIMEOUT 5 \ " \ " AT \ OK—AT—OK ATEIQO$NI=I OK **dATDT**T TIMEOUT 40 CONNECT" pseudo—deviced tun 1 カーネルを再構築した後に、 トンネ ルデバイスの作成を行う。 # cd /dev # . /MAKEDEV tun0 トンネルデバイスの確認は、以下の ようにする。 # ifconfig tun0 tunO 診・f1agS=8010 く POINTTOPOINT , MULT 工 CAST> mtu 1500 # # # ISP Dia1up ispdialup. set phone OX—AAAA—BBBB IOX—CCCC—DDDD set timeout 0 enable predl deny lqr # NAT enable nat yes # PAP/CHAP set login accept pap accept chap set authname f00 set authkey bar # Dynamic IP for aut0 mode set ifaddr 10.0.0.1 / 0 10.0.0.2 / 0 255.255.255.0 0 . 0 . 0 . 0 add default HISADDR 、や p すンドを使う準備がで 以き 9 環境、、 上うよ環境とする。 構成な図 2 の通りである。 p ) 設定フィル 、 /etc/ppp/ た /etc/ppp ゆ pp ・ でコネク ンクが確 された際に 20 0 N 5 マリスト 7 /etc/ppp/ppp 」 inkup YADDR : delete ALL add 0 0 HISADDR PPP ・ co linkup シ 52 、 B magazin

7. BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー

マリスト 3 dtcpc を起動するスクリプト はない。 筆者が自宅の LAN をこの環境に移行 して約二ヶ月たった。使い勝手は良好 である。現在、 jp.FreeBSD.org などい くつかのメーリングリストが IPv6 で配 送されるようになってきているので、 プロバイダのメールサーバーを利用し ていたときよりも使い勝手が上がって いる。 職場で IPv6 が使えるか、あるいは IPv6 接続されたサーバーにアカウント がある方ならば、ぜひともお勧めした い。そうでない場合には実用よりも趣 味的な要素が強くなってしまうが、趣 味と割りきって試してみてはどうだろ 0 # ! /bin/sh export PATH=/usr/10ca1/bin : /usr/bin : /usr/sbin : /bin: /sbin export LANG=C log=/var/log/dtcpc ・ 10g host=servername . hoge ・ jp while true do 、 date 、 > > $ 10g echo ruby /usr/local/sbin/dtcpc —n $host > > $ 10g tunnelroute 2 > & 1 sleep 120 done マリスト 4 DNS の設定 mx. f00. bar . jp mx. f00. bar ・ jp どこか別の場所にあるサーバー IPv6 でのみ見えるサーバー 5 〒亠〒上ャ亠 H www. f00 . bar . jp f00. bar. jp mx. f00. bar ・ jp NAT 環境の場合 本文で書いたように、 DTCP は NAT 環境下では基本的に使 うことはできない。ただし、 NAT のインプリメントによって は、 ま tFreenet6. net でのトンネル設定、 Web で入力する "your lPv4address" には、 globa ーアドレスを入力しておく。 その後、通常は Freenet . et でくれる設定スクリプトを使 えばトンネルが設定され クリプトを使わずに手 NAT の下で private アドレスを持ったマシンか、外部からは 動設定しなけれはならな et6. net ではリストのよう ある g ba Ⅱ P アドレスを持っているように見える な情報がもらえ 面のように手動設 定すればよい。 pi て : e ーが応答するか . et の ことがある。外部からの接続を特定の pr ⅳ ate 旧 v4 アドレスに どうか確認して、応答しオ ン、レ作成成功である。 振る機能が NAT にある場合は、 これを有効にしてみるといい に寸応するためのパッチを作 DTCP については、 だろう。 成してあるので、パッチラ tcpc を -n オプションっきで起動 筆者環境も実はこれで、多少工夫する必要があった。 すればよい。 0 ~ Ⅱ マリスト Freenet6. net でもらえる情報 3ffe:XXXX:XXXX:XXXX:0:0:0:XXXX Your IPv6 addre s s Freenet6 IPv6 address (server side) 3ffe:XXXX:XXXX:XXXX:O:0:0:XXXX Freenet6 工 Pv4 address (server side) : XXX. XXX. XXX. XXX Your 工 Pv4 addre s s : XXX . XXX . XXX . XXX # gifconfig gif0 く my private lPv4 address> く Freenet6 IPv4 address> # ifconfig gif0 inet6 く my 工 Pv6 address> く Freenet6 工 Pv6 address> prefixlen 127 # route add —inet6 default く my IPv6 address> 画面手動設定する 20 0 N 5 B magaztn

8. BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー

FreeBSD の ipfw とのa記による 田岡智志 / TAOKA Satoshi NAT の実現方法 taoka@FreeBSD.org は・め「 企業や大学にインターネットなどの グローバルなネットワークが十分整備 されてきたが、最近は、 OCN 工コノミ 手を画期的に向上させるために、フ 勝手悪くな。てしまう。結局、使い イアウォール内に入れた計算機は使い 入れることになるのだが、通常、ファ 構築し、そのローカルネットワークに の軽減のために、ファイアウォールを そこで、資源の節約や管理者の負担 安全対策を施さなければない。 があり、そして、それぞれの計算機に するには、 IP アドレスを確保する必要 多くの計算機をグローバル空間に接続 る場面がずいぶん増えてきた。しかし、 カードを介してネットワークに接続す でなく家庭においても、ネットワーク できている。よって、企業、大学だけ グローバルなネットワークが入り込ん サービスが普及したことで、家庭にも 、ケープル TV などの安価な常時接続 紹介する。なお、これ以外にも前節 ( または FreeBSD の場合だと後述のコラ ム参照 ) の 1PFi1ter を用いて構築する ことも可能である。 なお、本稿では natd は FreeBSD 以外 の 0 s には移植されていないので FreeBSD のみを対象とし、また、 OS の バージョンは 4.1 ー RELEASE とする。た だし、最近のバージョンならば同様に 設定することが可能であろう。 td ご 0 NA 能の 機能 が 注 1 pp 4 ーレゲートウェイに NAT になる。この構成 ーの両方を満足さ なるであみう 6 そこで、 ~ 機能を持 , せるためのゲ 本稿では図 1 ( 1 ) のようなネットワー ク ( デュアルホームホストアーキテク チャ ) を想定して注 1 、これに対する設 定例を示す。ただし、グローバルアド レスによる実例では問題の起こる恐れ があるので、外界もローカルアドレス にしている。それでは、最初に図 1 を 使って natd の動作の概要を述べる。 図 1 の ( 1 ) では、ゲートウェイのホス ト名が HostGW で、これが NAT 機能を 使ってバケットを中継している。 HostGW は、ネットワークインターフェ イス ed0 とⅸ p0 をもっており、それぞれ が内部および外部ネットワークに接続 している。また、この図では内部ネッ トワークの HostA から外部ネットワー クの H 。 stB への通信の様子を示してお た、図 1 の ( 2 ) の太線は ( 1 ) の返信が通る 経路を示している。 これらの経路の中で、注目すべき点 は、 divert 注 2 ソケットと natd デーモンで ある。図 1 ( 1 ) および ( 2 ) それぞれの場合 に、 HostGW が ed0 またはⅸ p0 で受け取 ったバケットがⅸ p0 を通るまたは通っ たものならば、それを divert ソケットを 経由して、 natd デーモンに渡している。 そして、 natd によりバケット内の IP ア ドレスを変換するなどの作業が行われ、 外部または内部のネットワークに送り 出している。 もう少し詳しく見ていこう。図 1 ( 1 ) では、 ( 始点 : HostA 、終点 : HostB) のバケットを H 。 stA が送り出し、 Host GW がそれを受け取っている。このと き、 HostA のデフォルトルータは Host GW を指定しておく必要があるので注 意してもらいたい。これは、ファイア ウォール内のすべての計算機も同様で ある。これにより、外部に流す必要の あるすべてのバケットを HostGW が受 け取ることになるからである。そして、 HostGW はこのバケットが、 fxpO を経 由して外に送り出す必要があることを 知る。あらかじめグローバル空間への 出入り口であるⅸ p0 を経由するバケッ トは、 divert を経由して natd に渡すこと にしているので、このバケットを natd に渡し、その内部の始点を H 。 stA から ee 、不ルア の節 の ipfw と、 natd を デ ) い構築方法を り、その経路を太線で示している。ま の意味は「 注 magazin ・続する場合でも natd による NAT 機能を利用することが可能だが、この場合、本誌の福島氏による「ダイアルアップサーバーの構築 5 、方向転換する」。 示した、・ p と NAT 機能付 ppp を用いるのが一般的である。 O N 2 きに

9. BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー

接続 ()n Demand ダイアルアップ接続 ) 制的に終了させたい場合は、単純に IP ⅱ lter に含まれる ipnat というコマンド の設定が可能である。この場合も基本 pppd のプロセスを ki Ⅱすればよい。たと を使用することで実現できる。 IPfilter 的な設定は手動ダイアルアップとほと えばテレホーダイの時間帯だけを On を利用するためには、 んどの部分は共通である。違うのは、 Demand ダイアルアップするように設定 options GATEWAY peers/—ファイルで On Demand 用の接 するためには、 cron で pppd の起動 / 強制 pseudo—device ipfilter 続設定を追加するだけなので、たとえ 終了を行うようにシェルスクリプト等 ば前述の ispdialup と同じところに対し を実行すれば良いだけである。 の二つが記述された c 。 nfig ファイルを て 0n Demand 接続するための接続名を 使用して作ったカーネルを使用する必 て着信の設越 ispdialup-demand とするとリスト 2 のよ 要があるので、ますはこの点を確認し うな設定を行えばよい。 たほうがいいだろう。特に前者は demand オプションを指定する場合、 自動発信が可能になったところで、 GENERIC カーネルではコメントアウト 何らかの接続先の IP アドレスが必要と ついでに外部からの接続も可能となる されている。その状態であっても なるため、仮の値 ( 192.168.2.1 ) を指 ようにしておこう。 pppd を着信用に設 定し接続時のネゴシェーションによっ 定しておくことで、外出先等から自分 sysctl —w net . inet ・ ip. forwarding=l て接続後に利用するアドレスで上書き のサーバーへダイアルアップすること する。ダイアルアップ先から IP アドレ もできる。ただし、この場合は対象と とすれば rebo 。 t 等しない間であれば利 スが指定される場合には、 ipcp-accept- なるマシンが予め起動されていなけれ 用できるが、できればカーネルを作り ばならないと言う問題がある注 2 。ダイ 10Ca1 、 ipcp-accept-remote の二つカ必要 直しておいたほうが良いと思う。 となる。このような設定を行っておけ アルアップ着信の設定は発信のときと IP filter の実行は /etc/rc. conf 中で指定 同様に行った後、 options. tty00 等の着 ば、 することができる。 信用のポート設定を用意する。最後に ipfi1ter=NO /etc/ttys で getty の代わりに pppd を使用 pppd call ispdialup-demand ipnat=NO するようにしておけば良い。たとえば ipmon=NO と予め実行しておくことによって、外 tty00 を着信用に使用するのであれば、 部へのバケットを検出して自動的にダ tty00 の行をリスト 3 のように変更して と記述されている部分があるので、 イアルアップ ppp 接続を行うようにな おく。 れらを YES に変更すればよい 0 lpmon る。この設定を行う際に注意する点と 着信と OnDemand ダイアルアップを に関しては NAT を利用するだけであれ しては、予期しないバケットによって 組み合わせて次に紹介する NAT の設定 ば不要であるが、バケットログを監視 知らないうちに何度もダイアルアップ を行うことで、その気になれば技術的 する場合に使用することができるので、 してしまうという状態を避けることで にはミニプロバイダもどき的な利用も YES にしておくといいだろう。 NAT を あ ( ' このため、ダイアルアップのき 可能となる注 3 。 利用するにはこれらを YES にするだけ かけとなるバケットを制限するため ではだめで、他にもいくつかの設定フ (active-filter 等 ) も用意 ァイルを用意する必要がある。 使用した ppp 接続を強 マリスト 3 /etc/ttys の一部 いイツ 定 の NetBSD で NAT の設定を行う場合、 "/usr/sbin/pppd" dialup 0 Ⅱ ttyOO 注 2 w 朝が 0 、使用、きれば外出先からダイアルアップしたときに自動的に起動して、接続するという芸当もできると思われるが、残念ながら今のと 亟ぎ U On 他等を利用でる OS は筆者の知る限りでは Wind 。 ws 系のみである。 よプな接続を認めそいるプロバイダが世の中にどの程度存在するかに関しては筆者はまったく確認していない。恐らくほとんどのプロバイダ 三 .3 禁止していふ、 ないとしても好印象を持っということはないのではないかと思う ; - p 。 58 B magazin 20 C) N 5

10. BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー

dtcp を使って IPv6YeachabIet&l 環境を実現する 今野元之 /Motoyuki Konno motoyuki@FreeBSD.org IPv6 over IPv4 トンネルを掘れば、自 メールサーバーや web サーバーなど好 宅 LAN の各マシンに IPv6 アドレス注 2 を きなことができるのだ。 振って外からアクセスすることができ NTT 地域会社の IP 定額接続サービス るじゃない、そう考えたのがこの話の 「フレツツ・ ISDN 」や CATV インター 始まりである。 さて、何が可能になるのだろうか ? ます、 IPv6 に対応した * BSD サーバ ネットによって、インターネットへの 一言でいうと、 ーを用意する。この記事では FreeBSD 常時接続がかなりの勢いで普及してき ている。しかし、固定した IP アドレス 4. I-RELEASE を用いるカゞ、 NetBSD 1.5 ・自分の各マシンに世界中からアクセ を振ってくれない業者は多い。 CATV ( この秋にリリース予定 ) 、 OpenBSD インターネットなどでは業者の選択の 2.7 などを使っても良いだろう。 スできる。 余地はほとんどないので、「出先から自 次にネットワーク接続だが、サーバ 宅のマシンにアクセスしたい」と思っ となる。世界中 ( 1Pv6 な世界に限られ ーとなるマシンに IPv4 のグローバルア ても不可能汨なユーザーは多いだろう。 てしまうが ) から自宅 LAN の各マシン ドレスが振られていることが必要とな る。その IPv4 アドレスが固定している 筆者もその一人である。 にアクセスすることができるのだから、 は・めに もの インターネット プロバイダ インターネット プロバイダ IPv4 グローバルアドレス 図 1 今回の記事で想定している環境 NAT サーバー lPv4 グローバルアドレス ( 非固定 ) 旧 v4 プライベートアドレス 手元のサーバー 図 2 NAT 環境の例 当てらた IP ア レを定期的にどこかの web に載せるといった工夫をしている人は結構いるようだ。 ではグローノ、レ IPv レスという意味で使っている。 注 1 注 B magazin 20 0 N 5