По умолчанию порт, который открывает клиент, доступен только с той машины, где клиент запущен; всем остальным в соединении отказывают. Это разумное значение по умолчанию и меняется оно одной строкой. После этого любое устройство в той же подсети, куда можно вписать адрес прокси, получает доступ к тому же каналу: Android-телевизор, консоль, планшет, другой ноутбук, на котором вообще ничего не установлено.
Переключатель меняет адрес прослушивания
Опция обычно называется Allow LAN или «разрешить подключения из локальной сети», а в конфигурации это allow-lan: true. Пока она выключена, ядро слушает только 127.0.0.1, и достучаться до него может лишь сама машина. Когда включена, адрес прослушивания становится 0.0.0.0, и принимаются соединения, приходящие на любой интерфейс. Если у хоста интерфейсов несколько — скажем, кабель плюс виртуальный адаптер от виртуальной машины, — bind-address сужает это обратно до одного конкретного адреса, а остальные остаются закрытыми.
Подключение занимает три шага
- На хосте включите Allow LAN и заодно запишите номер смешанного порта. Из коробки это обычно 7890.
- Узнайте адрес хоста в локальной сети. Нужен тот, что начинается на 192.168. или 10., а не публичный адрес, который показывают сайты вида «какой у меня IP».
- На другом устройстве задайте ручной HTTP-прокси: адрес хоста в поле сервера, этот порт в поле порта. В Android и на большинстве телеприставок это лежит в расширенных настройках самой сети Wi-Fi; в iOS — внизу страницы с параметрами сети; на консолях — внутри ручной настройки сети.
- Полезно знать заранее: у многих телеприставок и консолей есть поле только для HTTP-прокси, а SOCKS в меню нет вовсе. Смешанный порт принимает оба протокола, так что подойдёт тот же номер и искать больше нечего.
ipconfig
ip -4 addr show
ifconfig | grep inet
Всё выглядит правильно, и ничего не подключается
В девяти случаях из десяти виноват брандмауэр. Когда клиент впервые начинает слушать внешний адрес, Windows показывает окно с вопросом, разрешить ли обмен данными в частных сетях, в общедоступных или в обеих. Это окно часто закрывают, не прочитав, либо отмечают только общедоступные сети, тогда как домашний Wi-Fi отнесён к частным. В итоге хост прекрасно работает сам для себя и отказывает всем остальным устройствам, причём в интерфейсе клиента ничто на проблему не намекает. Откройте правила для входящих подключений, найдите запись клиента или ядра и убедитесь, что она разрешена для того типа сети, в котором вы сейчас находитесь. В macOS то же самое живёт в разделе брандмауэра системных настроек; в Linux зависит от того, ufw у вас или firewalld.
Сначала проверьте порт, потом подозревайте устройство
curl -x http://127.0.0.1:7890 -I https://www.cloudflare.com
curl -x http://192.168.1.10:7890 -I https://www.cloudflare.com
Первую строку выполните на хосте, вторую — с другого компьютера, подставив свой адрес. Хост отвечает, а вторая машина нет: либо брандмауэр, либо они на самом деле не в одной подсети — в обычной домашней сети первые три числа обоих адресов должны совпадать. Не отвечает ни то, ни другое: дело в клиенте или узле, и раздача по локальной сети тут ни при чём. На устройстве без curl просто откройте любую страницу в браузере: загрузились картинки — значит прошло.
Прежде чем включать, решите, кому можно подключаться
- Подключиться может любое устройство подсети, прокси не разбирает, кто это. Чтобы поставить дверь, добавьте в конфигурацию
authentication— список пар «имя и пароль», — после чего устройство при настройке прокси попросит ещё два поля. В общежитии, на съёмной квартире и в офисе это не опция, а обязательный пункт. - DHCP рано или поздно выдаст другой адрес. Перезагрузили хост или истёк срок аренды — адрес уехал, и все настроенные устройства разом замолкают. Зарезервируйте адрес за хостом на роутере или задайте статический, и повторять эту работу не придётся.
- У части устройств настройки прокси нет вообще: множество умной техники и телевизоры постарше. Пустить через прокси целую подсеть, ничего не настраивая на самих устройствах, — совсем другая задача: шлюз или прозрачная маршрутизация, где и сложность, и цена ошибки заметно выше. Это за рамками текста.
allow-lan людей не различает: любое устройство в той же подсети может пользоваться вашим прокси как бесплатным выходом, а трафик и записи о посещениях запишут на вас. Если деваться совсем некуда, bind-address вместе с authentication — это минимум, а не приятное дополнение; чаще же правильный ответ — не включать.