iptables DNSを許可する
提供: セキュリティ
スポンサーリンク
iptables でポートをいろいろ塞ぐと DNS 問い合わせをブロックしてしまうことがあります。
概要
DNS 問い合わせは、UDP が利用されます。 そのため、iptables で domain (53ポート) の通信が通らないと外部のDNS サーバーを利用した 名前解決 ができなくなります。
使い方
DNSクライアントとして問い合わせをする
ここでの前提は、iptables を設定するホストが Domain Name System のサーバーとして機能するのではなく、DNS のクライアントとして動作する、ということです。
ステート を利用して、通信を許可できます。
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
ステートを使わずにDNSクライアントとして問い合わせをする
iptables の下記設定を追加します。
-A INPUT -p udp --sport 53 -j ACCEPT -A OUTPUT -p udp --dport 53 -j ACCEPT
UDP トラフィックをすべて遮断し、 53 だけ許す例です。
-A INPUT -p udp --sport 53 -j ACCEPT -A OUTPUT -p udp --dport 53 -j ACCEPT -A INPUT -p udp -j DROP -A OUTPUT -p udp -j DROP
DNS サービスを許可する
DNS を外部に公開する例です。
-A INPUT -p tcp --dport 53 -j ACCEPT
iptables の設定ファイルの例です。ssh 22とdomain 53を許可しています。
*filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -i lo -j ACCEPT -A INPUT -p tcp --dport 22 -j ACCEPT -A INPUT -p tcp --dport 53 -j ACCEPT -A OUTPUT -o lo -j ACCEPT COMMIT
関連項目
ツイート
スポンサーリンク