<a id="adc-ipv6"></a>

# Настройка IPv6

IPv6 в Angie ADC настраивается на трех уровнях:

- Настройка доступа к веб-интерфейсу Angie ADC (management plane).
- Настройка сетевых протоколов маршрутизации (control plane).
- Настройки для передачи и обработки клиентского трафика (data plane).

## Доступ к веб-интерфейсу Angie ADC

Веб-интерфейс Angie ADC одновременно поддерживает IPv4 и с IPv6.
Для доступа к веб-интерфейсу с IPv6-адресом `2001:db8::10` введите в браузере:

- `http://[2001:db8::10]:8080`
- `https://[2001:db8::10]:8443` (если требуется безопасное подключение).

Если есть DNS-запись для адреса `2001:db8::10`, можно обращаться к веб-интерфейсу по имени.

## Настройка сетевых протоколов маршрутизации

Для маршрутизации IPv6 подходят все стандартные и вспомогательные протоколы маршрутизации:

- BGPv4;
- OSPFv3 (для IPv6 только OSPFv3, в отличие от IPv4);
- BFD;
- VRRPv3.

#### NOTE
Сосед для протокола BGP и пир для BFD указываются в формате IPv6-адреса.

Пример настройки OSPFv3:

```console
router ospf6
  ospf6 router-id 2.2.2.2
  log-adjacency-changes
  redistribute connected
exit
```

Также необходимо включить OSPFv3 на всех интерфейсах:

```console
interface ens33
  description internal
  ipv6 address 2001:db8::2/64
  ipv6 ospf6 area 0
exit
```

## Передача и обработка клиентского трафика

Для поддержки IPv6:

- Бэкенд-серверы должны быть настроены на прием подключений по протоколу IPv6.
- В конфигурации балансировщика нагрузки необходимо включить прием трафика по IPv6:
  ```console
  server {
      listen 80;
      listen [::]:80;
      location / {
  ```

  После этого балансировщик сможет принимать подключения по IPv6.
- Также необходимо добавить AAAA-записи в DNS, чтобы клиенты могли находить балансировщик по IPv6-адресу.
- Для маршрутизации трафика к бэкенд-серверам в секции `upstream` должны быть указаны IPv6-адреса.

  В примере ниже один сервер задан адресом IPv4, а второй – IPv6:
  ```console
  http {
      upstream myapp1 {
          server 192.168.0.128:80;
          server [2001:db8::4]:80;
      }
  }
  ```

## Поддержка смешанных подключений IPv4 и IPv6 в Angie ADC

Angie ADC поддерживает гибкую маршрутизацию трафика между клиентами и бэкенд-серверами с разными конфигурациями.

Бэкенд-серверы могут быть трех типов:

- только IPv4;
- только IPv6;
- dual-stack (одновременно поддерживаются оба протокола).

Пример:

К некоторому ресурсу подключаются IPv4-клиенты (отмечены зеленым цветом) и IPv6-клиенты (отмечены красным цветом).

![IPv4- и IPv6-клиенты](../../_images/adc_help/image29_ipv6.png)

Рис. 1

**Только IPv4**

IPv4-сессии установлены между Angie ADC и бэкенд-серверами с поддержкой IPv4:

![IPv4-сессии](../../_images/adc_help/image30_ipv6.png)

Рис. 2

**Только IPv6**

IPv6-сессии установлены между Angie ADC и бэкенд-серверами с поддержкой IPv6:

![IPv6-сессии](../../_images/adc_help/image31_ipv6.png)

Рис. 3

**Смешанные подключения**

Angie ADC может проксировать входящие IPv4-подключения в любые сессии (как IPv4, так и IPv6) в сторону бэкенд-серверов.
Аналогично и для IPv6-подключений.

![IPv6-сессии](../../_images/adc_help/image32_ipv6.png)

Рис. 4

Таким образом, Angie ADC позволяет гибко проксировать трафик между различными протоколами.

Преимущества такой схемы:

- Практически мгновенная публикация в сети IPv6-сервиса без поддержки IPv6 на бэкенд-серверах.
- Постепенный переход бэкенд-инфраструктуры на IPv6 без потери доступности сервисов снаружи по IPv4,
  т.е. возможна миграция с IPv4 на IPv6 с минимальными изменениями инфраструктуры.

## Настройка ip6tables

Правила управления доступом для IPv6 похожи на правила для IPv4, но должны настраиваться отдельно вручную.

Пример типовой настройки **iptables**:

```console
[root@angie-va angie-va]# iptables -S
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2022 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 179 -j ACCEPT
-A INPUT -p ospf -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 520 -j ACCEPT
-A INPUT -p eigrp -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
```

Для IPv6 соответствующая настройка производится с помощью **ip6tables**:

```console
[root@angie-va angie-va]# ip6tables -S
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2022 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 179 -j ACCEPT
-A INPUT -p ipv6-icmp -j ACCEPT
-A INPUT -p ospf -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 521 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp6-adm-prohibited
```

## GSLB

К сервису GSLB можно обращаться по протоколу IPv6, но получить AAAA-записи пока невозможно. Функциональность в разработке.

```console
C:>nslookup www.example.com 2001:db8::11
Server:  gslb.example.com
Address:  2001:db8::11

Name:    www.example.com
Address:  172.20.0.10
```
