「iptables DNSを許可する」の版間の差分

提供: セキュリティ
移動: 案内検索
(関連項目)
行60: 行60:
  
 
== 関連項目 ==
 
== 関連項目 ==
* [[iptables]]
+
{{iptables}}
* [[iptables 接続状態]]
+
<!-- vim: filetype=mediawiki -->

2014年2月20日 (木) 18:41時点における版

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

関連項目