웹사이트 테스트를 위한 네트워크 형성 로컬 프록시

웹사이트 테스트를 위한 네트워크 형성 로컬 프록시

웹사이트 자체의 성능 문제를 디버깅하기 위해 웹사이트의 TCP-프록시에 대한 가상 네트워크 인터페이스를 만들고 느린 네트워크 연결을 통해 브라우저에서 이를 확인하도록 하고 싶습니다.

지금까지 나는 다음과 같은 방법으로 설정했습니다.

ip link add dummy-SLOW type dummy
ifconfig dummy-SLOW 10.54.0.10 up
tc qdisc add dev dummy-SLOW root tbf rate 120kbit latency 200ms burst 1540

그런 다음

socat tcp-listen:443,bind=10.54.0.10,reuseaddr,fork tcp:XXX.XXX.XXX.XXX:443

/etc/hosts또한 IP 주소로 웹사이트를 볼 수 있도록 별칭을 추가했습니다 10.54.0.10.

글쎄요, 이 설정을 통해 사이트를 볼 수 있습니다. 문제 없습니다. 주소는 10.54.0.10Chrome 개발자 도구에도 표시됩니다. 하지만 트래픽 조절이 작동하지 않습니다. 여전히 너무 많은 바이트가 너무 빠르게 다운로드되는 것을 볼 수 있습니다. 트래픽 형성이 제대로 작동하도록 하려면 어떻게 해야 합니까?

참고: 프록시가 조절을 수행하도록 하는 방법이 있다면 그것은 나에게도 효과적입니다.

답변1

가상 인터페이스를 추가하지 않고도 일반 인터페이스에서 트래픽을 형성할 수 있습니다.

고유 ID로 qdisc 할당

tc qdisc add dev eth0 root handle 1: htb

위에 정의된 qdisc에 클래스를 할당합니다. 이것은 qdisc의 자식으로 간주됩니다. 나는 htb 모드를 사용하는데, 이는 본질적으로 tbf의 기능이 더 풍부한 버전이기 때문입니다.

tc class add dev eth0 parent 1:1 classid 1:10 htb rate 120kbit latency 200ms burst 1540

클래스에 필터를 할당하고 '10' 태그가 지정된 트래픽을 적극적으로 찾습니다.

tc filter add dev eth0 parent 1:0 prio 1 protocol ip handle 10 fw flowid 1:10

이제 TC에 규칙이 있으므로 스로틀을 위해 트래픽을 트래픽 제어로 보내야 합니다.

iptables -A OUTPUT -t mangle -p tcp --dport 443 -j MARK --set-mark 10

한 단계 더 나아가 443 트래픽을 수행하는 모든 사람을 제한하지 않도록 트래픽에만 영향을 미치는 규칙을 작성해 보겠습니다.

iptables -A OUTPUT -t mangle -p tcp -s <client IP > --dport 443 -j MARK --set-mark 10

서버에서 나가는 길에 트래픽을 표시함으로써 가능한 모든 Linux 네트워크 라우팅이 모두(기술적으로 %90) 완료되었는지 확인하고 이제 규칙과 일치하는 트래픽을 표시할 준비가 되었습니다. 테스트가 포트 443으로 들어오는 랩탑이나 다른 서버인 소스는 패킷 헤더에 10으로 표시됩니다. 이것이 확인되면 커널은 패킷을 가져와서 TC 규칙을 적용합니다.

다음을 수행하여 모든 맹글 규칙을 볼 수 있습니다.iptables -t mangle -nvL

관련 정보