iptables에서 addrtype의 정의는 무엇입니까?


11

필자는 일부 bogon ips를 삭제하기 위해 필터 체인 중 하나에서 규칙으로 addrtype함께 사용 하고 -src싶습니다.

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

매뉴얼 페이지는 다음과 같이 말합니다.

addrtype
이 모듈은 주소 유형에 따라 패킷을 일치 시킵니다 . 주소 유형은 커널 네트워킹 스택 내에서 사용되며 주소를 다양한 그룹으로 분류합니다. 해당 그룹의 정확한 정의는 특정 계층 3 프로토콜에 따라 다릅니다.

다음과 같은 주소 유형이 가능합니다.

  • 지정되지 않은 주소 UNSPEC (예 : 0.0.0.0)
  • 유니 캐스트 주소 UNICAST
  • 현지 주소 LOCAL
  • 방송 주소 브로드 캐스트
  • 애니 캐스트 패킷
  • 멀티 캐스트 주소
  • 블랙홀 주소 블랙홀
  • 연결할 수없는 주소에 도달 할 수 없음
  • 금지 된 주소를 금지
  • 스로 픽스
  • NAT FIXME
  • XRESOLVE

정확한 정의가 무엇인지는 명확하지 않으며 특정 계층 3 프로토콜에 따라 다릅니다. 이것이 내가 생각하는 것입니다.

  • 유니 캐스트 (! 브로드 캐스트,! 멀티 캐스트,! 애니 캐스트)
  • 지역 ( 127.0.0.0/8)
  • 방송 ( *.*.*.255)
  • 애니 캐스트 ( *.*.*.*)
  • 멀티 캐스트 ( 224.0.0.0/4)

누구든지 그것이 무엇을 의미하고 iptables에 의해 어떻게 구현되는지에 대한 명확한 아이디어를 가지고 있습니까 (예를 들어, 지옥이 어디에 있는지를 알고 있습니까?)


2
LOCAL가장 확실하지 않습니다 127.0.0.0/8. 어려운 방법을 찾았습니다. (... 분명히 로컬 주소는 인터페이스에 할당 된 모든 주소를 나타냅니다.
0xC0000022L 2016

1
@ 0xC0000022L RFC990에 따르면 루프백 전용 127.0.0.0/8 으로 예약되어 있지만 LOCAL은 해당 범위로 제한되지 않습니다.
Qwerty01

답변:


3

커널이 블랙홀 주소 유형을 알도록하는 것은 당신에게 달려 있다고 생각합니다.

에서 xt_addrtype.h 의 iptables 소스 코드 파일, 당신은 볼 수 있습니다 :

/* 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 Šimerda

blackhole모든 주소 유형이 아니라 주소 유형을 말했습니다 . iptables addrtype확장 프로그램이 커널과 동일한 정의 addrtype을 사용 한다는 것을 보여줍니다 . 그리고 주소 유형의 커널 정의는에서 볼 수 있습니다 man ip.
cuonglm

고마워, 그것은 블랙홀의 부분에 대해서만 답변합니다. ip 명령에서 ips를 나열하려고 시도 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. 이를 해석하는 방법에 대한 자세한 정보를 제공 할 수 있습니까? 감사.
질문 오버플로

1
@cuonglm ip route add blackhole방화벽을 사용하여 특정 서브넷을 차단하는 것의 장점은 무엇 입니까? 기능적 / 성능 차이 또는 동일한 목적을 달성하기위한 다른 방법이 있습니까?
Bratchley

1
@Bratchley : 시스템에 따라 다르지만 라우팅 테이블이 종종 작고 iptables 규칙에는 종종 많은 규칙이 포함되므로 null 경로가 더 좋습니다. 규칙을 통한 처리는 성능에 큰 영향을 줄 수 있습니다.
cuonglm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.