systemd-разрешение
привязывается к вот
интерфейс:
# ss -aunp src == 127.0.0.53 спорт == 53
Состояние Recv-Q Send-Q Локальный адрес:Порт Адрес равноправного узла:Порт
UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:* пользователи:(("systemd-resolve",pid=44157,fd=17))
Это ограничивает доступные маршруты даже один раз net.ipv4.conf.br0.route_localnet=1
применяется к тем, которые установлены на вот
интерфейс:
$ ip -4 route show table all dev lo
широковещательная передача 127.0.0.0 таблица локальная прото область ядра ссылка src 127.0.0.1
локальная таблица 127.0.0.0/8 локальная прото-область ядра host src 127.0.0.1
локальная таблица 127.0.0.1 локальная прото-область ядра host src 127.0.0.1
широковещательная рассылка 127.255.255.255 таблица локальная прото область ядра ссылка src 127.0.0.1
Ни один не будет соответствовать.
Адрес источника должен быть изменен. В то время как редко используется введите nat hook input
цепочка позволила бы изменить исходный адрес до того, как приложение его получило, уже слишком поздно: это происходит после того, как маршрутизация была сделана, а пакет уже отброшен. Таким образом, NAT с отслеживанием состояния не может справиться с этим случаем.
Вместо этого для этого можно использовать прокси (после удаления всех конкретных настроек nat). Вот пример использования сокат
. сокат
не являясь специализированным приложением, есть оговорки, особенно для UDP.
Обработка TCP (OP забыл, что DNS тоже использует TCP)
socat TCP4-LISTEN:53,bind=192.168.1.2,reuseaddr,fork TCP4:127.0.0.53:53
Не могу привязать к IN_ADDR_ANY
потому что 127.0.0.53:53 уже привязан, поэтому привяжите к указанному адресу OP (по неправильным причинам): 192.168.1.2. Помимо этого, это довольно просто.
UDP-обработка
socat -T 20 UDP4-LISTEN:53,bind=192.168.1.2,reuseaddr,fork UDP4:127.0.0.53:53
Тайм-аут 20 сек здесь, потому что сокат
нельзя сказать, чтобы он остановился сразу после получения ответа на один пакет UDP, и все разветвленные пакеты будут сохранены. сокат
команды накапливаются со временем.
Хотя в этом случае UDP не обязательно привязываться к адресу, привязка к адресу с использованием UDP позволяет избежать предостережения, связанного с множественной адресацией и необходимостью использования IP_PKTINFO
вариант сокета.