Как маршрутизировать весь трафик, идущий от привязки?

Я работаю над некоторым тестовым проектом, в основном я хочу маршрутизировать весь трафик, когда я в режиме "горячей точки", в фиксированный адрес. У меня есть диапазон IP, например 192.168.0.0/24. Я не знаю, могу ли я использовать iptables без root или JNI-функций (не могу найти то, что соответствует тому, что я хочу) Мышление из коробки очень приветствуется (DNS, передача пакетов низкого уровня на клиентском подключении и т.д.)

Любая идея?

EDIT. Как Android и iOS обнаруживают сетевой портал?

источник: https://sudoroom.org/wiki/Mesh/Firmware/Splash_page Они пытаются HTTP GET на

iOS: http://www.apple.com/library/test/success.html и ожидать 200, если не за порталом

Android: http://clients3.google.com/generate_204 и ожидание статуса 204, если не за порталом, любой другой статус - это портал

Итак, как я могу правильно ответить на эти обнаружения?

Ответ 1

Самый простой способ - включить прокси-сервер socks при настройке подключенного Wi-Fi-соединения. Это зависит от версии Android, но обычно это что-то вроде:

  • Нажмите и удерживайте сеть Wi-Fi, к которой вы хотите подключиться.
  • Должно появиться диалоговое окно. В этом диалоговом окне выберите расширенный.
  • Найдите опцию прокси-сервера и введите IP-адрес и порт сервера, на который вы хотите переслать трафик.

Android говорит SOCKS, и пока ваш прокси-сервер тоже говорит SOCKS, вам хорошо идти. Если вы запустили устройство, которое вы можете (в зависимости от вашей версии Android), настройте этот прокси автоматически. Смотрите, например, AdBlock Plus для Android, который делает именно это.

Если вы не хотите использовать прокси-маршрут, вы можете вручную установить правила ebtables, если ваше устройство внедрено. Это значительно больше работы, так как вы должны быть осторожны, чтобы не испортить NAT, что ваше устройство уже делает.