Назад | Перейти на главную страницу

Скрипт ip6tables для роутера ipv6

Я использую брокер туннелей gogoc на моем компьютере с ubuntu для включения ipv6. Я хочу использовать свой компьютер с Ubuntu в качестве маршрутизатора ipv6. Я включил режим маршрутизатора в клиенте gogoc. Я использую radvd для рекламы роутера в локальной сети. tun это туннельный (WAN) интерфейс. br0 - это интерфейс LAN (wan0 и eth0 были соединены мостом, чтобы сделать ноутбук беспроводной точкой доступа). Какие правила брандмауэра я могу использовать для включения пересылки пакетов и обеспечения достаточно хорошей безопасности для маршрутизатора и устройств LAN.

Для маршрутизаторов на базе Linux я считаю, что shorewall6--- инструмент межсетевого экрана на основе ip6tables--- работает неплохо. Используя внешний инструмент, например shorewall6 вместо сырого ip6tables, вы можете обойтись без некоторых важных, но неудобных деталей, например, поинтересоваться неопределенностями ICMPv6 (какие типы мне нужно принять? какие отбросить / отклонить?), поскольку они уже были компетентно рассмотрены.

Настроить shorewall6, вы редактируете небольшое количество хорошо документированных файлов конфигурации в /etc/shorewall6. По крайней мере, вы должны изменить эти файлы:

  • zones, где вы даете имена своим сетям;
  • interfaces, где вы указываете свои сетевые интерфейсы и зоны, к которым они подключены;
  • policy, где вы определяете свои политики по умолчанию для переадресации между зонами (ACCEPT, DROP и т. д.);
  • и rules, где вы можете создать особые исключения для своих политик.

(Есть еще несколько файлов, но для большинства ситуаций подходят значения по умолчанию.)

В вашем случае вы можете определить две зоны, скажем lan и wan. Ваш по умолчанию wan-к-lan политика будет DROP, а по умолчанию lan-к-wan политика будет ПРИНЯТЬ. Затем, если, например, вы хотите разрешить ssh-подключения к определенным хостам в вашем lan зона от wan зоне, вы должны добавить эти исключения в rules файл.

Таким образом, используя интерфейсный инструмент, например shorewall6 позволяет очень легко создать надежный и безопасный маршрутизатор / брандмауэр - конечно, проще, чем использовать raw ip6tables--- потому что он создает некоторые легко понятные абстракции, которые вы можете настроить (зоны, политики, правила), а затем заботится о лежащих в основе деталях.

Я не могу сказать, что знаком с этим конкретным брокером туннелей, я предполагаю, что вы получили / 64 для своих хостов. Есть несколько туннельных брокеров, которые предоставляют / 48, и в этом случае вам нужно немного изменить правила. Это в формате iptables-save:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

# Allow established connections
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

# Allow ICMPv6 traffic (required for IPv6) This could be tightened up but it must
# be done very carefully unless you know what you're doing. It could block all
# routing
-A INPUT -p ipv6-icmp -j ACCEPT
-A FORWARD -p ipv6-icmp -j ACCEPT

# Allow traffic from your internal hosts to the outside world
-A FORWARD -s <your address block>::/64 -j ACCEPT

COMMIT

Вам нужно будет заменить "<your address block> :: / 64" любым назначенным вам диапазоном адресов.

Этот брандмауэр предотвратит все внешние подключения к вашим локальным IPv6-адресам, одновременно предоставив им доступ ко всему. Если вам нужно предоставлять услуги на ваших внутренних хостах IPv6, вам нужно добавить разрешающие правила в цепочку FORWARD в конце (но перед COMMIT).