GRE интерфейсы

Интерфейсы GRE являются виртуальными сетевыми интерфейсами. Данные интерфейсы работают в соответствии со стандартом RFC 1701.

Внимание!

В сценарии GRE over IPsec при использовании динамических протоколов маршрутизации, например OSPF, в случае сбоя создаются условия для утечки конфиденциальной информации. Чтобы избежать утечки, необходимо на сетевых интерфейсах из недоверенного сегмента заблокировать при помощи МЭ тот трафик, который должен быть инкапсулирован в GRE (трафик защищаемых подсетей). При невыполнении данной рекомендации утечка произойдет в том случае, если нарушится работа динамического протокола маршрутизации и маршрут через GRE интерфейс будет удален. В этом случае трафик не будет инкапсулирован в GRE и, следовательно, не попадет под фильтр шифрования, который в данном сценарии, как правило, настраивается только на GRE.

Точка-точка (point-to-point) GRE интерфейсы описываются в файлах /etc/network/interfaces.d/greN, а

точка-многоточка (point-to-multipoint) в файлах /etc/network/interfaces.d/mgreN.

Внимание!

Cisco-like консоль не поддерживает изменение сетевых параметров (MTU/IP адрес/состояние) для GRE интерфейсов.

 

Внимание!

Если настройка интерфейсов выполняется в файлах в директории /etc/network/interfaces.d, то в файле /etc/network/interfaces должна быть ссылка на указанную директорию вида:

source-directory /etc/network/interfaces.d

 

Создание point-to-point GRE интерфейса

Внимание!

Использовать в качестве имени GRE интерфейса gre0 запрещено, так как gre0 используется для внутренних нужд драйвера GRE.

 

1.   Отредактируйте файл /etc/network/interfaces.d/gre1, добавив в него описание для point-to-point GRE интерфейса, например:

root@sterragate:~# vim.tiny /etc/network/interfaces.d/gre1

auto gre1

iface gre1 inet static

address 10.10.10.1

netmask 255.255.255.0

pre-up ip tunnel add gre1 mode gre local 1.1.1.1 remote 2.2.2.2 ttl 64 tos inherit

pre-up ethtool -K gre1 tx off > /dev/null

pre-up ip link set gre1 mtu 1400

pre-up ip link set gre1 multicast on

pre-up ip link set gre1 type gre nopmtudisc

pre-up ip link set gre1 type gre ignore-df

post-down ip link del gre1

•   pre-up ethtool -K gre1 tx off > /dev/null - отключение офлоадинга по подсчету контрольной суммы GRE пакетов (включение офлоадинга нарушит работу GRE, так как VPN драйвер не поддерживает функции подсчета контрольной суммы для GRE в соответствии с RFC 1701). Контроль целостности защищаемого трафика будет обеспечен VPN драйвером по спецификациям IPsec;

•  pre-up ip link set gre1 type gre nopmtudisc - отключает работу PMTUd 

•  pre-up ip link set gre1 type gre ignore-df- отключает копирование DF бита на GRE интерфейсах 

     Перечисленные выше два параметра нужны для корректного переноса TOS байта и возможности фрагментации пакетов в транспортном IPseс режиме на уровне VPN драйвера.

2.    Чтобы GRE интерфейс gre1 появился в системе, выполните команду ifup gre1, после чего убедитесь, что данный интерфейс действительно доступен в системе:

root@sterragate:~# ifup gre1

root@sterragate:~# ip address show gre1

135: gre1@NONE: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN group default qlen 1

    link/gre 1.1.1.1 peer 2.2.2.2

    inet 10.10.10.1/24 brd 10.10.10.255 scope global gre1

       valid_lft forever preferred_lft forever

root@sterragate:~# ip tunnel show gre1

gre1: gre/ip remote 2.2.2.2 local 1.1.1.1 ttl 64 tos inherit nopmtudisc

root@sterragate:~# ip link show gre1

135: gre1@NONE: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1

    link/gre 1.1.1.1 peer 2.2.2.2

     Видно, что GRE интерфейс gre1 присутствует в системе и сконфигурирован.

3.  Добавьте GRE интерфейс gre1 в файл /etc/ifaliases.cf:

root@sterragate:~# vim.tiny  /etc/ifaliases.cf

interface (name="GigabitEthernet0/0" pattern="eth0")

interface (name="GigabitEthernet0/1" pattern="eth1")

interface (name="GigabitEthernet0/2" pattern="eth2")

interface (name="Tunnel1" pattern="gre1")

interface (name="default" pattern="*")

•    значение параметра name должно быть задано в виде TunnelN.

•    значение параметра pattern должно соответствовать имени GRE интерфейса в нотации Linux.

4.    Пересчитайте контрольную сумму файлa /etc/ifaliases.cf:

root@sterragate:~# integr_mgr calc -f /etc/ifaliases.cf

 

 

SUCCESS:  Operation was successful.

5.  Перезапустите VPN сервис:

root@sterragate:~# systemctl restart vpngate.service

Теперь интерфейс Tunnel1 должен быть доступен к заданию политики СКЗИ и правил МЭ посредством сisco-like консоли и LSP, а также к конфигурированию средствами ОС.

Внимание!

Если необходимо настроить выставление/изменение DSCP на пакетах, исходящих из GRE интерфейса, средствами Продукта (Cisco-like и LSP), то для того, чтобы такие пакеты могли быть обработаны драйвером Продукта нужно выполнить команду:

iptables -t mangle -A OUTPUT -p 47 -j MARK --set-xmark 0x00000000/0x40000000

Для сценария IPsec over GRE политика прикрепляется непосредственно на GRE интерфейс, для сценария GRE over IPsec политика СКЗИ должна быть привязана к тому интерфейсу, через который маршрутизируются пакеты с данного GRE интерфейса.

Создание point-to-multipoint GRE интерфейса описано в сценарии «Настройка DMVPN (phase 2) dual cloud с протоколом динамической маршрутизации iBGP» (doc.s-terra.ru, Примеры дополнительных возможностей).