내 장치에 QOS 스크립트를 설정하려고 합니다.토마토-WRT54G 라우터를 활성화합니다. 스크립트는 필요한 기본 사항을 수행하지만(네트워크의 특정 시스템이 다른 시스템보다 우선 순위가 낮은지 확인) Use 대신 다른 모든 시스템에서 나가는 트래픽에 대해 특정 규칙을 정의해야 한다는 사실이 마음에 들지 않습니다. 일부 "기본" 동작.
특히, 마커 11과 12로 패킷을 표시하는 두 줄을 제거하고 싶습니다.
iptables -t mangle -A PREROUTING -s 192.168.1.70 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -s 192.168.1.70 -j RETURN
iptables -t mangle -A PREROUTING -m iprange --src-range 192.168.1.2-192.168.1.69 -j MARK --set-mark 11
iptables -t mangle -A PREROUTING -m iprange --src-range 192.168.1.71-192.168.1.254 -j MARK --set-mark 12
iptables -t mangle -A PREROUTING -j IMQ --todev 0
qdisk를 생성할 때 이를 제거하려고 시도했지만("기본 12" 추가) 처리량이 급격히 떨어졌습니다. 또한 다음 방법 중 하나로 모든 패킷을 표시해 보았습니다.
iptables -t mangle -A PREROUTING -j MARK --set-mark 12
또는
iptables -t mangle -A PREROUTING -m mark --mark 0 -j MARK --set-mark 12
첫 번째 또는 마지막 필터 규칙으로 사용되지만 이 방법도 작동하지 않습니다.
전체 스크립트는 다음과 같습니다.
TCA="tc 클래스 추가 dev br0" TFA="tc 필터 추가 dev br0" TQA="tc qdisc 추가 개발 br0" SFQ="sfq 중단 10" tc qdisc del dev br0 루트 tc qdisc add dev br0 루트 핸들 1: htb 기본값 10 tc 클래스는 dev br0 parent 1을 추가합니다: classid 1:1 htb 속도 2400kbit $TCA 상위 1:1 클래스 ID 1:10 HTB 속도 2300kbit ceil 2400kbit prio 0 $TCA 상위 1:1 클래스 ID 1:11 HTB 속도 10kbit ceil 2400kbit prio 1 $TCA 상위 1:1 클래스 ID 1:12 HTB 속도 10kbit ceil 2400kbit prio 2 $TCA 상위 1:1 클래스 ID 1:13 HTB 속도 10kbit ceil 2000kbit prio 4 $TQA 상위1:10 핸들10: $SFQ $TQA 상위 1:11 핸들 11: $SFQ $TQA 상위 1:12 핸들 12: $SFQ $TQA 상위 1:13 핸들 13: $SFQ $TFA 상위 1:0 우선 순위 0 프로토콜 IP 핸들 10 fw 흐름 ID 1:10 $TFA 상위 1:0 우선순위 1 프로토콜 IP 핸들 11 fw 흐름 ID 1:11 $TFA 상위 1:0 prio 2 프로토콜 IP 핸들 12 fw flowid 1:12 $TFA 상위 1:0 prio 4 프로토콜 IP 핸들 13 fw flowid 1:13 iptables -t mangle -A POSTROUTING -p tcp --sport 80 -j MARK --set-mark 10 iptables -t mangle -A POSTROUTING -p tcp --sport 443 -j MARK --set-mark 11 iptables -t mangle -A POSTROUTING -p tcp --sport 995 -j MARK --set-mark 12 iptables -t mangle -A POSTROUTING -d 192.168.1.70 -j MARK --set-mark 13 TCAU="tc 클래스 추가 dev imq0" TFAU="tc 필터에 dev imq0 추가" TQAU="tc qdisc 개발 imq0 추가" 모듈 프로브 IMQ 모드프로브 ipt_IMQ IP 링크 설정 imq0 tc qdisc del dev imq0 루트 tc qdisc add dev imq0 루트 핸들 1: htb tc 클래스는 dev imq0 parent 1을 추가합니다: classid 1:1 htb 속도 700kbit $TCAU 상위 1:1 클래스 ID 1:10 HTB 속도 7kbit ceil 500kbit prio 4 $TCAU 상위 1:1 클래스 ID 1:11 HTB 속도 30kbit ceil 700kbit prio 2 $TCAU 상위 1:1 클래스 ID 1:12 HTB 속도 663kbit ceil 700kbit prio 2 $TQAU 상위1:10 핸들10: $SFQ $TQAU 상위 1:11 핸들 11: $SFQ $TQAU 상위 1:12 핸들 12: $SFQ $TFAU 상위 1:0 우선순위 4 프로토콜 IP 핸들 10 fw 흐름 ID 1:10 $TFAU 상위 1:0 prio 2 프로토콜 IP 핸들 11 fw flowid 1:11 $TFAU 상위 1:0 prio 2 프로토콜 IP 핸들 12 fw flowid 1:12 iptables -t mangle -A PREROUTING -s 192.168.1.70 -j MARK --set-mark 10 # # 이 두 줄을 피하고 나머지는 모두 "12"로 표시하려면 어떻게 해야 하나요? # iptables -t mangle -A PREROUTING -m iprange --src-range 192.168.1.2-192.168.1.69 -j MARK --set-mark 11 iptables -t mangle -A PREROUTING -m iprange --src-range 192.168.1.71-192.168.1.254 -j MARK --set-mark 12 iptables -t mangle -A PREROUTING -j IMQ --todev 0
답변1
각 패킷과 일치하는 첫 번째 규칙을 추가하여 "기본 동작"을 선언할 수 있었습니다. "mangle" 테이블은 첫 번째 일치 규칙에서 중지하는 대신 모든 규칙과 일치를 시도한다는 점에서 다른 테이블과 다르게 동작하는 것 같습니다. 동일한 패킷을 여러 번 수정하려고 할 수 있으므로 이는 의미가 있습니다.
# 다른 규칙이 일치하지 않는 한 모든 것이 기본 대기열로 이동합니다... iptables -t mangle -A PREROUTING -s 192.168.1.0/24 -j MARK --set-mark 12 iptables -t mangle -A PREROUTING -s 192.168.1.70 -j MARK --set-mark 10 iptables -t mangle -A PREROUTING -j IMQ --todev 0