- - PR -
クライアントPCの名前解決ができない
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-05-27 09:40
Kaz様フォローありがとうございます。 まったくそのとおりです。 私としては、現状確認で書いただけですが。。。 ルール的には似たような書き方で実現出来ると思うので HTTPリクエスト通す設定が出来るのならDNSリクエスト通す設定も出来るはず。。。 などと淡い期待を持って書きました。 ポリシーについてはKaz様が言及されているのでそちらを。
導入されています。 ↓ここ何気に便利です。 http://h50146.www5.hp.com/products/software/oe/linux/support/matrix/rpm.html | ||||||||||||
|
投稿日時: 2004-05-27 15:37
=========/etc/dhcpd.conf
subnet 192.168.0.0 netmask 255.255.255.0{ range 192.168.0.2 192.168.0.17; option subnet-mask 255.255.255.0; option routers 192.168.0.1; option broadcast-address 192.168.0.255; option domain-name "shigizemi.com"; option domain-name-servers 218.176.253.97,218.176.253.65; } 上記のdhcp serverの設定ですが option domain-name "shigizemi.com"; の部分を option domain-name "bbtec.net"; して試してみては。 | ||||||||||||
|
投稿日時: 2004-05-27 16:36
kaz様
レス、ありがとうございます。 結論から先に申し上げますと、クライアントPCからインターネットに接続できました。 もちろん、ping ホスト名も飛びました。 でも、変です。 では、ipchainsの現状を見てください。 [root@linux root]# ipchains -L Chain input (policy ACCEPT): Chain forward (policy ACCEPT): target prot opt source destination ports MASQ all ------ 192.168.0.0/24 anywhere n/a Chain output (policy ACCEPT): ね。 あまりにもスッキリしすぎだとは思われませんか。 「何をしたんだ!」とお叱りにならないでください。 正直、私にもよく分かりません。が、クライアントPCがインターネットに接続 できた喜びに浸っているところです。でも、一抹の不安もあります。 kaz様のご指摘の通り
を実行してみました。が、変かが見られませんでした。 でも、kaz様のアドバイスを自分なりに読み砕いて、いくつかのホームページを 参考にChain input部のdns-a.bbtec.netやdns-b.bbtec.netを削除してみたり変更したり。(ちなみに、dns-a.bbtec.netやdns-b.bbtec.netはyahooBBのdnsサーバーだと思います。ipchain -n -Lで表示されたIPアドレスが同じだったから) 変更しても、再起動すれば設定は保存されないとあったので(あるホームページに)、どんどん変更していましたら、3回程再起動したときに以上のような状態になっておりまして、それで、 クライアントPCからあっけなくインターネットに接続できました。 しかし、この"Chain input (policy ACCEPT):"ってよろしくないんですよね。 「どこからでも、ぜーんぶ入ってらっしゃい!」って誘ってるようなものなんでしょ。 簡単に、初期の状態に戻せないのかなぁ......。ダメなら、自分で、ルールを追加するしかないですかね。勉強と思ってやってみようかな。 結局、kaz様のご指摘の通りChain inputの
という部分が怪しかったんですね。 今となっては、全部消えてしまってその痕跡は見られませんが。 多分、きっとそうです。間違いない。 anights様 レスありがとうございます。 さっそく指定されたホームページを見させて頂きました。 ありましたね。私の勉強不足でした。確かに、便利そうな所なので、さっそくBookmarkです。 たら様 レスありがとうございます。
なるほど、それも試してみる価値は十分にありそうです。 が、上で書いたように、なんでか、つながってしまったので、またの機会に是非やって みます。(たぶん、すぐ試すことになるかも) まぁ、今週いっぱいかけてipchainsのルールを作成するか、 もうこのさい、iptablesの設定を調べてそっちで行こうかな。 .....................................iptabesに挑戦します。 | ||||||||||||
|
投稿日時: 2004-05-27 20:47
こんばんわ.
確かに.いろいろやったんでしょうね〜 (^^; んでは雑談を. まず最初に,下記のように実行すると良いでしょう. # ipchains -F # ipchains -P input DENY # ipchains -P forward DENY # ipchains -P output DENY 順番に説明すると, ipchains の設定は全部捨て input は拒否する forward は拒否する output は拒否する となります. # ipchains -A input -i ! lo -j DENY # ipchains -A output -i ! lo -j DENY # ipchains -A forward -j DENY でも良いかも.この場合は input も output も loopback 以外は拒否する となります. その後, # ipchains -A input -i lo -j ACCEPT とやって loopback を許可して,それから # ipchains -A forward -p udp -d "DNS server" domain -j ACCEPT などをはじめとした「許可 rule」を書いていきます. これらを script にしておくと,簡単に実行できて間違いも少なく,変更も容易です. はじめに -F するのがコツで,これで「今の rule は全部無かったことにする」ことが出来ます.で,-L しながら少しずつ script を調節していけばよろしいかと.最後に # /sbin/ipchains-save > /etc/sysconfig/ipchains か, /etc/init.d/ipchains save とします.
iptables のほうが考え方が「当たり前」な感じに変わっているのでよろしいでしょう.でもって,前述の script でやる方法はもちろん iptables でも同じです. ガンバってください. | ||||||||||||
|
投稿日時: 2004-05-27 22:18
kaz様
レスありがとうございます。 指示されたコマンドの内容が,だいぶん理解できるようになってきました。 今週末にかけてがんばってやってみます。 もちろん,iptablesです。 でも,安全のため,ipchainsの設定を指示の通りに明日やってみます。(今のまま,ネットに接続し続けるのは危険そうだから。) 結果報告をお楽しみにお待ちください。 | ||||||||||||
|
投稿日時: 2004-06-02 19:22
kaz様,たら様,anights様,okutin様へご報告です。
何とか無事にiptablesを使い,名前解決ができるようなりました。したがって,クライアントPCからごく普通にインターネットができます。さらに,クライアントPCを増やしwin98(2台)や無線LAN(2台)でもインターネットやLANに同時に接続できるようになりました。(かなり感激しています。) 週末,「iptables 設定」とgoogleで検索をかけ,役に立ちそうなホームページをすべてプリントアウト(約200枚程度,中には@IT様の記事やこの会議室の書き込みもありました)し,読みながら,打ち込みながら,接続を確かめながらとやって,やっと本日(6/2)無事に完了しました。これから,wwwサーバー,メールサーバーなどなどいろいろインストールしてさらに充実させていきます。また,壁にぶちあったって砕けそうになったときにはよろしくお願いします。本当にこのサイトに出会えてよかったです。一人だったらきっとあきらめていたかもしれません。 では,私の設定のための覚え書きをここから貼らせていただきます。 はっきりいって,かなり,不格好な設定です。使えそうなルールはすべて試してみましたので,不要なというか重複した設定もあるように思います。(まだ,ルールに設定されている意味を完全に理解しきっていません。)これからは,どのルールが不要かを確かめながら削除してもっとすっきりした形にしたいと思っています。 よろしかったら,アドバイスいやツッコミでも結構です。お願いします。 %%%%%%%%%%%DHCPのパケットはローカルネットワーク内だけに流す%%%%%%%%%%%%%%%%%%% /etc/sysconfig/dhcpd #Command line options here DHCPDARGS="eth1" #eth1:LAN側のインターフェース %%%%%%%%%%%%%2枚のLANカード間のフォワーディングを有効にする%%%%%%%%%%%%%%%%%%% /etc/sysconfig/network FORWARD_IPV4=yes GATEWAYDEV=eth0 #eth0:WAN側のインターフェース /etc/sysctl.conf net.ipv4.ip_forward = 1 %%%%%%%/etc/rc.d/rc.local%%%%%%%%%%%%%%%%% #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. touch /var/lock/subsys/local /usr/local/bin/DiCE/diced -d -l ##iptables関連のモジュールのロード /sbin/modprobe iptable_nat /sbin/modprobe ip_conntrack_ftp /sbin/modprobe ip_nat_ftp ##IPマスカレードの使用 echo 1 > /proc/sys/net/ipv4/ip_forward ##DHCPの使用 echo 1 > /proc/sys/net/ipv4/ip_dynaddr ##SYN Flood攻撃を防ぐ echo 1 > /proc/sys/net/ipv4/tcp_syncookies %%%%%%%%%%%%iptablesのルール表示%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [root@linux root]# iptables -L Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- localhost.localdomain localhost.localdomain ACCEPT all -- 192.168.0.0/24 anywhere ACCEPT tcp -- anywhere anywhere tcp spt:domain ACCEPT udp -- anywhere anywhere udp spt:domain ACCEPT udp -- anywhere dns-b.bbtec.net udp dpt:domain ACCEPT udp -- anywhere dns-b.bbtec.net udp spt:domain ACCEPT udp -- anywhere dns-a.bbtec.net udp dpt:domain ACCEPT udp -- anywhere dns-a.bbtec.net udp spt:domain ACCEPT tcp -- anywhere anywhere tcp dpt:http ACCEPT tcp -- anywhere anywhere tcp spt:http state RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere tcp spt:ftp-data state NEW ACCEPT icmp -- anywhere anywhere icmp echo-request ACCEPT icmp -- anywhere anywhere icmp echo-reply ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT tcp -- anywhere anywhere tcp dpt:pop3 ACCEPT tcp -- anywhere anywhere tcp dpt:smtp Chain FORWARD (policy DROP) target prot opt source destination ACCEPT udp -- anywhere anywhere udp dpt:domain ACCEPT udp -- anywhere dns-b.bbtec.net udp dpt:domain ACCEPT udp -- anywhere dns-a.bbtec.net udp dpt:domain ACCEPT tcp -- anywhere anywhere tcp dpt:https ACCEPT tcp -- anywhere anywhere tcp dpt:http ACCEPT tcp -- anywhere anywhere tcp dpts:ftp-data:ft p ACCEPT all -- anywhere anywhere state RELATED,ESTABL ISHED ACCEPT all -- anywhere anywhere state NEW,RELATED,ES TABLISHED ACCEPT icmp -- anywhere anywhere ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT tcp -- anywhere anywhere tcp dpt:pop3 ACCEPT tcp -- anywhere anywhere tcp dpt:smtp Chain OUTPUT (policy DROP) target prot opt source destination ACCEPT all -- localhost.localdomain localhost.localdomain ACCEPT all -- anywhere 192.168.0.0/24 ACCEPT udp -- anywhere anywhere udp dpt:domain ACCEPT tcp -- 192.168.0.0/24 anywhere tcp dpt:domain state NEW ACCEPT udp -- dns-b.bbtec.net anywhere udp dpt:domain ACCEPT udp -- dns-b.bbtec.net anywhere udp spt:domain ACCEPT udp -- dns-a.bbtec.net anywhere udp dpt:domain ACCEPT udp -- dns-a.bbtec.net anywhere udp spt:domain ACCEPT tcp -- anywhere anywhere tcp dpt:https state NEW ACCEPT tcp -- anywhere anywhere tcp spt:http flags:! SYN,RST,ACK/SYN state NEW,RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere tcp dpt:http ACCEPT tcp -- anywhere anywhere tcp dpt:ftp state NE W ACCEPT tcp -- anywhere anywhere tcp dpts:1024:65535 state NEW ACCEPT icmp -- anywhere anywhere icmp echo-request ACCEPT icmp -- anywhere anywhere icmp echo-reply [root@linux root]# [root@linux root]# iptables -L -t nat Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination MASQUERADE all -- 192.168.0.0/24 anywhere Chain OUTPUT (policy ACCEPT) target prot opt source destination [root@linux root]# %%%%%%%%%%%%%%%%%/usr/local/iptables.sh%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% #!/bin/sh ## ##環境設定 ## ##iptablesのパス IPTABLES='/sbin/iptables' ##WAN側のインターフェース FW_OUT='eth0' ##LAN側のインターフェース FW_IN='eth1' ##LAN側のネットワークのIPアドレス LOCAL='192.168.0.0/24' ## ANY='0.0.0.0/0' ##filterのチェーン初期化 $IPTABLES -F $IPTABLES -X $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP ##filterのルール作成 ## ##自分自身は許可 $IPTABLES -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT $IPTABLES -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT ##$FW_IN(内部)からのアクセスは全て許可 $IPTABLES -A INPUT -i $FW_IN -s $LOCAL -j ACCEPT $IPTABLES -A OUTPUT -o $FW_IN -d $LOCAL -j ACCEPT ##接続が区立したパケットの応答は許可 #IPTABLES -A INPUT - i $FW_OUT -m state --state ESTABLISHED,RELATED -j ACCEPT #IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ##DNSの問い合わせは許可 $IPTABLES -A INPUT -p tcp --sport 53 -j ACCEPT $IPTABLES -A INPUT -p udp --sport 53 -j ACCEPT $IPTABLES -A OUTPUT -p udp --dport 53 -j ACCEPT $IPTABLES -A OUTPUT -p tcp -m state --state NEW -s $LOCAL --dport 53 -j ACCEPT $IPTABLES -A FORWARD -i $FW_IN -p udp --dport 53 -j ACCEPT $IPTABLES -A FORWARD -p udp -d 218.176.253.97 --dport 53 -j ACCEPT $IPTABLES -A FORWARD -p udp -d 218.176.253.65 --dport 53 -j ACCEPT ##DNS=>local $IPTABLES -A INPUT -p udp --dport 53 -d 218.176.253.97 -j ACCEPT $IPTABLES -A INPUT -p udp --sport 53 -d 218.176.253.97 -j ACCEPT $IPTABLES -A INPUT -p udp --dport 53 -d 218.176.253.65 -j ACCEPT $IPTABLES -A INPUT -p udp --sport 53 -d 218.176.253.65 -j ACCEPT ##local=>DNS $IPTABLES -A OUTPUT -p udp --dport 53 -s 218.176.253.97 -j ACCEPT $IPTABLES -A OUTPUT -p udp --sport 53 -s 218.176.253.97 -j ACCEPT $IPTABLES -A OUTPUT -p udp --dport 53 -s 218.176.253.65 -j ACCEPT $IPTABLES -A OUTPUT -p udp --sport 53 -s 218.176.253.65 -j ACCEPT ##WWWサーバーと外部WWWサーバーへのアクセス許可 ##$IPTABLES -A INPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT ##$IPTABLES -A OUTPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT ##WINDOWS UPDATEの許可 $IPTABLES -A FORWARD -i $FW_IN -p tcp --dport 443 -j ACCEPT $IPTABLES -A OUTPUT -p tcp -m state --state NEW --dport 443 -j ACCEPT $IPTABLES -A FORWARD -i $FW_IN -p tcp --dport 80 -j ACCEPT $IPTABLES -A INPUT -i $FW_OUT -p tcp -s $ANY --dport 80 -j ACCEPT $IPTABLES -A OUTPUT -o $FW_OUT -p tcp ! --syn -m state --state NEW,ESTABLISHED,RELATED -d $ANY --sport 80 -j ACCEPT $IPTABLES -A INPUT -i $FW_OUT -p tcp -m state --state ESTABLISHED,RELATED --sport 80 -j ACCEPT $IPTABLES -A OUTPUT -o $FW_OUT -p tcp --dport 80 -j ACCEPT ##外部FTPサーバーへのアクセス許可 $IPTABLES -A OUTPUT -p tcp -m state --state NEW --dport 21 -j ACCEPT $IPTABLES -A INPUT -p tcp -m state --state NEW --sport 20 -j ACCEPT $IPTABLES -A OUTPUT -p tcp -m state --state NEW --dport 1024: -j ACCEPT $IPTABLES -A FORWARD -i $FW_IN -p tcp --dport 20:21 -j ACCEPT ##接続が確立したパケットは許可 $IPTABLES -A FORWARD -i $FW_OUT -o $FW_IN -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A FORWARD -i $FW_IN -o $FW_OUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT ##外部へのpingは許可 $IPTABLES -A INPUT -p icmp --icmp-type 8 -j ACCEPT $IPTABLES -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT $IPTABLES -A INPUT -p icmp --icmp-type 0 -j ACCEPT $IPTABLES -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT $IPTABLES -A FORWARD -i $FW_IN -p icmp -j ACCEPT ##sshで外部への接続を許可 $IPTABLES -A FORWARD -i $FW_IN -p tcp --dport 22 -j ACCEPT $IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT ##POPメールの受信許可 $IPTABLES -A FORWARD -i $FW_IN -p tcp --dport 110 -j ACCEPT $IPTABLES -A INPUT -p tcp --dport 110 -j ACCEPT ##SMTPメールの送信許可 $IPTABLES -A FORWARD -i $FW_IN -p tcp --dport 25 -j ACCEPT $IPTABLES -A INPUT -p tcp --dport 25 -j ACCEPT ##natのルール作成 ## ##初期化 $IPTABLES -F -t nat $IPTABLES -X -t nat ##IPマスカレード $IPTABLES -t nat -A POSTROUTING -s $LOCAL -o $FW_OUT -j MASQUERADE ##iptablesの設定を保存 /sbin/iptables-save > /etc/sysconfig/iptables | ||||||||||||
|
投稿日時: 2004-06-02 21:55
頑張りましたね〜,お疲れ様です. で,この部分は ip masqurade ではなく,ip forwarding です.つまり,ある network interface から入ってきたものを別の network interface へ転送したい場合に必要です.で,/etc/sysctl.conf で設定してるなら,/proc へは redirect しなくて良いです.どちらも同じことをやってますから.
この辺は,本当は /etc/modules.conf に書いたほうが smart かと. Netfilter の rule はまだ見ていませんが,改めて後ほど見せていただきたく. 以上,ご参考までに. | ||||||||||||
|
投稿日時: 2004-06-02 22:50
kaz様
さっそくのアドバイスありがとうございます。
そうか。じゃ/procは削除しておきます。(私も同じような気はしていたのですが...言い訳)
そうします。smartとう意味はきちんと動作させる。メンテナンスがしやすい。 つまり,管理しやすい書き方ということでしょうか。linuxの設定ファイルの 役割もろくに知らないので...とほほ...勉強しときます。
ぜひ,ぜひ,お願いします。 思いっきり,バサッとやってください。 私個人としましては,もっとすっきりとした,かっこいいルールにしたいのです。 (贅沢な注文かな?) では,また,のちほど..... |