IPTABLES не отбрасывает входящие DNS-пакеты

Окончательное решение будет таким:

$ sed 's:/:\\/:g'  <<<"$str"
\/tmp\/test\/folder1\/test.txt

Но объяснить, как туда добраться:
Да, вы пропустили одну обратную косую черту:

$ str='/tmp/test/folder1/test.txt'
$ sed "s/\//\\\\\//g" <<<"$str"
\/tmp\/test\/folder1\/test.txt

Я надеюсь, что один пробел прояснит ситуацию:

$ sed "s/\//\\\\ \//g"  <<<"$str"
\ /tmp\ /test\ /folder1\ /test.txt

Но если вы измените разделитель sed на :(, например):

$  sed "s:\/:\\\\\/:g"  <<<"$str"
\/tmp\/test\/folder1\/test.txt

Но это не совсем правильно, так как (теперь не специальный)/не нуждается в скейпинге:

$ sed "s:/:\\\\/:g"  <<<"$str"
\/tmp\/test\/folder1\/test.txt

И, если вы будете использовать одинарные кавычки вместо двойных, оболочка не изменит двойную \\на единицу, поэтому меньше \будет правильным:

$ sed 's:/:\\/:g'  <<<"$str"
\/tmp\/test\/folder1\/test.txt

Что гораздо чище.

1
16.10.2019, 19:29
1 ответ

Итак, вывод iptables -t nat -Lпоказал:

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  anywhere             anywhere             tcp dpt:domain to:8.8.8.8
DNAT       udp  --  anywhere             anywhere             udp dpt:domain to:8.8.8.8
DNAT       tcp  --  anywhere             anywhere             tcp dpt:domain to:8.8.8.8
DNAT       udp  --  anywhere             anywhere             udp dpt:domain to:8.8.8.8

, что было действительно странно. Я удалил эти правила, введя iptables -t nat -D #, и теперь DNS-запросы блокируются. Спасибо всем, кто пытался помочь. Действительно ценю это.

1
27.01.2020, 23:40

Теги

Похожие вопросы