Есть центральный офис со своей сетью (chr-1). Необходимо не нарушая работу центрального роутера, встроить в сеть еще два роутера (chr-3) организовав тем самым L2 связность с удаленным филиалом (chr-2). Будет использоваться возможность добавлять туннельные интерфейсы в bridge (PPP tunnel bridging). Чтобы была возможность пробросить VLAN через туннельный интерфейс, можно использовать EoIP, VXLAN, L2TPv3.
Стенд:
- GNS3: v2.2.25
- CHR: v7.2.1
Адресация сети:
- Cloud1: 172.16.5.224/28
- CHR-1: ether1 - 172.16.5.227/28 (dhcp-client), bridge1 - 172.16.1.1/24 (dhcp-server) | DST-NAT для VPN-Server;
- CHR-2: ether1 - 172.16.5.228/28 (dhcp-client), bridge1 - 172.16.1.3/24 (dhcp-client) | VPN-Server;
- CHR-3: bridge1 - 172.16.1.2/24 (dhcp-client) | VPN-Client;
Все устройства сброшены с параметром "no Default Configuration". DHCP-Client включен для интерфейсов CHR-1 - ether1, CHR-2 - ether1, bridge1, CHR-3 - bridge1.
Подготовка: CHR-1,2,3
Базовые настройки.
- CHR-1
/system/identity/set name=chr-1
/tool/romon/set enabled=yes
- CHR-2
/system/identity/set name=chr-2
- CHR-3
/system/identity/set name=chr-3
/tool/romon/set enabled=yes
Создаем bridge1:
И добавляем в него интерфейсы.
/interface/bridge/add name=bridge1 protocol-mode=none
/interface/bridge/port/add bridge=bridge1 interface=ether2
/interface/bridge/port/add bridge=bridge1 interface=ether3
/interface/bridge/port/add bridge=bridge1 interface=ether4
/interface/bridge/port/add bridge=bridge1 interface=ether5
- Задаем Admin. MAC Address:
/interface/bridge/print
/interface/bridge/set admin-mac=
CHR-1:
Назначаем адрес на bridge1:
/ip/address/add interface=bridge1 address=172.16.1.1/24
Настраиваем DHCP-Server:
/ip/dhcp-server/setup
- dhcp server interface: bridge1
- dhcp address space: 172.16.1.0/24
- gateway for dhcp network: 172.16.1.1
- addresses to give out: 172.16.1.11-172.16.1.254
- dns servers: 172.16.1.1
- lease time: 10m
Настройка DNS:
/ip/dns/set allow-remote-requests=yes
Настройка NAT:
- Настройка доступа в Интернет:
/ip/firewall/nat/
add action=masquerade chain=srcnat comment="MASQUERADE -> ISP" out-interface=ether1
- Пробрасываем порты на CHR-3.
/ip/firewall/nat/
add action=dst-nat chain=dstnat comment="L2TP/IPsec (L2TP | IPsec IKE, NAT-T, ESP)" dst-address=172.16.5.227 dst-port=1701,500,4500 in-interface=ether1 protocol=udp to-addresses=172.16.1.2
add action=dst-nat chain=dstnat dst-address=172.16.5.227 in-interface=ether1 protocol=ipsec-esp to-addresses=172.16.1.2
CHR-3:
Должны получить адрес через DHCP-Client 172.16.1.2/24.
/ip/dhcp-client/
add interface=bridge1 use-peer-dns=yes use-peer-ntp=yes add-default-route=yes
- Задаем на chr-1 make-static и получаем нужный ip:
/ip/dhcp-client/release numbers=0
PPTP/L2TP/SSTP - BCP (Bridge Control Protocol):
BCP должен поддерживаться и быть включеным на обеих сторонах туннелей. Для включения, необходимо в "Profiles" указать bridge-интерфейс . При поднятии линка, ppp-интерфейс будет автоматически добавляться в указанный bridge. Если понадобится, можно задать только "Local Address" сервера, если задать "Remote Address" для клиента, то L2 работать не будет.
CHR-3:
IP-адреса для сервера в "Profiles" и клиента в "Secret" в нашем случае не задаем.
- Создаем профиль:
/ppp/profile/
add name="L2TP/IPsec+BCP" bridge=bridge1 change-tcp-mss=yes use-ipv6=no use-mpls=no use-compression=no use-encryption=no only-one=yes
- Создаем пользлвателя:
/ppp/secret/
add name="ppp1" password="ppp1" service=l2tp profile="L2TP/IPsec+BCP"
- Включаем L2TP/IPsec-сервер:
/interface/l2tp-server/server/
set enabled=yes default-profile="L2TP/IPsec+BCP" authentication=mschap2 use-ipsec=required ipsec-secret="IPsec"
CHR-2:
- Создаем профиль:
/ppp/profile/
add name="L2TP/IPsec+BCP" bridge=bridge1 change-tcp-mss=yes use-upnp=no use-ipv6=no use-mpls=no use-compression=no use-encryption=no only-one=yes
- Создаем L2TP клиента:
/interface/l2tp-client/
add connect-to=172.16.5.227 user=ppp1 password=ppp1 profile="L2TP/IPsec+BCP" use-ipsec=yes ipsec-secret="IPsec" disabled=no
- Включаем DHCP-Client на bridge1:
/ip/dhcp-client/
add interface=bridge1 use-peer-dns=no use-peer-ntp=no add-default-route=no
- Задаем на chr-1 make-static и получаем нужный ip:
/ip/dhcp-client/release numbers=1
EoIP + IPsec - Over PPTP/L2TP/SSTP:
Для успешного создания EoIP линка, необходимы внешние белые IP-адреса с обоих сторон, но если имеется только с одной стороны, то можно установить линк поверх PPP-туннеля.
CHR-3:
Здесь нам уже понадобятся IP-адреса для сервера (172.16.255.1) в "Profiles" и клиента (172.16.255.2) в "Secret"
- Создаем профиль:
/ppp/profile/
add name="EoIP_over_L2TP" local-address=172.16.255.1 change-tcp-mss=yes use-upnp=no use-ipv6=no use-mpls=no use-compression=no use-encryption=no only-one=yes
- Создаем пользлвателя:
/ppp/secret/
add name="ppp1" password="ppp1" service=l2tp profile="EoIP_over_L2TP" remote-address=172.16.255.2
- Включаем L2TP-сервер:
/interface/l2tp-server/server/
set enabled=yes default-profile="EoIP_over_L2TP" authentication=mschap2 use-ipsec=no ipsec-secret="IPsec"
- Создаем EoIP-интерфейс:
/interface/eoip/
add name=eoip-tunnel1 local-address=172.16.255.1 remote-address=172.16.255.2 tunnel-id=0 ipsec-secret="IPsec" allow-fast-path=no
- И добавляем его в bridge1:
/interface/bridge/port/add bridge=bridge1 interface=eoip-tunnel1
CHR-2:
- Создаем L2TP клиента:
/interface/l2tp-client/
add connect-to=172.16.5.227 user=ppp1 password=ppp1 profile=default disabled=no
- Создаем EoIP-интерфейс:
/interface/eoip/
add name=eoip-tunnel1 local-address=172.16.255.2 remote-address=172.16.255.1 tunnel-id=0 ipsec-secret="IPsec" allow-fast-path=no
- И добавляем его в bridge1:
/interface/bridge/port/add bridge=bridge1 interface=eoip-tunnel1
- Включаем DHCP-Client на bridge1:
/ip/dhcp-client/
add interface=bridge1 use-peer-dns=no use-peer-ntp=no add-default-route=no
- Задаем на chr-1 make-static и получаем нужный ip:
/ip/dhcp-client/release numbers=1
VXLAN - Over PPTP/L2TP/SSTP:
Для VXLAN (Virtual eXtensible Local Area Network) и VPLS должна быть организована L3 связность с серыми локальными IP-адресами. Только устройства в одном сегменте могут взаимодействовать друг с другом. Каждый сегмент идентифицируется с помощью "VNI" (VXLAN Network Identifier). "VTEPs" это конечные точки между которыми устанавливается L2 связность.
Firewall:
Разрешаем входящие трафик со стороны локальной сети для CHR-3,2.
/ip/firewall/filter/
add chain=input protocol=udp dst-port=8472 action=accept
CHR-3
- Создаем профиль:
/ppp/profile/
add name="VXLAN_over_L2TP/IPsec" local-address=172.16.255.1 change-tcp-mss=yes use-upnp=no use-ipv6=no use-mpls=no use-compression=no use-encryption=no only-one=yes
- Создаем пользлвателя:
/ppp/secret/
add name="ppp1" password="ppp1" service=l2tp profile="VXLAN_over_L2TP/IPsec" remote-address=172.16.255.2
- Включаем L2TP-сервер:
/interface/l2tp-server/server/
set enabled=yes default-profile="VXLAN_over_L2TP/IPsec" authentication=mschap2 use-ipsec=required ipsec-secret="IPsec"
- Создаем VXLAN-интерфейс:
/interface/vxlan/
add name=vxlan1 vni=1 port=8472
vteps/add interface=vxlan1 remote-ip=172.16.255.2 port=8472
- И добавляем его в bridge1:
/interface/bridge/port/add bridge=bridge1 interface=vxlan1
CHR-2:
- Создаем L2TP/IPsec клиента:
/interface/l2tp-client/
add connect-to=172.16.5.227 user=ppp1 password=ppp1 profile=default disabled=no use-ipsec=yes ipsec-secret="IPsec"
- Создаем VXLAN-интерфейс:
/interface/vxlan/
add name=vxlan1 vni=1 port=8472
vteps/add interface=vxlan1 remote-ip=172.16.255.1 port=8472
- И добавляем его в bridge1:
/interface/bridge/port/add bridge=bridge1 interface=vxlan1
- Включаем DHCP-Client на bridge1:
/ip/dhcp-client/
add interface=bridge1 use-peer-dns=no use-peer-ntp=no add-default-route=no
- Задаем на chr-1 make-static и получаем нужный ip:
/ip/dhcp-client/release numbers=1
L2TPv3 - Over PPTP/L2TP/SSTP:
Использование параметра "Use Ipsec" не поддерживается при включенном режиме "Unmanaged Mode".
CHR-3:
- Создаем профиль:
/ppp/profile/
add name="L2TPv3/IPsec" local-address=172.16.255.1 change-tcp-mss=yes use-upnp=no use-ipv6=no use-mpls=no use-compression=no use-encryption=no only-one=yes
- Создаем пользователя:
/ppp/secret/
add name="ppp1" password="ppp1" service=l2tp profile="L2TPv3/IPsec" remote-address=172.16.255.2
- Включаем L2TPv3-сервер:
/interface/l2tp-server/server/
set enabled=yes default-profile="L2TPv3/IPsec" authentication=mschap2 use-ipsec=required ipsec-secret="IPsec" l2tpv3-circuit-id=100
- Создаем L2TP Ethernet интерфейс:
/interface/l2tp-ether/
add name=l2tp-ether1 mtu=1420 connect-to=172.16.255.2 unmanaged-mode=yes local-address=172.16.255.1 l2tp-proto-version=l2tpv3-udp circuit-id=1 local-tunnel-id=1 local-session-id=1 remote-tunnel-id=2 remote-session-id=2 disabled=no
- И добавляем его в bridge1:
/interface/bridge/port/add bridge=bridge1 interface=l2tp-ether1
CHR-2:
- Создаем L2TPv3/IPsec-клиента:
/interface/l2tp-client/
add connect-to=172.16.5.227 user=ppp1 password=ppp1 profile=default use-ipsec=yes ipsec-secret="IPsec" allow=mschap2 l2tp-proto-version=l2tpv3-ip l2tpv3-circuit-id=100 disabled=no
- Создаем L2TP Ethernet интерфейс:
/interface/l2tp-ether/
add name=l2tp-ether1 mtu=1420 connect-to=172.16.255.1 unmanaged-mode=yes local-address=172.16.255.2 l2tp-proto-version=l2tpv3-udp circuit-id=1 local-tunnel-id=2 local-session-id=2 remote-tunnel-id=1 remote-session-id=1 disabled=no
- И добавляем его в bridge1:
/interface/bridge/port/add bridge=bridge1 interface=l2tp-ether1
- Включаем DHCP-Client на bridge1:
/ip/dhcp-client/
add interface=bridge1 use-peer-dns=no use-peer-ntp=no add-default-route=no
- Задаем на chr-1 make-static и получаем нужный ip:
/ip/dhcp-client/release numbers=1
OpenVPN mode Ethernet:
MPLS/VPLS - Over PPTP/L2TP/SSTP:
На этом все.