Здравствуйте
Имеется сервер. Debian 7 x86_64, ядро 3.2.0-4-amd64
eth1 - белый ip4 адрес
eth0 - адрес 192.168.0.1/24(внутренняя сеть)
Настроил 6to4 интерфейс, как описано тут:
6to4.ru
Конфигурация iptables и ip6tables по умолчанию(это временно, не обращайте внимание на то, что для локалки не настроено правил).
ipv6 интернет адреса доступны, все пингуется, также я с другого ipv6-адреса(miredo) могу зайти на данный сервер по ssh.
Теперь про iptables. Допустим я хочу контролировать траффик.
Допустим имеется следующий скрипт для iptables:
#!/bin/bash
#iptables###########################
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
#ip6tables###############################
ip6tables -F
ip6tables -X
ip6tables -P INPUT ACCEPT
ip6tables -P FORWARD ACCEPT
ip6tables -P OUTPUT ACCEPT
Насколько я понимаю, в данном случае в iptables(для ipv4) НЕТ правила, которое разрешает входящие пакеты ipv4 с типом 41 (ipv6), сооветственно входящий ipv6 траффик(не настоящий ipv6, а ipv6 упакованный в ipv4, т.е. фактически это входящий ipv4 траффик) должен блокироваться в соответствии с политикой, которая установилась вызовами:
iptables -P INPUT DROP
iptables -P FORWARD DROP
!!!НО. Они проходят. В соответствии с приведенным скриптом для настройки, я спокойно захожу на данный серевер по ssh (через ipv6), или пингую его посредством ping6, пинг проходит, возвращаются ответы.
Желая разобраться добавил в приведенный скрипт следующие строки:
iptables -A INPUT -p 41 -j LOG --log-level debug --log-prefix "p-41 filter INPUT "
iptables -A OUTPUT -p 41 -j LOG --log-level debug --log-prefix "p-41 filter OUTPUT "
iptables -A FORWARD -p 41 -j LOG --log-level debug --log-prefix "p-41 filter FORWARD "
iptables -t mangle -A PREROUTING -p 41 -j LOG --log-level debug --log-prefix "p-41 mangle PRE "
iptables -t mangle -A INPUT -p 41 -j LOG --log-level debug --log-prefix "p-41 mangle INPUT "
iptables -t mangle -A OUTPUT -p 41 -j LOG --log-level debug --log-prefix "p-41 mangle OUTPUT "
iptables -t mangle -A FORWARD -p 41 -j LOG --log-level debug --log-prefix "p-41 mangle FORWARD "
iptables -t mangle -A POSTROUTING -p 41 -j LOG --log-level debug --log-prefix "p-41 mangle POST "
iptables -t nat -A PREROUTING -p 41 -j LOG --log-level debug --log-prefix "p-41 nat PRE "
iptables -t nat -A OUTPUT -p 41 -j LOG --log-level debug --log-prefix "p-41 nat OUTPUT "
iptables -t nat -A POSTROUTING -p 41 -j LOG --log-level debug --log-prefix "p-41 nat POST "
iptables -t raw -A PREROUTING -p 41 -j LOG --log-level debug --log-prefix "p-41 raw PRE "
iptables -t raw -A OUTPUT -p 41 -j LOG --log-level debug --log-prefix "p-41 raw OUTPUT "
Т.е. в данном случае, я смотрю через syslog, в каких цепочках побывали пакеты с типом протокола ipv6(41).
Результат(патеты с типом 41 были в):
таблица filter: цепочка OUTPUT
таблица mangle: цепочки PREROUTING, INPUT, OUTPUT, POSTROUTING
таблица raw: цепочки PREROUTING, OUTPUT.
Вопрос: Почему входящие пакеты ipv4 с типом протокола 41(ipv6) не попадают в цепочку INPUT таблицы filter? Может нужно подгрузить какой-нибудь модуль ядра?