iptablesのaddrtypeの定義は何ですか?


11

私はいくつかのbogon ipsを削除するために、フィルターチェーンの1つで原則addrtypeとし-srcてと組み合わせて使用することに熱心です。

-A INPUT -p tcp --dport 80 -m addrtype --src-type UNICAST ! -s 127.0.0.0/8 -j WEB

マニュアルページには次のように書かれています

addrtype
このモジュールは、アドレスタイプに基づいてパケットを照合します。アドレスタイプはカーネルネットワーキングスタック内で使用され、アドレスをさまざまなグループに分類します。そのグループの正確な定義は、特定のレイヤー3プロトコルによって異なります。

次のアドレスタイプが可能です。

  • 未指定のアドレス(つまり0.0.0.0)をUNSPEC
  • ユニキャストアドレスのユニキャスト
  • LOCALローカルアドレス
  • ブロードキャストアドレスをブロードキャストする
  • エニーキャストパケットのANYCAST
  • マルチキャストアドレスのマルチキャスト
  • ブラックホールブラックホールアドレス
  • 到達不能なアドレスに到達できません
  • 禁止されている住所を禁止する
  • スローフィックス
  • NAT FIXME
  • XRESOLVE

正確な定義は明確ではなく、特定のレイヤー3プロトコルに依存すると述べています。これは私が思うことです:

  • ユニキャスト(!BROADCAST、!MULTICAST、!ANYCAST)
  • ローカル(127.0.0.0/8
  • 放送(*.*.*.255
  • エニーキャスト(*.*.*.*
  • マルチキャスト(224.0.0.0/4

誰もがそれが何を意味するのか、それがiptablesによってどのように実装されているのか(たとえば、地獄がBLACKHOLEであるかをどのようにして知るのか)を明確に知っていますか?


2
LOCAL間違いない127.0.0.0/8です。私は、ハードな方法を見つけた:( ...どうやらローカルアドレスがインターフェイスに割り当てられたアドレスを参照。
0xC0000022L

1
0xC0000022L @ RFC990によれば、127.0.0.0/8 されているがLOCALは単に、その範囲に限定されるものではなく、具体的ループバックのために予約。
Qwerty01 2016年

回答:


3

カーネルにブラックホールアドレスタイプを認識させるかどうかは、あなた次第だと思います。

iptablesソースコードのxt_addrtype.hファイルから、以下を確認できます。

/* rtn_type enum values from rtnetlink.h, but shifted */                        
enum {                                                                          
    XT_ADDRTYPE_UNSPEC = 1 << 0,                                                
    XT_ADDRTYPE_UNICAST = 1 << 1,   /* 1 << RTN_UNICAST */                      
    XT_ADDRTYPE_LOCAL  = 1 << 2,    /* 1 << RTN_LOCAL, etc */                   
    XT_ADDRTYPE_BROADCAST = 1 << 3,                                             
    XT_ADDRTYPE_ANYCAST = 1 << 4,                                               
    XT_ADDRTYPE_MULTICAST = 1 << 5,                                             
    XT_ADDRTYPE_BLACKHOLE = 1 << 6,                                             
    XT_ADDRTYPE_UNREACHABLE = 1 << 7,                                           
    XT_ADDRTYPE_PROHIBIT = 1 << 8,                                              
    XT_ADDRTYPE_THROW = 1 << 9,                                                 
    XT_ADDRTYPE_NAT = 1 << 10,                                                  
    XT_ADDRTYPE_XRESOLVE = 1 << 11,                                             
};

とでrtnetlink.hは、同じ定義が表示されます。

enum {                                                                          
    RTN_UNSPEC,                                                                 
    RTN_UNICAST,        /* Gateway or direct route  */                          
    RTN_LOCAL,      /* Accept locally       */                                  
    RTN_BROADCAST,      /* Accept locally as broadcast,                         
                   send as broadcast */                                         
    RTN_ANYCAST,        /* Accept locally as broadcast,                         
                   but send as unicast */                                       
    RTN_MULTICAST,      /* Multicast route      */                              
    RTN_BLACKHOLE,      /* Drop             */                                  
    RTN_UNREACHABLE,    /* Destination is unreachable   */                      
    RTN_PROHIBIT,       /* Administratively prohibited  */                      
    RTN_THROW,      /* Not in this table        */                              
    RTN_NAT,        /* Translate this address   */                              
    RTN_XRESOLVE,       /* Use external resolver    */                          
    __RTN_MAX                                                                   
};

iptablesカーネルtcpネットワークスタックで同じアドレスタイプの定義を使用していることがわかります。

その後からman ip

Route types:

      unicast - the route entry describes real paths to the destinations covered by the route prefix.

      unreachable  - these destinations are unreachable.  Packets are discarded and the ICMP message host unreachable is generated.
               The local senders get an EHOSTUNREACH error.

      blackhole - these destinations are unreachable.  Packets are discarded silently.  The local senders get an EINVAL error.

      prohibit - these destinations are unreachable.  Packets are discarded and the  ICMP  message  communication  administratively
               prohibited is generated.  The local senders get an EACCES error.

      local - the destinations are assigned to this host.  The packets are looped back and delivered locally.

      broadcast - the destinations are broadcast addresses.  The packets are sent as link broadcasts.

      throw  - a special control route used together with policy rules. If such a route is selected, lookup in this table is termi‐
               nated pretending that no route was found.  Without policy routing it is equivalent to the absence of the route in the routing
               table.   The  packets  are  dropped  and the ICMP message net unreachable is generated.  The local senders get an ENETUNREACH
               error.

      nat - a special NAT route.  Destinations covered by the prefix are considered to  be  dummy  (or  external)  addresses  which
               require  translation  to  real  (or  internal)  ones  before forwarding.  The addresses to translate to are selected with the
               attribute Warning: Route NAT is no longer supported in Linux 2.6.

               via.

      anycast - not implemented the destinations are anycast addresses assigned to this host.  They are mainly equivalent to  local
               with one difference: such addresses are invalid when used as the source address of any packet.

      multicast - a special type used for multicast routing.  It is not present in normal routing tables.

したがって、ipコマンドでネットワークへのルートを定義し、それをブラックホールルートとしてマークすると、カーネルはこのネットワークアドレスをブラックホールタイプにします。

ip route add blackhole X.X.X.X/24

1
あなたはシステムヘッダーファイルを表示していて、それが管理者に依存すると言っていますか?
PavelŠimerda2014年

私は言ったblackholeアドレスタイプではなく、すべてのアドレスタイプ。iptables addrtype拡張機能がカーネルと同じ定義addrtypeを使用することを示します。また、アドレスタイプのカーネル定義はで確認できますman ip
cuonglm 2014年

ありがとう、それはブラックホールの部分にのみ答えます。私はそのようにips from ipコマンドをリストしてみましたが、ip route list type localを与えるユニキャストを除いて、すべてのタイプが空の文字列を生成しますdefault via 192.168.1.1 dev eth0 proto static metric 1024 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.2。これらを解釈する方法について、より詳しい情報を提供できますか?ありがとう。
質問のオーバーフロー2014年

1
@cuonglm ip route add blackholeその特定のサブネットをブロックするためにファイアウォールを使用するのと比較して、どのような利点がありますか?機能/パフォーマンスの違い、または同じ目的を達成するための別の方法はありますか?
Bratchley、2015年

1
@Bratchley:システムに依存しますが、多くの場合、ルートテーブルは小さいため、nullルートの方が優れていますが、iptablesルールには多くのルールが含まれていることがよくあります。ルールによる処理は、パフォーマンスに大きな影響を与える可能性があります。
cuonglm
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.