포트에서 나가는 대역폭을 제한하기 위해 한동안 사용해 온 대역폭 스크립트에 문제가 있습니다.
나가는 포트 속도를 변경하고 싶을 때까지는 처음에는 잘 작동했습니다. 더 높은 숫자(200mbit ~ 400mbit)로 전환하고 스크립트를 다시 시작했습니다. 어떤 이유로 새로운 대역폭 제한이 적용되지 않고 이전 제한이 여전히 적용됩니다. 서비스를 초기화하기 위한 스크립트를 설정했습니다. 이것은 코드의 일부입니다.
# Interface
interface=eth0
# Define the upload, follow units can be
upload_limit=400mbit
start() {
# Start the tc configuration and set all packets default to 10
/sbin/tc qdisc add dev $interface root handle 1:0 htb default 10
# Set default speed for all packets
/sbin/tc class add dev $interface parent 1:0 classid 1:10 htb rate 1000mbit ceil 1000mbit prio 0
# Set speeds for packets marked with 20
/sbin/tc class add dev $interface parent 1:0 classid 1:20 htb rate $upload_limit ceil $upload_limit prio 0
# Mark packets for port 182 to 20 so that tc can handle the traffic.
/sbin/iptables -A OUTPUT -t mangle -p tcp --sport 182 -j MARK --set-mark 20
/sbin/service iptables save
# Assign it to appropriate qdisc
tc filter add dev $interface parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:20
}
stop() {
/sbin/tc qdisc del dev $interface root
}
누구든지 나에게 조언을 해줄 수 있습니까?
답변1
IMHO, 이전 규칙이 여전히 존재하는 이유는 추가할 줄이 있고 제거할 줄이 없기 때문에 "마법"을 유발한 iptables 규칙이 여전히 존재하기 때문입니다. iptables 규칙 파일을 확인하세요. 이전 버전(포트)의 경우 "iptables -D OUTPUT -t mangle -p tcp --sport 182 -j MARK --set-mark 20"과 유사한 줄이 많이 있어야 합니다. (스크립트를 실행할 때마다 새 스크립트를 생성하고 나중에 저장하기 때문입니다)
stop() 함수에 Iptables 명령을 배치하여 맹글 테이블 규칙을 정리해보세요. 다음과 같은 것입니다: /sbin/iptables -D OUTPUT -t mangle -p tcp --sport 182 -j MARK --set-mark 20 /sbin/service iptables save