Red Hat Training

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

18.12.4. 필터에서 변수 사용

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

예 18.4. 샘플 변수 유형

변수에 요소 목록이 포함될 수 있으므로 (예: 변수 IP는 특정 인터페이스에서 유효한 여러 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의 두 번째 요소에 액세스합니다.As it is possible to access individual elements of a variable holding a list of elements, a filtering rule like the following accesses the 2nd element of the variable DSTPORTS.
  <rule action='accept' direction='in' priority='500'>
    <udp dstportstart='$DSTPORTS[1]'/>
  </rule>

예 18.5. 다양한 변수 사용

표기법 $VARIABLE[@<iterator id="x">] 을 사용하여 다양한 목록에서 가능한 모든 규칙 조합을 나타내는 필터링 규칙을 생성할 수 있습니다. 다음 규칙을 사용하면 가상 머신이 SRCIPADDRESSES 에 지정된 소스 IP 주소 집합에서 DSTPORTS 에 지정된 포트 집합에 대한 트래픽을 수신할 수 있습니다. 이 규칙은 두 개의 독립 이터레이터를 사용하여 해당 요소에 액세스하여 변수 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"을 사용하여 반복 자의 역할을 가정합니다.