このページでは、FreeBSDがインストールされたコンピュータを利用して、ADSL/光等のインターネット接続を複数のコンピュータで共有して利用する方法を紹介します。
まず、インターネット接続を複数のPCで共有するには、FreeBSDがインストールされたPCがルータとして動作する必要があります。
ルータは2つのネットワークの間を繋ぐ装置ですので、当然2つのネットワークインターフェースが必要です。
それぞれのネットワークインターフェースに、ADSL/VDSL/光モデムと、ネットワークハブを下記のように接続してください。
ADSL/VDSL/光モデムについては、機器にルータ機能がついている場合はその機能を切り、コンピュータとの接続方式を予めPPPoEに変更しておく必要があります。
機器の設定方法については、それぞれの機器に付属するマニュアルをご確認ください。
以下では便宜上、ADSL/VDSL/光モデムを接続したネットワークインターフェースを「外部ネットワークインターフェース」、ネットワークハブを接続した方を「内部ネットワークインターフェース」と呼ぶことにします。
ADSL/VDSL/光モデムとの通信に利用するPPPoEと、内部ネットワークインターフェースでネットワーク接続の共有に利用するNAPTを有効にするために、kernelコンフィグファイルに、以下の記述を追加して再構築します。
options IPDIVERT options IPFIREWALL options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=100 options NETGRAPH options NETGRAPH_ETHER options NETGRAPH_PPPOE options NETGRAPH_SOCKET
再構築されたkernelは、デフォルトでファイアウォールが有効になります。
このため、telnet等でリモートから作業している場合、再起動後にPCに一切接続できない状態に陥ってしまいます。
この現象を回避するために、再起動後にファイアウォールが有効にならないよう、「rc.conf」に以下の記述を追加しておきます。
firewall_type="OPEN"
上記の手順を踏んだ後、再構築されたkernelを起動させるため、システムを再起動させてください。
次に、FreeBSDがインストールされているコンピュータが単独でインターネットに接続出来るよう、設定を行います。
接続には「ppp」を利用します。
「/etc/ppp/ppp.conf」を下記のように編集してください。
default: set device PPPoE:fxp1 set dial set login set redial 5 28800 set reconnect 5 28800 default-profile: set log Phase Chat LCP IPCP CCP tun command set speed sync set mru 1492 set mtu 1454 set ctsrts off set timeout 0 accept CHAP add default HISADDR set authname xxxxxx@xxxxxx.xxx set authkey xxxxxxxx accept lqr enable lqr enable tcpmssfixup
「set device PPPoE:fxp1」の「fxp1」の部分には、自分の環境に合わせてPPPoEに利用する外部ネットワークインターフェースを指定してください。
また、「set authname xxxxxx@xxxxxx.xxx」および「set authkey xxxxxxxx」のxxxx部分には、ISPから通知された接続IDおよびパスワードを指定してください。
また、システムの起動時に自動的にpppセッションが張られるよう、「rc.conf」に下記の記述を追加します。
ppp_enable="YES" ppp_mode="ddial" ppp_profile="default-profile" ppp_nat="NO"
上記の設定が終わったら、システムを再起動してください。
再起動後、「ifconfig」を利用してpppセッションが正しく張られているか確認してください。
$ ifconfig tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1454 inet xxx.xxx.xxx.xxx --> yyy.yyy.yyy.yyy netmask 0xffffffff Opened by PID xxx
上記のように、「tun0」に正しくIPアドレスが割り当てられていれば成功です。
上記の設定が正しく出来ていれば、PCはインターネットに接続された状態になっています。
今度は、このインターネット接続をNAPTを利用して複数のPCから共有できるようにします。
まず、「rc.conf」に以下の記述を追加してください。
natd_enable="YES" natd_interface="tun0" natd_flags="-dynamic"
上記のように設定した後、システムを再起動することにより、「tun0」に対してNAPTを動作させます。
次に、「ipfw」を利用して、実際に「tun0」のパケットをアドレス変換させる設定を行います。
まず、「ipfw」のルールを有効にするために、「rc.conf」に以下の記述を追加します。
firewall_enable="YES" #firewall_type="OPEN" firewall_script="/etc/firewall/rules_default" gateway_enable="YES"
「firewall_type="OPEN"」の記述は、今まで便宜上ファイアウォールの機能を無効するために利用していた記述です。
ファイアウォールのカスタムルールを有効にするために、上記のようにコメントアウトするか、記述を削除してください。
最後にファイアウォールのルールを設定します。
NAPTの設定もこのファイアウォールのルール設定内で行います。
前項「ipfwの設定」で、「/etc/rc.conf」内に「firewall_script=」で指定したパスに、以下のようなルールファイルを作成して保存します。
fwcmd="/sbin/ipfw -q" int_if="fxp0" # → 内部ネットワークインターフェース(必要に応じて変更) ext_if="tun0" # → PPPoE上の仮想ネットワークインターフェース(外部接続) ${fwcmd} -f flush # → ルールを初期化する ${fwcmd} add divert natd ip from any to any via ${ext_if} # → 外部I/Fを通過するパケットをNAPTする ${fwcmd} add allow ip from any to any via lo0 # → ループバックI/F経由のパケットはすべて許可する ${fwcmd} add allow ip from any to any via ${int_if} # → 内部I/F経由のパケットはすべて許可する ${fwcmd} add allow ip from any to any out via ${ext_if} # → 外部I/F経由でインターネット側に出てゆくパケットはすべて許可する ${fwcmd} add allow tcp from any to any in via ${ext_if} established # → 外部I/F経由で内部ネットワークに到達するTCPパケットは、establishフラグが立っているもののみ許可する ${fwcmd} add allow tcp from any to me 25 in via ${ext_if} # → 外部I/F経由でこのサーバの25番ポート(SMTP)へのTCPパケットを許可する ${fwcmd} add allow tcp from any to me 80 in via ${ext_if} # → 外部I/F経由でこのサーバの80番ポート(HTTP)へのTCPパケットを許可する ${fwcmd} add allow tcp from any to me 443 in via ${ext_if} # → 外部I/F経由でこのサーバの443番ポート(HTTPS)へのTCPパケットを許可する ${fwcmd} add allow udp from any 53 to any in via ${ext_if} # → 外部I/F経由でこのサーバの53番ポート(DNS)へのUDPパケットを許可する ${fwcmd} add allow udp from any 123 to any in via ${ext_if} # → 外部I/F経由でこのサーバの123番ポート(NTP/SNTP)へのUDPパケットを許可する ${fwcmd} add deny log ip from any to any in via ${int_if} # → 上記以外の内部I/F経由でパケットを拒否し、ログをとる ${fwcmd} add deny log ip from any to any in via ${ext_if} # → 上記以外の外部I/F経由でパケットを拒否し、ログをとる
上記のルールでは、外部からのHTTP/HTTPS/SMTPと、DNS/SNTPパケットを許可しています。
外部に公開したり、内部で利用するサービスによって、ルールを適宜調整してください。
また、このルールではICMP(ネットワークの疎通確認やメンテナンスに利用するプロトコル)については考慮していません。
必要に応じて、ICMP関連のエントリを追加してください。(大抵の場合、このままで困らないはずです。)
設定が完了したら、設定を有効にするためにシステムを再起動させてください。
クライアントPCでインターネット接続を利用する際は、クライアントPCのデフォルトゲートウェイを上記で設定したルータマシーンのIPアドレスに設定してください。
デフォルトゲートウェイの設定については、OS等で設定方法が若干異なります。
以下にWindows 2000での設定方法を紹介します。
まず、デスクトップの「マイネットワーク」を右クリックし「プロパティ」を選択します。
以下のような表示がされると思います。
ウインドウ内の「ローカルエリア設定」を右クリックし「プロパティ」を選択します。
以下のような表示がされると思います。
「インターネットプロトコル(TCP/IP)」を選択し、その下の「プロパティ」を選択します。
環境に合わせ「IPアドレス」「サブネットマスク」「デフォルトゲートウェイ」を設定してください。
クライアントPCのIPアドレスは、ルータマシーンのIPアドレスと同一のネットマスク上に存在する必要があります。
「OK」を選択すれば、設定は完了です。
本ページで設定したファイアウォールのフィルタリング状況を確認するには、下記のようにします。
$ ipfw -a list
上記のようにすることにより、設定済みのファイアウォールのルールと、そのルールにより許可/拒否されたパケット数を確認することが出来ます。
また、ファイアウォールのルールで「log」が指定され、実際にそのルールに当てはまるパケットを受信した場合、「/var/log/security」にそのパケットの詳細情報が保存されます。
必要に応じて確認してください。
・ipfwのルールを現在利用しているものに変更。
・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。
まだ評価がありません |
表示できるメッセージはありません。