iptables
개방형 Vswitch 인터페이스에 적용한 모든 규칙이 일치하지 않는다는 것을 방금 깨달았습니다 .
나는 iptables를 사용하여 일부 패킷을 표시한 다음 TC(트래픽 제어) 필터를 사용하여 Iptables 일치에 따라 패킷을 다른 우선 순위 대기열에 넣습니다. 이는 모든 인터페이스, 심지어 Linux 브리지에서도 작동합니다(-m physdev 모듈 사용).
ovs 인터페이스를 통해 들어오는 패킷을 iptables로 표시할 수 없는 경우 어떻게 필터링하고 다른 우선순위 대기열에 배치합니까?
규칙(단순화):
iptables -w -t mangle -A POSTROUTING -m physdev --physdev-out interface-name -m ttl --ttl-lt 10 ! -p 89 -j MARK --set-mark 10
tc filter add dev interface-name parent 1:0 protocol all prio 1 handle 10 fw flowid 1:10
그런 다음 1:10과 1:20이라는 두 개의 대기열이 있다고 가정하고 HTB를 우선순위로 사용합니다. 이 규칙은 ttl < 10(OSPF 아님)인 모든 트래픽을 첫 번째 대기열 1:10으로 보내야 합니다.
답변1
이것은 오래된 질문입니다. 배포판이 netfilter 커널 모듈을 처리하는 방법을 알아야 합니다. 때때로 로드되는 경우가 있는데, 이를 표시하는 규칙을 만든 다음 분할하는 것이 요령입니다. 맹글 체인은 조금 까다롭습니다.
다음을 첫 번째 태그 지정 규칙으로 추가하세요.
iptables -t mangle -A POSTROUTING -m physdev --physdev-out interface-name -j MARK --set-mark 10
xt_mark
두 번째 문제는 배포판이 커널 모듈을 컴파일 및/또는 로드하지 못할 수 있다는 것입니다 . lsmod | grep xt_mark
존재하는지 확인 하는데 사용됩니다 .
때로는 OVS 및 iptables에 문제가 발생하기도 합니다. 90년대에는 iptables가 훌륭한 도구라고 생각했는데 지금은 좀 낡은 것 같은 느낌이 듭니다. 문제를 이해하려면 "배포판이 netfilter 모듈을 처리하는 방법을 확인하는 것"이 중요합니다.
패키지를 표시하기만 하고 iptables에 다른 목적이 없다면 다음과 같은 OVS 도구를 사용할 수 있습니다.ovs-ofctl옵션이 있습니다 pkt_mark
.