Обновление apt-get застряло в «Ожидании заголовков» при использовании Windows XP ICS

13

Я устанавливаю сервер Maverick на запасном ПК. Установка завершается нормально, и система загружается в оболочку. Однако, когда я пытаюсь это сделать apt-get update, apt зависает почти на каждой записи с сообщением, 99% [Waiting for headers]иногда 96 b/sв крайнем правом углу появляется сообщение . Фактический процент, который это требует, также изменяется.

Поиск вокруг онлайн дал потенциальное решение с помощью опции Acquire::http::Pipeline-Depth="0"это несколько облегчает задачу, т.е. киосков на любой другой записи с тем же сообщением , как указано выше.

Если вы подождете (все обновление заняло около 4 часов), обновление все равно не будет выполнено, так как значительная часть обращений показывает «не удается подключиться» или подобное сообщение, несмотря на то, что я могу просто пропинговать сервер с компьютера хорошо.

Эта проблема также не связана с используемым зеркалом, так как я пробовал около дюжины зеркал безуспешно, я даже пытался закомментировать все, кроме mainзаписи в sources.list, и он все еще отказывается обновляться.

С сетевым подключением все в порядке, так как я могу ping и wget (apt не позволит мне установить lynx, пока я не выполню успешное обновление). Я также переустанавливал дистрибутив без удачи.

Единственное, что странно в настройке, это то, что ПК подключается к Интернету через мой ноутбук с Windows, с правильно настроенной ICS, но, как я уже говорил, с сетевым подключением все в порядке.

crasic
источник
Попробуйте выполнить следующие команды в своем терминале sudo dpkg --configure -aиsudo apt-get update && sudo apt-get upgrade
karthick87
Соединение через ICS звучит как проблема с ожиданием, особенно если одна из ссылок - WiFi. Можно ли подключиться более напрямую?
MSW
@msw сейчас нет, но у меня сложилось впечатление, что ICS - это всего лишь эквивалент пересылки iptables для linux, какие проблемы это может вызвать? Предполагая, что это работает нормально в противном случае (что это).
авария
У меня мало опыта работы с ICS, потому что я никогда не думал, что он достаточно надежен для каких-либо целей, и, учитывая слабый административный (отладочный) доступ ко всей сетевой поддержке Microsoft, предполагал, что это принесет головную боль. Ваш опыт ниже, кажется, немного подтверждает мое предположение.
Мсв

Ответы:

9

Кажется, есть фундаментальная проблема с реализацией ICS и переадресации IP в целом в Windows XP, она просто не может обрабатывать несколько подключений к одному серверу, возможно, это какая-то странная комбинация ошибки с преднамеренной некомпетентностью (как я ее называю) , но конечный результат заключается в том, что XP не может функционировать как компетентный маршрутизатор / прокси для системы linux (возможно, ограничения преднамеренно установлены для систем, отличных от Windows).

Интересно отметить, что это не только ICS. В реестре Windows есть скрытая опция, которая позволяет пересылку IP для сетевых интерфейсов, и она страдает от той же проблемы.

Похоже, что единственным решением является либо изменение топологии сети, чтобы избежать использования ICS (либо непосредственное подключение, либо покупка выделенного коммутатора / точки доступа), либо использование другой ОС для настройки временного моста. Я использовал Ubuntu Live-CD (это был не мой компьютер, или он должен был запускать * nix) и включил переадресацию пакетов и маскировку IP-адресов, чтобы компьютер вел себя как добросовестный маршрутизатор.

crasic
источник
3

В Интернете есть некоторые слухи (я не могу их проверить) о проблемах ICS с IP6. Они сказали, что когда ICS получает более одного соединения IP6, он на некоторое время останавливается. Это может объяснить, почему работает wget (только одно соединение), а обновление apt-get завершается неудачно (много одновременных соединений).

Вы можете попробовать отключить IP6 на своем сервере, чтобы проверить, если это проблема.

Вы можете отключить IP6 из терминала с помощью:

echo "#disable ipv6" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.all.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
echo "net.ipv6.conf.lo.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf

Затем перезагрузите компьютер и проверьте, можете ли вы обновить. Если это работает, по крайней мере, вы знаете, где проблема. Вы можете отключить IP6 постоянный или запланировать новую настройку. Обратите внимание, что отключение IP6 будет временным взломом, IP6 кажется неизбежным в ближайшем будущем.

Чтобы снова включить IP6, удалите предыдущие строки из /etc/sysctl.conf и перезагрузите компьютер.

Хавьер Ривера
источник
ICS, кажется, виноват здесь, однако ваше предложение не устранило его. После подключения компьютера напрямую все заработало как положено. Теперь, когда у меня обновлены репозитории, я даже не могу сделать это apt-get installчерез ICS ... хммм.
авария
Возможно, у ICS есть проблема с большим (или может быть скромным) количеством одновременных подключений к одному и тому же серверу.
Хавьер Ривера
Вам не нужно перезагружаться: после изменения sysctl.conf наберите, sysctl -aи все готово. Вы также можете сократить ввод текста, используя документ здесь вместо того, чтобы все время транслировать из echo.
Мей