Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

17.14.4. 필터에서 변수 사용

네트워크 트래픽 필터링 하위 시스템에서 사용하도록 예약된 두 개의 변수가 있습니다. MAC 및 IP
MAC 은 네트워크 인터페이스의 MAC 주소로 지정됩니다. 이 변수를 참조하는 필터링 규칙은 인터페이스의 MAC 주소로 자동으로 교체됩니다. 이 작업은 사용자가 MAC 매개 변수를 명시적으로 제공할 필요 없이 작동합니다. 위의 IP 매개변수와 유사한 MAC 매개 변수를 지정할 수 있지만 libvirt는 인터페이스에서 사용할 MAC 주소를 알고 있기 때문에 권장되지 않습니다.
매개변수 IP 는 가상 머신 내부의 운영 체제가 지정된 인터페이스에서 사용할 것으로 예상되는 IP 주소를 나타냅니다. IP 매개변수는 libvirt 데몬에서 매개 변수가 명시적으로 제공되지 않고 참조되지 않는 경우 인터페이스에서 사용되는 IP 주소(및 IP 매개변수의 값)를 확인하려고 할 때까지 특별합니다. IP 주소 검색에 대한 현재 제한 사항은 이 기능을 사용하는 방법과 사용 시 예상되는 방법에 대한 제한 17.14.12절. “제한 사항” 에 대한 섹션을 참조하십시오. 17.14.2절. “체인 필터링” 에 표시된 XML 파일에는 네트워크 필터 XML을 사용하여 MAC 및 IP 변수를 참조하는 예제인 필터 no-arp-spoofing 이 포함되어 있습니다.
참조된 변수 앞에는 항상 문자 $ 가 붙습니다. 변수 값의 형식은 XML에서 식별된 필터 특성에 의해 예상되는 유형이어야 합니다. 위의 예에서 IP 매개 변수는 법적 IP 주소를 표준 형식으로 보관해야 합니다. 올바른 구조를 제공하지 않으면 필터 변수가 값으로 교체되지 않으며 핫 플러그를 사용할 때 가상 머신이 시작되지 않거나 인터페이스가 연결되지 않습니다. 각 XML 특성에 대해 예상되는 일부 유형은 예제 예 17.4. “샘플 변수 유형” 에 표시됩니다.

예 17.4. 샘플 변수 유형

변수에 요소 목록이 포함될 수 있으므로 (예: 특정 인터페이스에서 유효한 여러 IP 주소를 포함할 수 있음) IP 변수에 여러 요소를 제공하기 위한 표기법은 다음과 같습니다.
  <devices>
    <interface type='bridge'>
      <mac address='00:16:3e:5d:c7:9e'/>
      <filterref filter='clean-traffic'>
        <parameter name='IP' value='10.0.0.1'/>
        <parameter name='IP' value='10.0.0.2'/>
        <parameter name='IP' value='10.0.0.3'/>
      </filterref>
    </interface>
  </devices>
이 XML 파일은 인터페이스당 여러 IP 주소를 사용하도록 필터를 생성합니다. 각 IP 주소는 별도의 필터링 규칙을 생성합니다. 따라서 위의 XML과 다음 규칙을 사용하면 세 개의 개별 필터링 규칙(각 IP 주소에 대해 하나씩)이 생성됩니다.
  <rule action='accept' direction='in' priority='500'>
    <tcp srpipaddr='$IP'/>
  </rule>
요소 목록을 포함하는 변수의 개별 요소에 액세스할 수 있으므로 다음과 같은 필터링 규칙은 변수 DSTPORTS 의 두 번째 요소에 액세스합니다.
  <rule action='accept' direction='in' priority='500'>
    <udp dstportstart='$DSTPORTS[1]'/>
  </rule>

예 17.5. 다양한 변수 사용

$VARIABLE[@<iterator id="x">] 표기법을 사용하여 다양한 목록에서 허용 가능한 모든 규칙을 나타내는 필터링 규칙을 생성할 수 있습니다. 다음 규칙을 사용하면 가상 머신이 SRCIPADDRESSES 에 지정된 소스 IP 주소 집합에서 DSTPORTS 에 지정된 포트 세트의 트래픽을 수신할 수 있습니다. 이 규칙은 두 개의 독립 tutorial을 사용하여 해당 요소에 액세스하여 DSTPORTS 변수의 모든 요소를 SRCIPADDRESSES 와 함께 생성합니다.
  <rule action='accept' direction='in' priority='500'>
    <ip srcipaddr='$SRCIPADDRESSES[@1]' dstportstart='$DSTPORTS[@2]'/>
  </rule>
다음과 같이 SRCIPADDRESSESDSTPORTS 에 구체적인 값을 할당합니다.
  SRCIPADDRESSES = [ 10.0.0.1, 11.1.2.3 ]
  DSTPORTS = [ 80, 8080 ]
$SRCIPADDRESSES[@1]$DSTPORTS[@2] 를 사용하여 변수에 값을 할당하면 다음과 같이 모든 주소와 포트가 생성됩니다.
  • 10.0.0.1, 80
  • 10.0.0.1, 8080
  • 11.1.2.3, 80
  • 11.1.2.3, 8080
예를 들어 표기법 $SRCIPADDRESSES[@1]$DSTPORTS[@1] 를 사용하여 동일한 변수에 액세스하면 두 목록에 동시에 액세스할 수 있으므로 다음과 같은 조합이 발생합니다.
  • 10.0.0.1, 80
  • 11.1.2.3, 8080
참고
$VARIABLE$VARIABLE[@0] 의 단축입니다. 이전 표기법은 항상 이 섹션의 위쪽에 있는 열린 단락에 표시된 대로 반복 ID="0" 의 역할이 추가되었다고 가정합니다.