7

РЕДАКТИРОВАТЬ: вот краткое изложение: мне нужно уменьшить максимальное количество соединений, желательно в масштабе всей системы в Ubuntu 11.04, но, по крайней мере, в Google Chrome. мне не нужно или не нужно регулировать пропускную способность, Verizon, кажется, заботится только о количестве соединений, так что это все, что я хочу изменить. Кроме того, я не хочу использовать Firefox без необходимости, у меня есть три другие машины, использующие Chrome и синхронизированные, и я просто предпочитаю его Firefox.

я использую модем для домашнего подключения к интернету через сотовый телефон verizon. не платя за это. это прекрасно работает для потоковой передачи netflix через мой nintendo wii и практически для любого другого возможного использования, которое у меня было для него. кроме того, во время интенсивного использования с несколькими открытыми вкладками на моем ноутбуке, сетевое соединение на моем телефоне просто выключится, затем снова включится, затем выключится, но оно никогда полностью не подключится.

Я думаю, исходя из этого и других вопросов, это вызвано тем, что verizon получает слишком много http запросов с моего телефона. есть ли какое-либо программное обеспечение, сценарий, настройка или иное, что позволило бы мне ограничить количество запросов на получение ответа, 5 или 10, или что бы то ни было, это на 1 меньше, чем ищет verizon, чтобы сетевое соединение моей ячейки не было потеряно?

Я бы предпочел замедление, а не полное отключение моего интернет-соединения. Я почти уверен, что количество запросов и не связано с данными, потому что, как я уже говорил, Netflix будет работать весь день без помех, и это использует больше данных, чем все остальное, что я буду делать. если бы у меня был роутер, я почти уверен, что есть настройки, которые я мог бы легко изменить, чтобы разрешать только столько запросов одновременно ... но в этом случае мой телефон - это мой роутер, поэтому никаких настроек нет. Я использую Ubuntu 11.04 на моем нетбуке с HTC невероятно на Verizon (не то, что телефонные данные имеют значение)

Я пытался выяснить это в течение достаточно долгого времени, в настоящее время единственное исправление заключается в том, чтобы убедиться, что все запросы остановлены, а затем иногда это работает снова, в других случаях мне приходится вручную отключать службу 3g и затем снова включать. Большое спасибо за любую помощь!

7 ответов7

6

Я успешно использую SSH-туннель, чтобы обойти произвольные пределы соединения при подключении. Идея заключается в следующем:

ssh -D 1234 server

запускает туннель, затем вы настраиваете firefox или другое программное обеспечение для использования socks 5 proxy localhost/1234. Следуйте инструкциям на этой странице, чтобы настроить Firefox также использовать прокси для DNS.

В результате маршрутизатор увидит только одно зашифрованное соединение с вашим прокси.

Если вы используете Ubuntu, вы можете настроить параметры прокси для Ubuntu, а не для Chrome или Firefox. Затем все программы, включая Chrome и Firefox, должны использовать этот прокси по умолчанию.

Откройте gnome-network-properties и установите прокси на хост localhost, порт 1234.

3

Если вы используете Firefox, найдите настройки «max-connections» в about:config.

Для чего-то более сложного, чем это, вероятно, требуется управление трафиком / фильтрация пакетов / межсетевой экран - например, вы можете использовать Shorewall для ограничения скорости соединения: http://www.shorewall.net/ConnectionRate.html

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

Эта команда должна быть запущена от имени пользователя root. Он соответствует всем новым --table-nat tcp --protocol tcp к портам 80 (http) и 443 (https) --destination-ports 80,443 что выше ! ограничение в 5 попыток подключения в секунду --limit 10/second , с допуском 5 дополнительных соединений --limit-burst 5 . Затем он инструктирует netfilter полностью игнорировать эти пакеты --jump DROP .

Примечание: вам нужно будет запускать эту команду каждый раз при перезагрузке компьютера, что может быть выполнено с помощью различных механизмов. Вы можете добавить это в сценарий оболочки, сделать его исполняемым и вызвать его через строку предварительной настройки в /etc/network/interfaces если вы используете этот файл для настройки вашей сети и если вы используете вариант debian.

Быстро, легко взломать это, добавив эту строку в один из наиболее важных скриптов запуска в /etc/init.d/ .

1

Для инструмента низкого уровня или инструмента командной строки попробуйте tc (контроль трафика). Этот инструмент создан для работы с сетевым стеком большинства новых ядер. Поэтому он должен быть доступен в большинстве систем по умолчанию, установка не требуется.

Для http и tc http://www.cyberciti.biz/faq/linux-traffic-shaping-using-tc-to-control-http-traffic/

дц
человек тк

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

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.

0

Я подозреваю, что лучший способ сделать это в масштабе всей системы - использовать HTTP-прокси. Затем вы можете при желании настроить его в качестве прозрачного прокси, чтобы принудительно использовать его для всех подключений, но проще (и имеет меньше ограничений) просто настроить веб-браузеры вручную.

Основная причина сделать это с прокси, а не с iptables, заключается в том, чтобы он не раздражал ваш веб-браузер. Используя -j DROP, как предлагается в другом ответе, вы фактически полностью отбрасываете соединение TCP - это означает, что ваш браузер, вероятно, будет сидеть там в ожидании ответа, пока не истечет время ожидания, а затем, наконец, покажет вам половину загруженная страница, с разбитыми окнами, отсутствующим CSS и т. д.

Вместо этого с помощью прокси отложенные запросы не сбрасываются - они просто ставятся в очередь, пока не останется места для продолжения.

Вероятно, самая простая и легкая конфигурация (которую я нашел до сих пор) состояла бы в установке Tinyproxy и установке значения MaxClients на максимальное количество исходящих соединений, которое вы хотите.

Если вы хотите использовать squid --perhaps, потому что вам просто нравится overkill, или, может быть, вам нравится его кэширование или другие причудливые функции whiz-bang, то единственное ограничение на исходящее соединение, которое я вижу, - для каждого участника. Но это все еще может работать. Установите два прокси - один как squid, другой как что-то другое (возможно, Tinyproxy, хе-хе), и настройте Tinyproxy как единственный узел squid с параметром max-conn, установленным на максимальное количество соединений. Затем скажите squid пересылать все запросы через этот узел, установив опцию never_direct.

0

Trickle - это утилита, которая сделает это за вас.

Нажмите здесь для дополнительной информации

Пакеты Trickle доступны для большинства дистрибутивов Linux и BSD.

Вот ссылка на информацию для Trickle о последней версии Ubuntu, со ссылками на скачивание

Вероятно, он также доступен через Ubuntu Software Center или Synaptic Package Manager.

Вот ссылка на Fedora

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .