- PR -

クライアントPCの名前解決ができない

投稿者投稿内容
anights
ぬし
会議室デビュー日: 2003/05/22
投稿数: 277
お住まい・勤務地: 東京
投稿日時: 2004-05-27 09:40
引用:

kazさんの書き込み (2004-05-26 23:51) より:
つまり,http(80/tcp) は internal -> external を通すけど,domain(53/udp) は通さないように設定されてしまったいるのではないか?ということだと思います,よね? -> anights 様



Kaz様フォローありがとうございます。
まったくそのとおりです。
私としては、現状確認で書いただけですが。。。

ルール的には似たような書き方で実現出来ると思うので
HTTPリクエスト通す設定が出来るのならDNSリクエスト通す設定も出来るはず。。。
などと淡い期待を持って書きました。
ポリシーについてはKaz様が言及されているのでそちらを。

引用:

RedHat 7.2 なら導入されていると思うのですが...少なくとも kernel rebuild は必要ないと思います.



導入されています。
↓ここ何気に便利です。
http://h50146.www5.hp.com/products/software/oe/linux/support/matrix/rpm.html

たら
会議室デビュー日: 2004/03/04
投稿数: 3
投稿日時: 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";
して試してみては。
shigiog
会議室デビュー日: 2004/05/25
投稿数: 10
投稿日時: 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様のご指摘の通り
引用:

ipchains -A forward -p udp -d "DNS server" domain -j ACCEPT


を実行してみました。が、変かが見られませんでした。
でも、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の
引用:

domain(53/udp) 通してるのこの辺だけですよね?で,どちらも distination 側のあて先 port が high port になってますよね.DNS server は通常,53/udp で聴きます.


という部分が怪しかったんですね。
今となっては、全部消えてしまってその痕跡は見られませんが。
多分、きっとそうです。間違いない。

anights様
レスありがとうございます。
さっそく指定されたホームページを見させて頂きました。
ありましたね。私の勉強不足でした。確かに、便利そうな所なので、さっそくBookmarkです。

たら様
レスありがとうございます。
引用:

option domain-name "shigizemi.com";
の部分を
option domain-name "bbtec.net";
して試してみては。



なるほど、それも試してみる価値は十分にありそうです。
が、上で書いたように、なんでか、つながってしまったので、またの機会に是非やって
みます。(たぶん、すぐ試すことになるかも)

まぁ、今週いっぱいかけてipchainsのルールを作成するか、
もうこのさい、iptablesの設定を調べてそっちで行こうかな。
.....................................iptabesに挑戦します。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2004-05-27 20:47
こんばんわ.
引用:

shigiogさんの書き込み (2004-05-27 16:36) より:

[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がインターネットに接続
できた喜びに浸っているところです。でも、一抹の不安もあります。


確かに.いろいろやったんでしょうね〜 (^^;
んでは雑談を.

まず最初に,下記のように実行すると良いでしょう.
# 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
とします.

引用:

まぁ、今週いっぱいかけてipchainsのルールを作成するか、
もうこのさい、iptablesの設定を調べてそっちで行こうかな。
.....................................iptabesに挑戦します。


iptables のほうが考え方が「当たり前」な感じに変わっているのでよろしいでしょう.でもって,前述の script でやる方法はもちろん iptables でも同じです.

ガンバってください.
shigiog
会議室デビュー日: 2004/05/25
投稿数: 10
投稿日時: 2004-05-27 22:18
kaz様
レスありがとうございます。

指示されたコマンドの内容が,だいぶん理解できるようになってきました。
今週末にかけてがんばってやってみます。
もちろん,iptablesです。

でも,安全のため,ipchainsの設定を指示の通りに明日やってみます。(今のまま,ネットに接続し続けるのは危険そうだから。)

結果報告をお楽しみにお待ちください。


shigiog
会議室デビュー日: 2004/05/25
投稿数: 10
投稿日時: 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
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2004-06-02 21:55
引用:

shigiogさんの書き込み (2004-06-02 19:22) より:

/etc/sysctl.conf

net.ipv4.ip_forward = 1

%%%%%%%/etc/rc.d/rc.local%%%%%%%%%%%%%%%%%

##IPマスカレードの使用
echo 1 > /proc/sys/net/ipv4/ip_forward



頑張りましたね〜,お疲れ様です.
で,この部分は ip masqurade ではなく,ip forwarding です.つまり,ある network interface から入ってきたものを別の network interface へ転送したい場合に必要です.で,/etc/sysctl.conf で設定してるなら,/proc へは redirect しなくて良いです.どちらも同じことをやってますから.

引用:

%%%%%%%/etc/rc.d/rc.local%%%%%%%%%%%%%%%%%

##iptables関連のモジュールのロード
/sbin/modprobe iptable_nat
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp


この辺は,本当は /etc/modules.conf に書いたほうが smart かと.

Netfilter の rule はまだ見ていませんが,改めて後ほど見せていただきたく.

以上,ご参考までに.
shigiog
会議室デビュー日: 2004/05/25
投稿数: 10
投稿日時: 2004-06-02 22:50
kaz様
さっそくのアドバイスありがとうございます。

引用:

ip masqurade ではなく,ip forwarding です.つまり,ある network interface から入ってきたものを別の network interface へ転送したい場合に必要です.で,/etc/sysctl.conf で設定してるなら,/proc へは redirect しなくて良いです.どちらも同じことをやってますから.


そうか。じゃ/procは削除しておきます。(私も同じような気はしていたのですが...言い訳)

引用:

この辺は,本当は /etc/modules.conf に書いたほうが smart かと.


そうします。smartとう意味はきちんと動作させる。メンテナンスがしやすい。
つまり,管理しやすい書き方ということでしょうか。linuxの設定ファイルの
役割もろくに知らないので...とほほ...勉強しときます。

引用:

Netfilter の rule はまだ見ていませんが,改めて後ほど見せていただきたく.


ぜひ,ぜひ,お願いします。
思いっきり,バサッとやってください。
私個人としましては,もっとすっきりとした,かっこいいルールにしたいのです。
(贅沢な注文かな?)
では,また,のちほど.....

スキルアップ/キャリアアップ(JOB@IT)