iptablesルールから物理ホストIPが削除される理由

iptablesルールから物理ホストIPが削除される理由

このルールをiptablesに追加しました。

iptables -A INPUT -s 192.168.0.100/24 -p tcp --dport 27 -j ACCEPT

私が見たiptablesルールをリストしたとき、驚くべきことに、ソース値は次のようになります。

192.168.0.0/24

なぜ?

答え1

192.168.0.100/24一つになることができる速記192.168.100/255.255.255.0の場合 - IPアドレス192.168.0.100とネットマスク255.255.255.0でデバイスを設定します。これはおそらくあなたが期待するものでしょう。しかし、iptablesがそれを使用する方法ではありません。ネットワーク全体ではなく特定のホストのみを許可する場合は、マスクを省略してください(またはを使用する/32ことも同様です)。

厳密に言えば、マニュアルページによるとエラーが発生する可能性があります。

  [!] -s, --source address[/mask][,...]
          Source specification. Address can be either a network name, a hostname, a  network
          IP  address  (with  /mask), or a plain IP address. Hostnames will be resolved once

マスクはネットワークIPアドレスにのみ使用でき、192.168.0.100はそのうちの1つではありません(/ 24ネットワークの場合)。ネットワークアドレスは、ユーザーに返されるアドレス(192.168.0.0/24)です。

これにより、次のような質問が発生します。ネットワークIPアドレスとは何ですか?

デバイス/コンピュータは、他のアドレスが同じネットワーク上にあるか(直接通信できるように)、または別のネットワーク上にあるか(したがってゲートウェイを通過する必要がある)ことを知る必要があります。動作方法は、ネットワークアドレス、ネットマスク、およびいくつかのバイナリ操作に基づいて、同じネットワークのIPアドレス範囲を考慮することです。特定のIPアドレスを持つネットワークを見つけるには、バイナリ操作を実行し、それをネットワークマスクと比較します(両方のアドレスをバイナリ形式でソートし、両方が1の場合は1を書き込み、それ以外の場合は0を書き込みます)。ネットマスクは常に1と0で構成されているため、1の数を数えて短縮します。 / 24は24個の1と8個の0を意味します(IPv4の長さは32ビットです)。

  (192)    (168)    (0)      (100)
  11000000 10101000 00000000 01100100
& 11111111 11111111 11111111 00000000
= 11000000 10101000 00000000 00000000  = 192.168.0.0

192.168.0.1–255を試してみると、どちらも同じ応答を得ることがわかります。これが2つが同じネットワーク上にあると見なされる理由です。

関連情報