このルールを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つが同じネットワーク上にあると見なされる理由です。