Рейтинг:1

iptables - как можно использовать несколько источников предварительной маршрутизации для принудительной передачи DNS-трафика через определенный IP-адрес?

флаг br

Я знаю, что этот вопрос задавался исторически, но ответы, которые мне еще предстоит найти, не слишком полезны в этом одном нишевом случае использования.

В настоящее время у меня есть один маршрутизатор с DD-WRT на 192.168.0.1, один маршрутизатор, подключенный к предыдущему с IP-адресом 192.168.0.2, который работает как VPN-клиент, и один Raspberry Pi, настроенный для запуска https://pi-hole.net DNS. фильтрация на 192.168.0.21.

В конечном счете, моя цель здесь — просто заблокировать все DNS-запросы в моей сети с любого устройства на любой DNS-сервер, кроме моего второго маршрутизатора и моего pihole, и разрешить только этим двум устройствам делать DNS-запросы.


На моем маршрутизаторе мои текущие правила брандмауэра (iptables) следующие:

##### Держите сеть на pi-hole
iptables --table nat --insert PREROUTING --in-interface br0 --protocol tcp --source ! 192.168.0.2,192.168.0.21 --destination-port 53 --jump DNAT --to-destination 192.168.0.21:53
iptables --table nat --insert PREROUTING --in-interface br0 --protocol udp --source ! 192.168.0.2,192.168.0.21 --destination-port 53 --jump DNAT --to-destination 192.168.0.21:53
#####Дырокол DNS для pi-hole
iptables --table nat --insert PREROUTING --in-interface br0 --protocol tcp --source 192.168.0.2,192.168.0.21 --destination-port 53 --jump ACCEPT
iptables --table nat --insert PREROUTING --in-interface br0 --protocol udp --source 192.168.0.2,192.168.0.21 --destination-port 53 --jump ACCEPT

Теперь я просто предположил, что все работает нормально и денди. Однако на самом деле я никогда не входил и пытался для проверки правил. При попытке выполнить команды я обнаружил, что правила 3 ​​и 4 работают нормально. Однако правила 1 и 2 не:

root@ddwrt:~# iptables --table nat --insert PREROUTING --in-interface br0 --protocol tcp --source ! 192.168.0.2,192.168.0.21 --destination-port 53 --jump ПРИНЯТЬ
Неверный аргумент `192.168.0.2,192.168.0.21'

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

root@ddwrt:~# iptables --table nat --insert PREROUTING --in-interface br0 --protocol tcp ! --source 192.168.0.2,192.168.0.21 --destination-port 53 --jump ПРИНЯТЬ
iptables v1.8.5 (старый): ! не допускается с несколькими исходными или целевыми IP-адресами

Более исследовать заставил меня попытаться использовать ipset для решения проблемы:

root@ddwrt:~# ipset -N piholeAndVpnПроход через iphash
root@ddwrt:~# ipset -A piholeAndVpnPassthrough 192.168.0.2
root@ddwrt:~# ipset -A piholeAndVpnPassthrough 192.168.0.21

Эта часть прошла нормально. Однако, никогда не используя ipset, я не мог заставить его работать, каким бы способом я ни пытался:

root@ddwrt:~# iptables --table nat --insert PREROUTING --in-interface br0 --protocol tcp ! --source --match-set "piholeAndVpnPassthrough" --destination-port 53 --jump DNAT --to-destination 192.168.0.21:53
Плохой аргумент `piholeAndVpnPassthrough'
Попробуйте `iptables -h' или 'iptables --help' для получения дополнительной информации.
root@ddwrt:~# iptables --table nat --insert PREROUTING --in-interface br0 --protocol tcp ! --source -m set --match-set piholeAndVpnPassthrough --destination-port 53 --jump DNAT --to-destination 192.168.0.21:53
Плохой аргумент `set'
Попробуйте `iptables -h' или 'iptables --help' для получения дополнительной информации.
root@ddwrt:~# iptables --table nat --insert PREROUTING --in-interface br0 --protocol tcp -m set --match-set piholeAndVpnPassthrough ! --source --destination-port 53 --jump DNAT --to-destination 192.168.0.21:53
iptables v1.8.5 (устаревшая версия): --match-set требует двух аргументов.
Попробуйте `iptables -h' или 'iptables --help' для получения дополнительной информации.
root@ddwrt:~# iptables --table nat --insert PREROUTING --in-interface br0 --protocol tcp -m set --match-set piholeAndVpnPassthrough src ! --source --destination-port 53 --jump DNAT --to-destination 192.168.0.21:53
iptables v1.8.5 (старый): Set piholeAndVpnPassthrough не существует.

Таким образом, я понятия не имею, как это сделать. Как использовать два отрицательных исходных адреса в iptables?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.