Интерфейсы 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, Примеры дополнительных возможностей).