sysctl
コマンドを使って、# sysctl net.ipv4.ip_forward = 1と実行すればよい。起動時からルーティングを有効にしたいなら、
#
/etc/sysctl.conf
の中の対応する部分(見れば判る)を変更する。なのだが、ものの頁には、
/etc/sysconfig/network
の中に、FORWARD_IPV4=yes
を追加すればよい、と書いてある。これは、昔のRed Hat系ディストリビューションなんかでは正しいようなのだが、少なくとも、FC5では正しくないようだ。実際、/etc/init.d/network
の中を眺めてみても、この変数を処理する部分は無いようだ。と、言う事実を知らず、Linux機をルータに仕立てる作業をしていたのだが、ここでハマってしまった。ルーティングしていない、ということであれば、単に通信ができないという症状になるので、すぐに気付きそうなものだが、そう単純ではないのだ。
例えば、Linux機をrouter1としよう。これには二つのインターフェースeth0およびeth1が付いているが、上のように間違った設定をしているため、ルーティングは無効になっている。このeth0側にpc1というマシンを接続する。このpc1(に割当てたIPアドレス)とeth0(に割当てたIPアドレス)の間の通信ができるよう設定し、pc1のデフォルトルートは、eth0に向ける。この状態でpc1から、eth1(に割当てたIPアドレス)へのHTTPは、ルーティングされないので、当然接続を確立できない。ここまでは想定内だ。
しかし、pc1からeth1へのPINGは正常に応答があるのだ!これが理解できなかったので、非常に苦労した。
0 件のコメント:
コメントを投稿