「iptables DNSを許可する」の版間の差分
提供: セキュリティ
行9: | 行9: | ||
[[Domain Name System|DNS]] 問い合わせは、[[UDP]] が利用されます。 | [[Domain Name System|DNS]] 問い合わせは、[[UDP]] が利用されます。 | ||
− | そのため、[[iptables]] で domain (53ポート) | + | そのため、[[iptables]] で domain (53ポート) の通信が通らないと外部の[[Domain Name System|DNS]] サーバーを利用した [[名前解決]] ができなくなります。 |
== 使い方 == | == 使い方 == | ||
+ | === DNSクライアントとして問い合わせをする === | ||
ここでの前提は、[[iptables]] を設定するホストが [[Domain Name System]] のサーバーとして機能するのではなく、[[Domain Name System|DNS]] のクライアントとして動作する、ということです。 | ここでの前提は、[[iptables]] を設定するホストが [[Domain Name System]] のサーバーとして機能するのではなく、[[Domain Name System|DNS]] のクライアントとして動作する、ということです。 | ||
+ | |||
+ | [[iptables 接続状態|ステート]] を利用して、通信を許可できます。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === ステートを使わずにDNSクライアントとして問い合わせをする === | ||
[[iptables]] の下記設定を追加します。 | [[iptables]] の下記設定を追加します。 | ||
行32: | 行40: | ||
== 関連項目 == | == 関連項目 == | ||
* [[iptables]] | * [[iptables]] | ||
+ | * [[iptables 接続状態]] |
2013年8月17日 (土) 20:03時点における版
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