Настройка Policy-based routing
Данная инструкция описывает настройку Policy-based routing. Предполагается, что перед началом настройки стенд собран и настроен в соответствии со сценарием «Построение VPN туннеля между двумя подсетями, защищаемыми шлюзами безопасности «С-Терра Шлюз» по топологии "звезда" с перешифрованием в центре».
В данном стенде присутствуют четыре защищаемые подсети:
· защищаемая подсеть центрального офиса 192.168.1.0/24;
· защищаемая подсеть первого филиала 192.168.2.0/24;
· защищаемые подсети второго филиала 192.168.3.0/24 и 192.168.4.0/24.
В центральном офисе между защищаемой подсетью 192.168.1.0/24 и шлюзом GW1 было добавлено устройство Traffic_Inspection для инспекции трафика защищаемых подсетей. При маршрутизации трафика между защищаемыми подсетями второго филиала или между первым и вторым филиалом пакеты будут проходить через устройство Traffic_Inspection.
Схема стенда (Рисунок 1):
Рисунок 1
Шлюзы GW2 и GW3 строят защищенные туннели со шлюзом GW1. В данном решении трафик из подсети 192.168.3.0/24 в подсеть 192.168.4.0/24 маршрутизируется через центральный шлюз GW1 и через Traffic_Inspection. Транзитный трафик от Host3, приходящий на интерфейс eth1.10 шлюза GW3 попадает под правило PBR и направляется в соответствующую таблицу маршрутизации. В данной таблице присутствует только маршрут по умолчанию через Router1. GW3 данный трафик шифрует и передает по защищенному туннелю шлюзу GW1. Трафик, приходящий на интерфейс eth0 шлюза GW1, попадает под правило PBR и направляется в соответствующую таблицу маршрутизации. В данной таблице присутствует только маршрут по умолчанию через устройство Traffic_Inspection. Аналогично для транзитного трафика от сети 192.168.4.0/24 к сети 192.168.3.0/24.
Использование Policy-based routing протестировано на классе СКЗИ КС1, КС2. Поддержка более высоких классов СКЗИ осуществляется по запросу (presale@s-terra.ru).
На данном устройстве должны быть настроены IP-адреса и маршрутизация в соответствии с общей схемой стенда (см. рисунок 1). В приложении представлены сетевые настройки для ОС Debian (содержимое файла /etc/network/interfaces).
На устройстве Host3 задайте IP-адрес на интерфейс, использующий VLAN ID 10, а в качестве шлюза по умолчанию укажите адрес внутреннего интерфейса шлюза безопасности GW3 – 192.168.3.1. В приложении представлены сетевые настройки для ОС Debian (содержимое файла /etc/network/interfaces).
На устройстве Host4 задайте IP-адрес на интерфейс, использующий VLAN ID 11, а в качестве шлюза по умолчанию укажите адрес внутреннего интерфейса шлюза безопасности GW3 – 192.168.4.1. В приложении представлены сетевые настройки для ОС Debian (содержимое файла /etc/network/interfaces).
Краткий план настройки:
1. Изменение политики безопасности для работы с четырьмя защищенным подсетями.
2. Сетевые настройки.
3. Настройка PBR
1. Войдите в CLI разграничения доступа (или Initial CLI). Для этого, после появления сообщения:
S-Terra administrative console
введите логин и пароль для CLI разграничения доступа:
Пользователь и пароль по умолчанию: administrator, s-terra. Обязательно смените пароль для пользователя administrator при помощи команды change user password.
login as: administrator
administrator's password:
administrator@sterragate]
2. Изменение политики безопасности осуществляются из cisco-like консоли шлюза, чтобы попасть в нее выполните следующую команду в CLI разграничения доступа:
Пользователь и пароль по умолчанию: cscons, csp. Обязательно смените пароль для пользователя cscons и enable пароль. Под пользователем cscons можно осуществлять удаленное управление шлюзом по SSH.
administrator@sterragate] configure
sterragate login: cscons
Password:
S-Terra Gate 4.2.18201 (amd64)
GW1#
3. Перейдите в режим настройки:
GW1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
4. Опишите трафик, который планируется защищать. Для этого измените расширенные списки доступа:
GW1(config)#ip access-list extended LIST
GW1(config-ext-nacl)#permit ip 192.168.4.0 0.0.0.255 192.168.2.0 0.0.0.255
GW1(config-ext-nacl)#exit
GW1(config)#ip access-list extended LIST2
GW1(config-ext-nacl)#permit ip 192.168.4.0 0.0.0.255 192.168.3.0 0.0.0.255
GW1(config-ext-nacl)#permit ip 192.168.1.0 0.0.0.255 192.168.4.0 0.0.0.255
GW1(config-ext-nacl)#permit ip 192.168.2.0 0.0.0.255 192.168.4.0 0.0.0.255
GW1(config-ext-nacl)#permit ip 192.168.3.0 0.0.0.255 192.168.4.0 0.0.0.255
GW1(config-ext-nacl)#exit
Данные списки доступа определяют трафик, который должен быть защищен.
1. В настройке интерфейса GigabitEthernet 0/0 измените IP-адрес:
GW1(config)#interface GigabitEthernet 0/0
GW1(config-if)#ip address 172.16.0.1 255.255.255.0
GW1(config-if)#exit
2. Добавьте маршрут до подсети 192.168.1.0/24 через устройство Traffic_Inspection:
GW1(config)#ip route 192.168.1.0 255.255.255.0 172.16.0.2
3. Настройка устройства GW1 в cisco-like консоли завершена. При выходе из конфигурационного режима происходит загрузка конфигурации:
GW1(config)#end
GW1#exit
В приложении представлен текст cisco-like конфигурации для шлюза GW1.
1. Настройки PBR осуществляется из linux bash, чтобы попасть в linux bash выполните следующую команду в CLI разграничения доступа:
administrator@GW1] system
Entering system shell...
root@GW1:~#
2. Добавьте PBR политику, для этого создайте файл /etc/network/if-pre-up.d/pbr и добавьте в него следующее содержимое:
#!/bin/bash
INPUT_WAN_IFACE="eth1"
TABLE_ID="100"
PRIO="100"
RULE="from all iif $INPUT_WAN_IFACE lookup $TABLE_ID pref $PRIO"
if [[ $IFACE == $INPUT_WAN_IFACE ]]; then
ip rule del $RULE 2>/dev/null || true
ip rule add $RULE
fi
exit 0
Файл /etc/network/if-pre-up.d/pbr используется для того, чтобы политика маршрутизации присутствовала в системе до перехода интерфейса в состояние UP.
В данном файле присутствуют следующие параметры:
· INPUT_WAN_IFACE – указывает внешний интерфейс, на который приходит трафик;
· TABLE_ID – указывает номер таблицы маршрутизации;
· PRIO – указывает приоритет;
· RULE –описывает команду, которая будет использована.
Данный файл будет выполнять следующую команду для добавления политики PBR:
ip rule add from all iif eth1 table 100 pref 100.
3. Добавьте маршрут для политики PBR, для этого создайте файл /etc/network/if-up.d/pbr и добавьте в него следующее содержимое:
#!/bin/bash
NEXTHOP_ADDRESS="172.16.0.2"
OUTPUT_LAN_IFACE="eth0"
TABLE_ID="100"
if [[ $IFACE == "$OUTPUT_LAN_IFACE" ]]; then
ip route add default via "$NEXTHOP_ADDRESS" dev "$OUTPUT_LAN_IFACE" table $TABLE_ID
fi
exit 0
Файл /etc/network/if-up.d/pbr используется для того, чтобы маршрут по умолчанию добавлялся в политику PBR после перехода интерфейса eth1 в состояние UP.
В данном файле присутствуют следующие параметры:
· NEXTHOP_ADDRESS – указывает адрес, на который политика PBR будет маршрутизировать трафик;
· OUTPUT_LAN _IFACE – указывает внутренний интерфейс, c которого доступен адрес указанный в NEXTHOP_ADDRESS;
· TABLE_ID – указывает номер таблицы маршрутизации.
4. Требуется убирать политику PBR после перехода интерфейса eth0 в состояние DOWN, для этого создайте файл /etc/network/if-post-down.d/pbr и добавьте в него следующее содержимое:
#!/bin/bash
INPUT_WAN_IFACE="eth1"
TABLE_ID="100"
PRIO="100"
RULE="from all iif $PBR_INPUT_IFACE lookup $TABLE_ID pref $PRIO"
if [[ $IFACE == $PBR_INPUT_IFACE ]]; then
ip rule del $RULE 2>/dev/null || true
fi
exit 0
В данном файле присутствуют следующие параметры:
· INPUT_WAN_IFACE – указывает внешний интерфейс, на который приходит трафик;
· TABLE_ID – указывает номер таблицы маршрутизации;
· PRIO – указывает приоритет;
· RULE – описывает команду, которая будет использована.
Данный файл будет выполнять следующую команду для удаления политики PBR:
ip rule del from all iif eth1 table 100 pref 100.
5. Дайте права на запуск созданных файлов:
root@GW1:~# chmod +x /etc/network/if-pre-up.d/pbr
root@GW1:~# chmod +x /etc/network/if-up.d/pbr
root@GW1:~# chmod +x /etc/network/if-post-down.d/pbr
6. Перезапустите сервис networking и перезагрузите LSP конфигурацию:
Если после настройки сетевых интерфейсов согласно документу «Построение VPN туннеля между двумя подсетями, защищаемыми шлюзами безопасности «С-Терра Шлюз» по топологии "звезда" с перешифрованием в центре» шлюз не перезагружался, то перезагрузите. В таком случае перезапускать сервис networking и перезагружать LSP конфигурацию не требуется.
Из-за того, что маршрут по умолчанию до Router1 описан в cisco-like конфигурации, то после перезапуска сервиса networking данный маршрут по умолчанию будет отсутствовать в таблице маршрутизации. Чтобы его добавить достаточно перезагрузить LSP конфигурацию.
root@GW1:~# service networking restart
root@GW1:~# lsp_mgr reload
В приложении представлен текст настроек /etc/network/if-pre-up.d/pbr,/etc/network/if-up.d/pbr и /etc/network/if-post-down.d/pbr для шлюза GW1.
Настройка шлюза безопасности GW2 происходит в соответствии со сценарием «Построение VPN туннеля между двумя подсетями, защищаемыми шлюзами безопасности «С-Терра Шлюз» по топологии "звезда" с перешифрованием в центре». Требуется добавить в существующий список доступа фильтр, описывающий трафик из подсети 192.168.2.0/24 до подсети 192.168.4.0/24:
GW2(config)#ip access-list extended LIST
GW2(config-ext-nacl)#permit ip 192.168.2.0 0.0.0.255 192.168.4.0 0.0.0.255
GW2(config-ext-nacl)#end
GW2#exit
В приложении представлен текст cisco-like конфигурации для шлюза GW2.
Краткий план настройки:
1. Изменение политики безопасности для работы с четырьмя защищенным подсетями.
2. Настройка PBR.
Изменение политики безопасности GW3 происходит аналогично настройке шлюза GW2. Требуется добавить в существующий список доступа фильтры, описывающие трафик из подсети 192.168.4.0/24, а также трафик из подсети 192.168.3.0 в подсеть 192.168.4.0/24:
GW3(config)#ip access-list extended LIST
GW3(config-ext-nacl)#permit ip 192.168.3.0 0.0.0.255 192.168.4.0 0.0.0.255
GW3(config-ext-nacl)#permit ip 192.168.4.0 0.0.0.255 192.168.1.0 0.0.0.255
GW3(config-ext-nacl)#permit ip 192.168.4.0 0.0.0.255 192.168.2.0 0.0.0.255
GW3(config-ext-nacl)#permit ip 192.168.4.0 0.0.0.255 192.168.3.0 0.0.0.255
GW3(config-ext-nacl)#exit
1. В настройке интерфейса GigabitEthernet 0/0 измените IP-адрес:
GW3(config)#interface GigabitEthernet 0/0
GW3(config-if)#no ip address
GW3(config-if)#end
GW2#exit
В приложении представлен текст cisco-like конфигурации для шлюза GW3.
2. Добавьте в /etc/network/interfaces перед ###netifcfg-begin### следующее:
auto eth0.10
iface eth0.10 inet static
address 192.168.3.1
netmask 255.255.255.0
auto eth0.11
iface eth0.11 inet static
address 192.168.4.1
netmask 255.255.255.0
1. Добавьте PBR политику, для этого создайте файл /etc/network/if-pre-up.d/pbr и добавьте в него следующее содержимое:
#!/bin/bash
INPUT_VLAN_10_IFACE="eth0.10"
INPUT_VLAN_11_IFACE="eth0.11"
TABLE_ID="100"
PRIO="100"
RULE_VLAN_10="from all iif $INPUT_VLAN_10_IFACE lookup $TABLE_ID pref $PRIO"
RULE_VLAN_11="from all iif $INPUT_VLAN_11_IFACE lookup $TABLE_ID pref $PRIO"
if [[ $IFACE == $INPUT_VLAN_10_IFACE ]]; then
ip rule del $RULE_VLAN_10 2>/dev/null || true
ip rule add $RULE_VLAN_10
fi
if [[ $IFACE == $INPUT_VLAN_11_IFACE ]]; then
ip rule del $RULE_VLAN_11 2>/dev/null || true
ip rule add $RULE_VLAN_11
fi
exit 0
Файл /etc/network/if-pre-up.d/pbr используется для того, чтобы политики маршрутизации для интерфейсов eth1.10 и eth1.11 присутствовали в системе до перехода интерфейсов в состояние UP.
В данном файле присутствуют следующие параметры:
· INPUT_VLAN_10_IFACE и INPUT_VLAN_11_IFACE – указывают внутренние интерфейсы, на которые приходит трафик;
· TABLE_ID – указывает номер таблицы маршрутизации;
· PRIO – указывает приоритет;
· RULE_VLAN_10 и RULE_VLAN_11 – описывают команды, которые будет использованы.
Данный файл будет выполнять следующие команды для добавления политики PBR:
ip rule add from all iif eth0.10 table 100 pref 100;
ip rule add from all iif eth0.11 table 100 pref 100.
2. Добавьте маршрут для политики PBR, для этого создайте файл /etc/network/if-up.d/pbr и добавьте в него следующее содержимое:
#!/bin/bash
NEXTHOP_ADDRESS="10.1.3.1"
OUTPUT_LAN_IFACE="eth1"
TABLE_ID="100"
if [[ $IFACE == "$OUTPUT_LAN_IFACE" ]]; then
ip route add default via "$NEXTHOP_ADDRESS" dev "$OUTPUT_LAN_IFACE" table $TABLE_ID
fi
exit 0
Файл /etc/network/if-up.d/pbr используется для того, чтобы маршрут по умолчанию добавлялся в политику PBR после перехода интерфейса eth1 в состояние UP.
В данном файле присутствуют следующие параметры:
· NEXTHOP_ADDRESS – указывает адрес, на который политика PBR будет маршрутизировать трафик;
· OUTPUT _ LAN _IFACE – указывает внутренний интерфейс, c которого доступен адрес указанный в NEXTHOP_ADDRESS;
· TABLE_ID – указывает номер таблицы маршрутизации.
3. Требуется убирать политику PBR после перехода интерфейсов eth1.10 и eth1.11 в состояние DOWN, для этого создайте файл /etc/network/if-post-down.d/pbr и добавьте в него следующее содержимое:
#!/bin/bash
INPUT_VLAN_10_IFACE="eth0.10"
INPUT_VLAN_11_IFACE="eth0.11"
TABLE_ID="100"
PRIO="100"
RULE_VLAN_10="from all iif $INPUT_VLAN_10_IFACE lookup $TABLE_ID pref $PRIO"
RULE_VLAN_11="from all iif $INPUT_VLAN_11_IFACE lookup $TABLE_ID pref $PRIO"
if [[ $IFACE == $INPUT_VLAN_10_IFACE ]]; then
ip rule del $RULE_VLAN_10 2>/dev/null || true
fi
if [[ $IFACE == $INPUT_VLAN_11_IFACE ]]; then
ip rule del $RULE_VLAN_11 2>/dev/null || true
fi
exit 0
В данном файле присутствуют следующие параметры:
· INPUT_VLAN_10_IFACE и INPUT_VLAN_11_IFACE – указывают внутренние интерфейсы, на которые приходит трафик;
· TABLE_ID – указывает номер таблицы маршрутизации;
· PRIO – указывает приоритет;
· RULE_VLAN_10 и RULE_VLAN_11 – описывают команды, которая будет использована.
Данный файл будет выполнять следующие команды для удаления политики PBR:
ip rule del from all iif eth0.10 table 100 pref 100;
ip rule del from all iif eth0.11 table 100 pref 100.
4. Дайте права на запуск созданных файлов:
root@GW3:~# chmod +x /etc/network/if-pre-up.d/pbr
root@GW3:~# chmod +x /etc/network/if-up.d/pbr
root@GW3:~# chmod +x /etc/network/if-post-down.d/pbr
5. Перезапустите сервис networking и перезагрузите LSP конфигурацию:
Если после настройки сетевых интерфейсов в «Построение VPN туннеля между двумя подсетями, защищаемыми шлюзами безопасности «С-Терра Шлюз» по топологии "звезда" с перешифрованием в центре» шлюз не перезагружался, то перезагрузите. В таком случае перезапускать сервис networking и перезагружать LSP конфигурацию не требуется.
Из-за того, что маршрут по умолчанию до Router1 описан в cisco-like конфигурации, то после перезапуска сервиса networking данный маршрут по умолчанию будет отсутствовать в таблице маршрутизации. Чтобы его добавить достаточно перезагрузить LSP конфигурацию.
root@GW1:~# service networking restart
root@GW1:~# lsp_mgr reload
В приложении представлен текст настроек /etc/network/interfaces, /etc/network/if-pre-up.d/pbr,/etc/network/if-up.d/pbr и /etc/network/if-post-down.d/pbr для шлюза GW3.
После того, как настройка всех устройств завершена, инициируйте создание защищенного соединения.
На устройстве Host3 выполните команду ping:
root@Host3:~# ping -c 5 192.168.2.100
PING 192.168.3.100 (192.168.3.100) 56(84) bytes of data.
64 bytes from 192.168.2.100: icmp_req=1 ttl=61 time=1519 ms
64 bytes from 192.168.2.100: icmp_req=2 ttl=61 time=513 ms
64 bytes from 192.168.2.100: icmp_req=3 ttl=61 time=0.891 ms
64 bytes from 192.168.2.100: icmp_req=4 ttl=61 time=0.812 ms
64 bytes from 192.168.2.100: icmp_req=5 ttl=61 time=0.795 ms
--- 192.168.3.100 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4008ms
rtt min/avg/max/mdev = 0.795/407.025/1519.419/590.538 ms, pipe 2
В результате выполнения этой команды между устройствами GW1 и GW2, а также GW1 и GW3 будут установлены VPN туннели.
Убедиться в этом можно, выполнив на устройстве GW1 команду:
root@GW1:~# sa_mgr show
ISAKMP sessions: 0 initiated, 0 responded
ISAKMP connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) State Sent Rcvd
1 1 (10.1.1.2,500)-(10.1.3.2,500) active 1668 1760
2 2 (10.1.1.2,500)-(10.1.2.2,500) active 1760 1668
IPsec connections:
Num Conn-id (Local Addr,Port)-(Remote Addr,Port) Protocol Action Type Sent Rcvd
1 1 (192.168.2.0-192.168.2.255,*)-(192.168.3.0-192.168.3.255,*) * ESP tunn 440 440
2 2 (192.168.3.0-192.168.3.255,*)-(192.168.2.0-192.168.2.255,*) * ESP tunn 440 440
Также на устройстве GW1 можно выполнить команду tcpdump на интерфейсе eth0 и отправить ping на устройстве Host3 устройству Host4:
root@GW1:~# tcpdump -i eth0 -n host 192.168.3.100 and host 192.168.4.100
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
11:51:16.172952 IP 192.168.3.100 > 192.168.4.100: ICMP echo request, id 819, seq 1, length 64
11:51:16.173142 IP 192.168.3.100 > 192.168.4.100: ICMP echo request, id 819, seq 1, length 64
11:51:16.174463 IP 192.168.4.100 > 192.168.3.100: ICMP echo reply, id 819, seq 1, length 64
11:51:16.174585 IP 192.168.4.100 > 192.168.3.100: ICMP echo reply, id 819, seq 1, length 64
11:51:17.174981 IP 192.168.3.100 > 192.168.4.100: ICMP echo request, id 819, seq 2, length 64
11:51:17.175101 IP 192.168.3.100 > 192.168.4.100: ICMP echo request, id 819, seq 2, length 64
11:51:17.176241 IP 192.168.4.100 > 192.168.3.100: ICMP echo reply, id 819, seq 2, length 64
11:51:17.176309 IP 192.168.4.100 > 192.168.3.100: ICMP echo reply, id 819, seq 2, length 64
11:51:18.176919 IP 192.168.3.100 > 192.168.4.100: ICMP echo request, id 819, seq 3, length 64
11:51:18.177097 IP 192.168.3.100 > 192.168.4.100: ICMP echo request, id 819, seq 3, length 64
11:51:18.178212 IP 192.168.4.100 > 192.168.3.100: ICMP echo reply, id 819, seq 3, length 64
11:51:18.178352 IP 192.168.4.100 > 192.168.3.100: ICMP echo reply, id 819, seq 3, length 64
11:51:19.178948 IP 192.168.3.100 > 192.168.4.100: ICMP echo request, id 819, seq 4, length 64
11:51:19.179124 IP 192.168.3.100 > 192.168.4.100: ICMP echo request, id 819, seq 4, length 64
11:51:19.180902 IP 192.168.4.100 > 192.168.3.100: ICMP echo reply, id 819, seq 4, length 64
11:51:19.181036 IP 192.168.4.100 > 192.168.3.100: ICMP echo reply, id 819, seq 4, length 64
11:51:20.180487 IP 192.168.3.100 > 192.168.4.100: ICMP echo request, id 819, seq 5, length 64
11:51:20.180652 IP 192.168.3.100 > 192.168.4.100: ICMP echo request, id 819, seq 5, length 64
11:51:20.181766 IP 192.168.4.100 > 192.168.3.100: ICMP echo reply, id 819, seq 5, length 64
11:51:20.181892 IP 192.168.4.100 > 192.168.3.100: ICMP echo reply, id 819, seq 5, length 64
На каждый ping мы видим по два echo request и echo reply. Это объясняется тем, что пакет сначала передается устройству Traffic_Inspection, а потом Traffic_Inspection отправляет его обратно шлюзу GW1.
Чтобы разобраться на каком этапе возникла ошибка можно воспользоваться руководством, которое представлено на портале документации: http://doc.s-terra.ru/rh_output/4.2/Scenarios/output/mergedProjects/1main/ver_4_2_troubleshooting_guide.pdf.
Содержимое файла /etc/network/interfaces:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens32
iface ens32 inet static
address 192.168.1.1
netmask 255.255.255.0
# The primary network interface
auto ens34
iface ens34 inet static
address 172.16.0.2
netmask 255.255.255.0
gateway 172.16.0.1
Содержимое файла /etc/network/interfaces:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens32.10
iface ens32.10 inet static
address 192.168.3.100
netmask 255.255.255.0
gateway 192.168.3.1
Содержимое файла /etc/network/interfaces:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens32.11
iface ens32.11 inet static
address 192.168.4.100
netmask 255.255.255.0
gateway 192.168.4.1
!
version 12.4
no service password-encryption
!
crypto ipsec df-bit copy
crypto isakmp identity dn
crypto isakmp keepalive 10
crypto isakmp keepalive retry-count 5
username cscons privilege 15 password 0 csp
aaa new-model
!
!
hostname GW1
enable password csp
!
!
!
!
!
crypto isakmp policy 1
encr gost
hash gost341112-256-tc26
authentication gost-sig
group vko2
!
crypto ipsec transform-set TSET esp-gost28147-4m-imit
!
ip access-list extended LIST
permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
permit ip 192.168.3.0 0.0.0.255 192.168.2.0 0.0.0.255
permit ip 192.168.4.0 0.0.0.255 192.168.2.0 0.0.0.255
!
ip access-list extended LIST2
permit ip 192.168.1.0 0.0.0.255 192.168.3.0 0.0.0.255
permit ip 192.168.2.0 0.0.0.255 192.168.3.0 0.0.0.255
permit ip 192.168.4.0 0.0.0.255 192.168.3.0 0.0.0.255
permit ip 192.168.1.0 0.0.0.255 192.168.4.0 0.0.0.255
permit ip 192.168.2.0 0.0.0.255 192.168.4.0 0.0.0.255
permit ip 192.168.3.0 0.0.0.255 192.168.4.0 0.0.0.255
!
!
crypto map CMAP 1 ipsec-isakmp
match address LIST
set transform-set TSET
set peer 10.1.2.2
crypto map CMAP 2 ipsec-isakmp
match address LIST2
set transform-set TSET
set peer 10.1.3.2
!
interface GigabitEthernet0/0
ip address 172.16.0.1 255.255.255.0
!
interface GigabitEthernet0/1
ip address 10.1.1.2 255.255.255.0
crypto map CMAP
!
!
ip route 0.0.0.0 0.0.0.0 10.1.1.1
ip route 192.168.1.0 255.255.255.0 172.16.0.2
!
crypto pki trustpoint s-terra_technological_trustpoint
revocation-check none
...
quit
!
end
Содержимое файла /etc/network/if-pre-up.d/pbr:
#!/bin/bash
INPUT_WAN_IFACE="eth1"
TABLE_ID="100"
PRIO="100"
RULE="from all iif $INPUT_WAN_IFACE lookup $TABLE_ID pref $PRIO"
if [[ $IFACE == $INPUT_WAN_IFACE ]]; then
ip rule del $RULE 2>/dev/null || true
ip rule add $RULE
fi
exit 0
Содержимое файла /etc/network/if-up.d/pbr:
#!/bin/bash
NEXTHOP_ADDRESS="172.16.0.2"
OUTPUT_LAN_IFACE="eth0"
TABLE_ID="100"
if [[ $IFACE == "$OUTPUT_LAN_IFACE" ]]; then
ip route add default via "$NEXTHOP_ADDRESS" dev "$OUTPUT_LAN_IFACE" table $TABLE_ID
fi
exit 0
Содержимое файла /etc/network/if-post-down.d/pbr:
#!/bin/bash
INPUT_WAN_IFACE="eth1"
TABLE_ID="100"
PRIO="100"
RULE="from all iif $PBR_INPUT_IFACE lookup $TABLE_ID pref $PRIO"
if [[ $IFACE == $PBR_INPUT_IFACE ]]; then
ip rule del $RULE 2>/dev/null || true
fi
exit 0
!
version 12.4
no service password-encryption
!
crypto ipsec df-bit copy
crypto isakmp identity dn
crypto isakmp keepalive 10
crypto isakmp keepalive retry-count 5
username cscons privilege 15 password 0 csp
aaa new-model
!
!
hostname GW2
enable password csp
!
!
!
!
!
crypto isakmp policy 1
encr gost
hash gost341112-256-tc26
authentication gost-sig
group vko2
!
crypto ipsec transform-set TSET esp-gost28147-4m-imit
!
ip access-list extended LIST
permit ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255
permit ip 192.168.2.0 0.0.0.255 192.168.3.0 0.0.0.255
permit ip 192.168.2.0 0.0.0.255 192.168.4.0 0.0.0.255
!
!
crypto map CMAP 1 ipsec-isakmp
match address LIST
set transform-set TSET
set peer 10.1.1.2
!
interface GigabitEthernet0/0
ip address 192.168.2.1 255.255.255.0
!
interface GigabitEthernet0/1
ip address 10.1.2.2 255.255.255.0
crypto map CMAP
!
interface GigabitEthernet0/2
no ip address
shutdown
!
interface GigabitEthernet0/3
no ip address
shutdown
!
!
ip route 0.0.0.0 0.0.0.0 10.1.2.1
!
crypto pki trustpoint s-terra_technological_trustpoint
revocation-check none
...
quit
!
end
!
version 12.4
no service password-encryption
!
crypto ipsec df-bit copy
crypto isakmp identity dn
crypto isakmp keepalive 10
crypto isakmp keepalive retry-count 5
username cscons privilege 15 password 0 csp
aaa new-model
!
!
hostname GW3
enable password csp
!
!
!
!
!
crypto isakmp policy 1
encr gost
hash gost341112-256-tc26
authentication gost-sig
group vko2
!
crypto ipsec transform-set TSET esp-gost28147-4m-imit
!
ip access-list extended LIST
permit ip 192.168.3.0 0.0.0.255 192.168.1.0 0.0.0.255
permit ip 192.168.3.0 0.0.0.255 192.168.2.0 0.0.0.255
permit ip 192.168.3.0 0.0.0.255 192.168.4.0 0.0.0.255
permit ip 192.168.4.0 0.0.0.255 192.168.1.0 0.0.0.255
permit ip 192.168.4.0 0.0.0.255 192.168.2.0 0.0.0.255
permit ip 192.168.4.0 0.0.0.255 192.168.3.0 0.0.0.255
!
!
crypto map CMAP 1 ipsec-isakmp
match address LIST
set transform-set TSET
set peer 10.1.1.2
!
interface GigabitEthernet0/0
no ip address
!
interface GigabitEthernet0/1
ip address 10.1.3.2 255.255.255.0
crypto map CMAP
!
!
ip route 0.0.0.0 0.0.0.0 10.1.3.1
!
crypto pki trustpoint s-terra_technological_trustpoint
revocation-check none
...
quit
!
end
Содержимое файла /etc/network/interfaces:
############################################################
# CAUTION: lines under special marker: ###netifcfg-*###
# contains autogenerated information. You can add/modify
# lines outside of those markers
############################################################
# loopback configuration
auto lo
iface lo inet loopback
auto eth0.10
iface eth1.10 inet static
address 192.168.3.1
netmask 255.255.255.0
auto eth0.11
iface eth1.11 inet static
address 192.168.4.1
netmask 255.255.255.0
###netifcfg-begin###
iface eth0 inet static
mtu 1500
iface eth1 inet static
mtu 1500
address 10.1.3.2
netmask 255.255.255.0
broadcast 10.1.3.255
###netifcfg-end###
Содержимое файла /etc/network/if-pre-up.d/pbr:
#!/bin/bash
INPUT_VLAN_10_IFACE="eth0.10"
INPUT_VLAN_11_IFACE="eth0.11"
TABLE_ID="100"
PRIO="100"
RULE_VLAN_10="from all iif $INPUT_VLAN_10_IFACE lookup $TABLE_ID pref $PRIO"
RULE_VLAN_11="from all iif $INPUT_VLAN_11_IFACE lookup $TABLE_ID pref $PRIO"
if [[ $IFACE == $INPUT_VLAN_10_IFACE ]]; then
ip rule del $RULE_VLAN_10 2>/dev/null || true
ip rule add $RULE_VLAN_10
fi
if [[ $IFACE == $INPUT_VLAN_11_IFACE ]]; then
ip rule del $RULE_VLAN_11 2>/dev/null || true
ip rule add $RULE_VLAN_11
fi
exit 0
Содержимое файла /etc/network/if-up.d/pbr:
#!/bin/bash
NEXTHOP_ADDRESS="10.1.3.1"
OUTPUT_LAN_IFACE="eth1"
TABLE_ID="100"
if [[ $IFACE == "eth0" ]]; then
ip route add default via "$NEXTHOP_ADDRESS" dev "$OUTPUT_LAN_IFACE" table $TABLE_ID
fi
exit 0
Содержимое файла /etc/network/if-post-down.d/pbr:
#!/bin/bash
INPUT_VLAN_10_IFACE="eth0.10"
INPUT_VLAN_11_IFACE="eth0.11"
TABLE_ID="100"
PRIO"=100"
RULE_VLAN_10="from all iif $INPUT_VLAN_10_IFACE lookup $TABLE_ID pref $PRIO"
RULE_VLAN_11="from all iif $INPUT_VLAN_11_IFACE lookup $TABLE_ID pref $PRIO"
if [[ $IFACE == $INPUT_VLAN_10_IFACE ]]; then
ip rule del $RULE_VLAN_10 2>/dev/null || true
fi
if [[ $IFACE == $INPUT_VLAN_11_IFACE ]]; then
ip rule del $RULE_VLAN_11 2>/dev/null || true
fi
exit 0