LINUX.ORG.RU

Как отключить слежку файрфокса за сетевыми интерфейсами?

 ,


0

2

Уже спрашивал, может с тех пор новая информация будет.

Когда вылетает pppd и исчезает интерфейс ppp0 - файрфокс отменяет все имеющиеся сетевые запросы от себя. При этом если грузилась какая-то новая вкладка, то загрузка просто прерывается без каких-либо оповещений, во вкладке остаётся пустое окно, зафейленной она не считается и ф5 в ней не работает (хорошо хоть можно навести фокус на урл и нажать энтер). Как это дефективное поведение отключить (всмысле, отключить вообще любые попытки реагировать на состояния сетевых интерфейсов)? Есть штатный способ? Или может быть костыльный (но без виртуалок итд подобного)?

На всякий случай сразу уточню: все коннекты идут через локальное прокси, соответственно никакие проблемы с сетевыми интерфейсами на возможность фф общаться с этим прокси физически не влияют. То есть это исключительно его вредительское желание принудительно оборвать работающие коннекты.

★★★★★

Последнее исправление: firkax (всего исправлений: 3)
Ответ на: комментарий от firkax

Теперь попробовал. Пока воспроизвёл один раз, и больше повторить не могу. Думал, что дело могло быть в новом, чистом профиле, с нетронутым на момент запуска about:config, но смена настройки в любую сторону с перезапуском и без оного ничего не меняют. Что это было — загадка.

Поведение при ip link add/del при этом остаётся стабильно зависимым от network.notify.changed.

thriller ★★
()
Последнее исправление: thriller (всего исправлений: 1)
Ответ на: комментарий от thriller

Ха, поменял netcat на socat с fork — ip route стал стабильно воспроизводить остановку загрузки, а насчёт ip link поведение не поменялось.

mfw начали с разговоров о том, что прокся может вести себя неправильно, а пришли к тому, что лучшим костылём в данной ситуации может быть именно глючная прокся :D

Можешь ещё пологировать NetlinkService через about:logging, мне там читать уже лень. И, скорее всего, продолжать логичнее будет в их багзилле.

thriller ★★
()
Ответ на: комментарий от thriller

Как вариант можно накостылить либу которая переопределяет socket и в случае когда открывают AF_NETLINK возвращает -1

Её засунуть в прелоад и фокс отучится слушать события сети.

А вообще пора взять и вырезать из фокса все лишнее. На кой черт он вообще должен иметь представление о состоянии сети на машине? Пора этой любопытной Варваре оторвать ее длинный нос.

timdorohin ★★★★
()
Ответ на: комментарий от timdorohin

Спасибо, помогло.

Если кому надо ещё:

#define _GNU_SOURCE
#include <sys/socket.h>
#include <linux/netlink.h>
#include <stdio.h>
#include <dlfcn.h>

static int (*libc_real_socket)(int domain, int type, int protocol);

int socket(int domain, int type, int protocol) {
  if(domain==AF_NETLINK && protocol==NETLINK_ROUTE) { fprintf(stderr, "denying netlink-route socket()\n"); return -1; }
  if(!libc_real_socket && !(libc_real_socket=dlsym(RTLD_NEXT,"socket"))) { fprintf(stderr, "glibc socket() missing?!\n"); return -1; }
  return libc_real_socket(domain, type, protocol);
}

/*
  gcc -shared -o no_netlink_route.so no_netlink_route.c -ldl -lc
  LD_PRELOAD=./no_netlink_route.so
  */

И положил себе в $HOME/bin скрипт firefox-esr такого содержания:

#!/bin/sh -e

LD_PRELOAD=$HOME/bin/no_netlink_route.so exec /usr/bin/firefox-esr "$@"

firkax ★★★★★
() автор топика
Ответ на: комментарий от firkax

netcat один раз поработал, а потом попытался выйти, но был SIGSTOP-нут шеллом за попытку почитать из tty. Ну и firefox тем временем параллельно с единственной вкладкой ещё и генерировал запросы для обнаружения captive portal. socat, принимавший произвольное количество соединений, оказался более честным тестом.

thriller ★★
()
Ответ на: комментарий от thriller

То есть если завесить те коннекты, через которые пришли captive portal запросы, у фф ломается слежка за интерфейсами? Интересный способ фикса, я бы его тоже мог применить (сейчас на них http 500 отдаётся как на всё заблокированное), но нашёлся более прямолинейный.

firkax ★★★★★
() автор топика
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Я не уверен, что дело именно в captive portal, это может быть общая реакция на тот факт, что соединение с проксёй даже не успевает установиться (TCP SYN послан, а в ответ ни приёма соединения, ни reject, лишь тишина).

thriller ★★
()