리눅스 컴퓨터에서 http 요청을 조절하는 방법?


7

편집 : 여름은 여기 있습니다 : 우분투 11.04의 시스템 전체에서 최소한 Chrome에서는 최대 연결을 줄이는 것이 좋습니다. 대역폭을 조절할 필요 가 없거나 필요 하지 않습니다 . Verizon은 연결 수에만 신경을 쓰므로 변경하고 싶습니다. 또한, 필요하지 않으면 파이어 폭스를 사용하고 싶지 않습니다. 크롬을 사용하고 동기화 된 세 대의 다른 컴퓨터가 있고 파이어 폭스보다 선호합니다.

내 버라이존 휴대 전화를 통해 가정용 인터넷 연결에 테 더링을 사용합니다. 그것을 지불하지 않고. 이것은 내 닌텐도 wii를 통해 넷플릭스를 스트리밍하는 데 효과적이며 거의 모든 다른 용도로 사용할 수 있습니다. 랩톱에서 여러 개의 탭을 연 상태로 사용량이 많을 경우 휴대 전화의 네트워크 연결이 꺼졌다가 다시 꺼지지 만 완전히 연결되지는 않습니다.

나는 이것 과 다른 질문 에 근거하여 이것이 버라이존이 내 전화에서 너무 많은 http 요청을 받기 때문에 발생 한다고 생각 합니다. 5, 10으로 말하는 요청을 조절할 수있는 소프트웨어, 스크립트, 설정 등이 있습니까? 버라이존이 찾는 것보다 1이 적어서 셀의 네트워크 연결이 끊어지지 않습니까?

인터넷 연결을 완전히 차단하는 것보다 속도를 늦추기를 선호합니다. Netflix는 하루 종일 문제없이 실행되며 다른 어떤 것보다 많은 데이터를 사용하기 때문에 요청의 양이 거의 확실하고 데이터와 관련이 없습니다. 라우터가있는 경우 한 번에 너무 많은 요청을 허용하도록 쉽게 변경할 수있는 설정이 있다고 확신합니다 ...하지만이 경우 내 전화는 내 라우터이므로 설정이 없습니다. Verizon에서 HTC가 믿을 수 없을 정도로 netbook에서 우분투 11.04를 사용하고 있습니다 (전화 세부 정보는 관련이 없음)

나는 꽤 오랫동안 이것을 알아 내려고 노력해 왔으며, 현재 유일한 수정은 모든 요청이 중지되고 때로는 다시 작동하는지 확인하는 것입니다. 다른 경우에는 수동으로 3g 서비스를 껐다가 다시 켜야합니다. 도움을 주셔서 대단히 감사합니다!


더 크롬 솔루션이없는 경우 누군가가 최고의 하나를 제안 할 수 있다면 그럼 난 아마 그 때 현상금 : 수, 나에게 연결을 제한 할 수있는 방화벽 / 프록시 클라이언트 측을 얻을 것이다
딜런 머피

답변:


6

테 더링시 SSH 터널을 사용하여 임의의 연결 제한을 피했습니다. 아이디어는 다음과 같습니다.

ssh -D 1234 server

터널을 시작한 다음 양말 5 프록시 localhost / 1234를 사용하도록 파이어 폭스 또는 기타 소프트웨어를 구성합니다. 이 페이지 의 지침에 따라 firefox가 DNS 프록시를 사용하도록 지시 하십시오 .

결과적으로 라우터는 프록시에 대한 하나의 암호화 된 연결 만 보게됩니다.

Ubuntu를 사용하는 경우 Chrome 또는 Firefox가 아닌 Ubuntu 의 프록시 설정을 구성 할 수 있습니다 . 그런 다음 Chrome 및 Firefox를 포함한 모든 프로그램은 기본적으로 해당 프록시를 사용해야합니다.

를 열고 gnome-network-properties프록시를 로컬 호스트 포트 1234 로 설정하십시오 .


이것은 유망한 것으로 들립니다. 크롬에서 작동하는지 궁금합니다. 사이트는 파이어 폭스에 대해서만 이야기합니다. 그러나 테 더링에도 사용한다는 점이 시원합니다. 이것이 효과가 있고 아무 것도 더 잘 게시하지 않으면 현상금을 받게됩니다
dylan murphy

Chrome에서도 작동 할 것이라고 확신합니다 .SOCKS5는 매우 일반적인 기술입니다.
펠티어

흥미 진진한 일인데, 내가 퇴근 할 때 그 점을 알아볼 것입니다.
dylan murphy

이 작업을 도와 줄 수 있습니까? 해당 링크의 지침은 파이어 폭스 용이며, 실제로 크롬을 사용하고 싶습니다. 나는 이것에 따라 privoxy를 다운로드 했지만 실제로 내가하고있는 일을 모른다.
dylan murphy

죄송합니다. 크롬을 사용하지 않습니다.
Peltier 2016 년

3

Firefox를 사용하는 경우 about : config에서 "max-connections"설정을 검색하십시오.

그보다 복잡한 것은 트래픽 제어 / 패킷 필터링 / 방화벽을 필요로합니다. 예를 들어 Shorewall을 사용하여 연결 속도 제한을 수행 할 수 있습니다. http://www.shorewall.net/ConnectionRate.html


hrm 저는 크롬을 선호하지만 다른 방법이 없다면 firefox를 사용할 수 있습니다
dylan murphy

2

이를 위해 netfilter / iptables 방화벽에 규칙을 추가 할 수 있습니다. Netfilter는 새 연결과 패킷 당 필터 테이블에 관한 nat 테이블을 참조합니다. 단일 iptables 명령을 사용하여 새 연결을 제한 할 수 있습니다.

# iptables --table nat --append --protocol tcp -m multiport \
    --destination-ports 80,443 -m limit ! --limit 10/second --limit-burst 5 \
    --jump DROP

이 명령은 루트로 실행해야합니다. 모든 새로운 --table-nattcp --protocol tcp연결 시도를 포트 80 (http) 및 443 (https)에 --destination-ports 80,443대해 !초당 5 번의 연결 시도 한도를 초과하는 5 --limit 10/second개의 추가 연결을 허용합니다 --limit-burst 5. 그런 다음 netfilter에 이러한 패킷을 완전히 무시하도록 지시합니다 --jump DROP.

NB, 컴퓨터를 재부팅 할 때마다이 명령을 실행해야합니다.이 방법은 다양한 메커니즘을 통해 수행 할 수 있습니다. 이 파일을 쉘 스크립트에 던져 실행 가능하게 /etc/network/interfaces만들고이 파일을 사용하여 네트워크를 구성하고 데비안 변형을 사용하는 경우 사전 라인을 통해 호출 할 수 있습니다.

빠르고 쉬운 해킹은이 줄을 아래의 중요 시작 스크립트 중 하나에 추가하는 것입니다 /etc/init.d/.


흠, 이것은 유망하다. 나는 우분투 11.04를 사용하지만 스크립트에 정통하지는 않지만 init.d에 추가하면이 문제에 대한 쉬운 해결책이 될 것 같습니다. 그래서 기본적으로 답변에 쓴 내용을 해당 파일에 복사해야합니까?
dylan murphy

이 답변에는 내가 볼 수있는 두 가지 문제가 있습니다. 1) 실제로 문제를 해결하지 못합니다. 속도 제한을 제공 하지만 연결 제한 은 제공 하지 않습니다 . iptables는 --connlimit 및 cousins와의 연결 제한을 지원하지만 ... 2) -j DROP 또는 -j REJECT는 웹 페이지가 시간 초과 (DROP 사용)되거나 즉시 깨진 / 보여지는 것처럼 친숙한 웹 환경을 제공하지 않습니다. REJECT와의 연결이 거부되었습니다.
Flimzy 2016 년

Peltier의 대답은 연결을 정확하게 삭제하지 않고 연결을 제한하기 때문에 더 좋습니다. 그러나 실제로 속도 제한 연결을 수행합니다. nat 테이블은 새로운 연결에만 사용되며 종종 네트워크 주소 변환을 설정하는 데 사용됩니다 ( NAT).
jpaugh

Bad argument 'tcp'우분투에서 나에게 오류가 발생 합니다.
Stan James

1

Chromium 스레드 문제 12066 : Firefox의 호스트 당 연결 제한 인 15를 일치 시키면 Chrome 팀은 서버에 대한 6 개의 연결이 올바른 상한이라고 생각합니다.

6보다 많거나 적은 연결 수를 변경하려면 소스에서 Chrome을 빌드해야합니다. 또는 Firefox로 전달하십시오.

Firefox (3.5)의 기본값은 다음과 같습니다 about:config.

network.http.max-connections 30
network.http.max-connections-per-server 15
network.http.max-persistent-connections-per-proxy 8
network.http.max-persistent-connections-per-server 6
network.http.pipelining false
network.http.pipelining.maxrequests 4
network.http.proxy.pipelining false

위의 각 설정에 대한 설명서는 MozillaZine 기술 자료 에서 찾을 수 있습니다 .


예, @Micheal은 이미 파이어 폭스 비트를 언급했습니다. 미래 또는 베타 버전은 다른 버전이 있기 때문에 제어 할 수있는 옵션이 있다고 생각하십니까?
dylan murphy

Chrome 팀에 답변 할 수 없습니다. Firefox에는 필요에 따라 고려해야 할 몇 가지 변수가 있습니다.
harrymc

1

저수준 도구 또는 명령 행 도구의 경우 tc (트래픽 제어)를 시도하십시오. 이 도구는 대부분의 새로운 커널의 네트워킹 스택과 함께 작동하도록 제작되었습니다. 따라서 기본적으로 대부분의 시스템에서 사용할 수 있어야하며 설치가 필요하지 않습니다.

http 및 tc http://www.cyberciti.biz/faq/linux-traffic-shaping-using-tc-to-control-http-traffic/의 경우

tc
man tc

http://wiki.openvz.org/Traffic_shaping_with_tc
http://www.topwebhosts.org/tools/traffic-control.php

또한 읽을 가치가 있습니다 http://www.faqs.org/docs/Linux-HOWTO/Bandwidth-Limiting-HOWTO.html


불행히도, 질문 에서 굵은 글씨 로 언급 했듯이, 문제가 아닌 대역폭을 조절하고 싶지 않습니다. 버라이존은 다운로드 속도에 신경 쓰지 않고 연결 수에만 신경 쓰는 것처럼 보입니다.
dylan murphy

0

Trickle은이 작업을 수행하는 유틸리티입니다.

더 많은 정보를 원하시면 여기를 클릭하십시오

Trickle 패키지는 대부분의 Linux 배포판과 BSD에서 사용할 수 있습니다.

최신 Ubuntu 버전의 Trickle에 대한 정보 링크와 다운로드 링크는 다음과 같습니다.

우분투 소프트웨어 센터 나 시냅틱 패키지 관리자를 통해서도 구할 수 있습니다.

Fedora에 대한 링크는 다음과 같습니다.


멋진, 지금 다운로드 메신저, 나는 누군가가 다른 곳에 있지만 대역폭 조절을 위해 내가 원하는하지 이잖아 것을 제안했다 완벽한 그 다음 단지 스로틀 요청을 할 수있는 경우
딜런 머피

불행히도 내가 말할 수있는 한, 옳았습니다. 대역폭 조절 만하면되며 명확하게하려고하면 문제가 아닙니다.
dylan murphy

+ 정말 멋진 툴을 위해
nelaaro

이 도구는 연결이 아닌 대역폭을 제한하므로 질문의 요구 사항을 분명히 충족하지 못합니다.
Flimzy 2016 년

0

이 시스템 전체를 수행하는 가장 좋은 방법은 HTTP 프록시를 사용하는 것입니다. 그런 다음 선택적 으로 모든 연결에서 강제로 사용하도록 투명 프록시 로 구성 할 수 있지만 웹 브라우저를 수동으로 구성하는 것이 더 쉽고 제한이 적습니다.

iptables가 아닌 프록시로이 작업을 수행하는 주된 이유는 웹 브라우저를 화나게하지 않기 때문입니다. 다른 답변에서 제안한대로 -j DROP을 사용하면 본질적으로 TCP 연결을 완전히 버립니다. 즉, 브라우저가 응답을 기다리는 동안 시간이 초과 될 때까지 기다렸다가 마침내 반을 보여줍니다. 깨진 창, CSS 누락 등이있는로드 된 페이지

대신 프록시를 사용하면 보류중인 요청이 삭제되지 않고 계속할 여지가있을 때까지 대기됩니다.

아마도 내가 찾은 가장 단순하고 가벼운 구성은 Tinyproxy 를 설치 하고 MaxClients 값을 원하는 최대 아웃 바운드 연결 수로 설정하는 것입니다.

당신은 오징어 를 사용하고 싶을 것입니다. 아마도 과잉을 좋아하거나 캐싱 또는 다른 멋진 whiz-bang 기능을 좋아하기 때문에 필자가 볼 수있는 유일한 아웃 바운드 연결 제한은 피어별로입니다. 그러나 이것은 여전히 ​​작동 할 수 있습니다. 두 개의 프록시 (하나는 오징어, 다른 하나는 Tinyproxy, hehe)를 설정하고 max-conn 설정을 최대 연결 수로 설정하여 오징어의 유일한 피어로 Tinyproxy를 구성하십시오. 그런 다음 never_direct 옵션을 설정하여 해당 요청을 통해 모든 요청 을 전달 하도록 squid에 지시하십시오.


현상금이 만료되기 전에 이것을 제출했으면합니다. 이것은 내가 달성하고 싶었던 것에 가장 가까운 것처럼 들립니다. 내가 퇴근 할 때 이것을 시도하려고합니다.
dylan murphy

좋아, 그래서 tinyproxy가 있고 구성 파일을 낮은 MaxClients 값으로 변경했습니다. 작동하는지 어떻게 알 수 있습니까? 터미널에서 tinyproxy -d를 사용해 보았을 수도 있습니다. 어쨌든, 내가 바로 재부팅 할 때마다 이것을 실행해야합니까?
dylan murphy

현상금이 만료되기 약 5 분 전에 제출 한 것으로 생각되지만 큰 도움이되지 않습니다 ... 도움이된다면 그것이 중요합니다 :) 테스트하려면 MaxClients를 1로 설정 한 다음 한 번에 여러 페이지를로드하십시오. 작동하는 경우 실제로는 한 번에 하나의 파일 만로드한다는 것이 명백합니다. 네트워크 인터페이스에서 iptraf를 실행할 수도 있습니다. 현재 모든 활성 TCP 연결을 표시 할 수있는 모드가 있습니다. 포트 80에 대한 연결 수는 제한되어 있습니다.
Flimzy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.