1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

iptablesの優先順位について

Last updated at Posted at 2024-01-26

はじめに

iptablesのREJECTとACCEPTの挙動についての備忘録。
以下の場合についてを調査。

  1. 同じIPアドレスに対してACCEPTとREJECTがある場合どうなるのか
  2. ロンゲストマッチ(最長一致検索)が有効なのか

結論

  1. 同じIPアドレスに対してACCEPTとREJECTがある場合は上部にあるものが適用される(ACCEPTされたあとにREJECTされることはない)
  2. ロンゲストマッチ(最長一致検索)はなく、上部で一致したものが適用される

検証内容

サーバーを二台用意し、iptablesを操作するサーバーでnginxを起動し、もう片方からcurlを試みる。

1. 同じIPアドレスで上部にACCEPT, 下部にREJECTがある場合

  • 接続できる
# iptables -A INPUT -p tcp --dport 80 -s 10.10.10.11 -j ACCEPT
# iptables -A INPUT -p tcp --dport 80 -s 10.10.10.11 -j REJECT
# iptables -L INPUT
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  10.10.10.11           anywhere             tcp dpt:http
REJECT     tcp  --  10.10.10.11           anywhere             tcp dpt:http reject-with icmp-port-unreachable

# curl -i -s http://10.10.10.10:80 | head -n2
HTTP/1.1 200 OK
Server: nginx/1.24.0

2. 同じIPアドレスで上部にREJECT, 下部にACCEPTがある場合

  • 接続できない
# iptables -A INPUT -p tcp --dport 80 -s 10.10.10.11 -j REJECT
# iptables -A INPUT -p tcp --dport 80 -s 10.10.10.11 -j ACCEPT
# iptables -L INPUT
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     tcp  --  10.10.10.11           anywhere             tcp dpt:http reject-with icmp-port-unreachable
ACCEPT     tcp  --  10.10.10.11           anywhere             tcp dpt:http

# curl http://10.10.10.10:80
curl: (7) couldn't connect to host

3. ロンゲストマッチ(最長一致検索)が有効なのか

  • ロンゲストマッチ(最長一致検索)のようなものはなく、上部のものが優先される
# iptables -A INPUT -p tcp --dport 80 -s 10.0.0.0/8 -j ACCEPT
# iptables -A INPUT -p tcp --dport 80 -s 10.10.10.11 -j REJECT
# iptables -L INPUT
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  10.0.0.0/8           anywhere             tcp dpt:http
REJECT     tcp  --  10.10.10.11           anywhere             tcp dpt:http reject-with icmp-port-unreachable
# curl -i -s http://10.10.10.10 | head -n2
HTTP/1.1 200 OK
Server: nginx/1.24.0
# iptables -A INPUT -p tcp --dport 80 -s 10.0.0.0/8 -j REJECT
# iptables -A INPUT -p tcp --dport 80 -s 10.10.10.11 -j ACCEPT
# iptables -L INPUT
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     tcp  --  10.0.0.0/8           anywhere             tcp dpt:http reject-with icmp-port-unreachable
ACCEPT     tcp  --  10.10.10.11           anywhere             tcp dpt:http

# curl -i http://10.10.10.10
curl: (7) couldn't connect to host
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?