Не редко, требуется иметь полноценный доступ к внутренним ресурсам сети из любой точки, где имеется выход в Интернет. И тут на первое место выходит вопрос безопасности и защиты передаваемых данных по открытым каналам связи.
Для организации защищенных каналов я предпочитаю использовать OpenVPN, о настройке которого уже не раз рассказывал на страницах блога. Но что делать, если у вас нет возможности, желания или навыков поднимать OpenVPN-сервер? Для небольшого офиса, а уж тем более домашнего использования, подобное решение не всегда оправдано. Гораздо проще организовать безопасное подключение к ресурсам вашей сети используя готовый L2TP VPN-сервер на базе роутера Keenetic и сегодня я наглядно покажу как это делается.
Перед тем как начать, хотелось бы отметить, что PPTP VPN-сервер на Keenetic настраивается аналогичным образом, но в виду того, что соединения по протоколу PPTP не обеспечивают требуемого уровня безопасности, его настройку рассматривать не будем. В свежих версиях macOS поддержку PPTP вообще выпилили из системы.
Настройка L2TP-сервера на роутерах Keenetic
Со времени появления первых «кинетиков», проделана большая работа и теперь эти роутеры обладают весьма не плохим функционалом, оставаясь простыми в настройке (тут засылаю огромный булыжник в огород MikroTik). Для примера, взял роутер Keenetic Extra II с прошивкой версии 2.14.C.0.0-4.
Итак, расширение функциональности Keenetic OS, на которой работает роутер, достигается за счёт установки дополнительных компонентов. Как вы уже поняли, нам потребуется установить компонент L2TP/IPsec VPN-сервера:
- Заходим в панель управления и в боковом меню переходим Управление -> Общие настройки, где кликаем по кнопке «Изменить набор компонентов».
- В появившемся окне в разделе «Сетевые функции» отмечаем «L2TP/IPsec VPN-сервер» для установки.
- Далее создаём пользователей, которым будет предоставлен удалённый доступ к сети. Делается это в соответствующем разделе Управление -> Пользователи.
- Осталось настроить сам L2TP-сервер. Переходим в Управление -> Приложения -> VPN-сервер L2TP/IPsec.
В поле Общий ключ IPsec пишем любой набор символов или секретную фразу, которая будет использоваться в качестве ключа шифрования (чем сложнее, тем лучше).
Ставим галочку, напротив поля Множественный вход, если планируется использовать одну учётную запись пользователя для нескольких соединений одновременно. Здесь же можно указать количество выдаваемых IP-адресов клиентам и задать начальный IP-адрес, с которого роутер будет их отсчитывать.
Нас избавили от решения вопросов маршрутизации, получаемой виртуальной сети, все необходимые правила роутер добавляет автоматически. Не забудьте только поставить галочку напротив пункта NAT для клиентов.
Остаётся только отметить галочками пользователей (мы их создали в третьем пункте) и активировать L2TP VPN-сервер.
Настройка соединения L2TP/IPsec на Windows и маке
Настройка VPN L2TP соединений под macOS или Windows делается штатными средствами. Если требуется подробная инструкция по их настройке, пишите в комментариях. А не сегодня это всё. Не забывайте ставить лайки и подписываться.
Подписывайтесь на канал
Яндекс.Дзен
и узнавайте первыми о новых материалах, опубликованных на сайте.
В этот раз я расскажу как настроить VPN L2TP сервер, т.к. он обеспечивает более высокий уровень безопасности но и более требователен к ресурсам системы, а также поддерживается не всем оборудованием, например, только самыми последними версиями Andriod на 100%, по крайней мере, мне не попадались современные телефоны которые его не поддерживают. Основной плюс данной стемы это:
а) Использование тоннеля передачи данных (тунелирование).
б) Защита передаваемых данных с помощью IPsec.
Чтобы было понятнее, мы создадим отдельную подсеть для клиентов подключающихся через L2TP, а оттуда уже настроим маршрутизацию туда куда нам нужно.
Для начала создадим диапазон IP адресов для подключающихся клиентов, мы не будем выдавать каждому пользователю персональный IP адрес, а автоматизируем этот процесс и будем выдавать из пула свободных адресов.
Переходим в IP -> Pool мы создадим пул на 20 IP адресов. Назовем его l2tp_pool чтобы было понятно за что он отвечает.
В результате у нас есть 2 пула адресов, первый используется, у меня, для локальной сети, а второй для L2TP клиентов.
Создаем профиль нашего L2TP сервера
переходим в PPP -> Profiles
В настройках профиля указываем:
Имя профиля: L2TP-server ( чтобы было понятно за что он отвечает)
Local adrdress: 192.168.10.1 начало диапазона IP адресов
Remote Address: l2tp_pool указываем название пула адресов который мы создали ранее
Change TCP MSS: yes
(Все что менялось выделено синим!)
Переходим в вкладку Protocols
Use MPLS: yes
Use Compressiaon: no
Use VJ Compressiaon: no
Use Encription: yes
(Все что менялось выделено синим!)
Переходим во вкладку Limits
Там все оставляем по умолчанию и в строке Only one оставляем default
Создаем пользователя, переходим в PPP -> Secrets
Где указываем имя пользователя, пароль, указываем сервис к которому этот пользователь будет применен L2TP, а также профиль с которым будет работать наш L2TP сервер, мы его создали ранее (L2TP-server)
нам остается включить L2TP сервер, переходим в PPP -> Interface нажимаем кнопку L2TP server
Все сто менялось выделено красным!
Где:
Включаем сам сервер L2TP (ставим галку)
Включаем профиль, который мы создали ранее L2TP-server
Убираем все протоколы, оставляем mschap2 (остальные протоколы уже давно и успешно взломаны!)
Ставим галку Use IPsec
Придумываем IPsec Secret: по сути это парольная фраза, которая едина для всех.
Нам с остается создать правила для фаерволла, чтобы мы могли достучаться до нашего L2TP сервера.
Переходим в IP -> Firewall -> Filter Rules
необходимо создать разрешающее правило для следующих портов и протоколов:
Протокол: UDP
Разрешаем порты: 1701,500,4500
В качестве In.Interface указываем тот что подключен к интернет
Также добавляем правило разрешающее ipcec
протокол: ipsec-esp
В качестве In.Interface указываем тот что подключен к интернет
Почти все готово, но если мы подключимся к нашему L2TP серверу, то не сможем выйти в интернет т.к. не создано разрешающее правило, переходим во вкладку NAT
Создаем новое правило
Chain: snat (т.к. NAT это у нас источник пакетов)
Src. Address: 192.168.10.0/24 (указываем подсеть которая у нас используется для выдачи IP адресов клиентам L2TP сервера)
Out.Inerface указываем интерфейс который у нас подключен к интернет.
переходим во вкладку Action и в строке Action указываем маскарадинг
Вот теперь все готово, нам осталось настроить VPN подключение, в Windows оно делается штатными средствами,
но есть нюанс.
Настраиваем соединение с vpn сервером
Создаем стандартное VPN подключение, в нем указываем протокол L2TP/IPsec, чтобы система не переберала все доступные протоколы, а подключалась сразу по нужному.
Указываем, разрешить следующие протоколы, ставим галку MS-CHAP v2
Нам необходимо нажать кнопку: Дополнительные параметры и там указываем парольную фразу, которую мы придумали при создании в строке IPsec Secret
Вот теперь точно все, подключаемся и пользуемся.
Дополнение
Если есть необходимость изменить настройки шифрования, то нам необходимо перейти в IP -> IPsec во вкладку Proposals и там выставить необходимые виды шифрования
Также в этом разделе можно добавлять свои ключи или сгенерировать, хотя я не готов гарантировать что роутер сможет обеспечить высокий уровень энтропии при генерации ключей, так что генерировать лучше на чем-то другом, а сюда их уже импортировать
В общем данный роутер, позволяет настроить систему довольно гибко исходя из ваших задач.
В процессе использования также выплыл один баг. Если вы подключены по L2TP то при попытке подключиться к маршрутизатору через Winbox система пишет что не правильный логин/пароль, а вот при подключении через PPTP такой проблемы не наблюдается. Как эту тему побороть, я пока не выяснил, если разберусь обязательно отпишусь.
О том что еще можно настроить на MikroTik
Summary
Standards: RFC 2661
L2TP is a secure tunnel protocol for transporting IP traffic using PPP. L2TP encapsulates PPP in virtual lines that run over IP, Frame Relay and other protocols (that are not currently supported by MikroTik RouterOS). L2TP incorporates PPP and MPPE (Microsoft Point to Point Encryption) to make encrypted links. The purpose of this protocol is to allow the Layer 2 and PPP endpoints to reside on different devices interconnected by a packet-switched network. With L2TP, a user has a Layer 2 connection to an access concentrator — LAC (e.g., modem bank, ADSL DSLAM, etc.), and the concentrator then tunnels individual PPP frames to the Network Access Server — NAS. This allows the actual processing of PPP packets to be separated from the termination of the Layer 2 circuit. From the user’s perspective, there is no functional difference between having the L2 circuit terminate in a NAS directly or using L2TP.
It may also be useful to use L2TP just as any other tunneling protocol with or without encryption. The L2TP standard says that the most secure way to encrypt data is using L2TP over IPsec (Note that it is default mode for Microsoft L2TP client) as all L2TP control and data packets for a particular tunnel appear as homogeneous UDP/IP data packets to the IPsec system.
Multilink PPP (MP) is supported in order to provide MRRU (the ability to transmit full-sized 1500 and larger packets) and bridging over PPP links (using Bridge Control Protocol (BCP) that allows to send raw Ethernet frames over PPP links). This way it is possible to setup bridging without EoIP. The bridge should either have an administratively set MAC address or an Ethernet-like interface in it, as PPP links do not have MAC addresses.
L2TP includes PPP authentication and accounting for each L2TP connection. Full authentication and accounting of each connection may be done through a RADIUS client or locally.
MPPE 128bit RC4 encryption is supported.
L2TP traffic uses UDP protocol for both control and data packets. UDP port 1701 is used only for link establishment, further traffic is using any available UDP port (which may or may not be 1701). This means that L2TP can be used with most firewalls and routers (even with NAT) by enabling UDP traffic to be routed through the firewall or router.
L2TP Client
Sub-menu: /interface l2tp-client
Properties
Property | Description |
---|---|
add-default-route (yes | no; Default: no) | Whether to add L2TP remote address as a default route. |
allow (mschap2 | mschap1 | chap | pap; Default: mschap2, mschap1, chap, pap) | Allowed authentication methods. |
connect-to (IP; Default: ) | Remote address of L2TP server |
comment (string; Default: ) | Short description of the tunnel. |
default-route-distance (byte; Default: ) | Since v6.2, sets distance value applied to auto created default route, if add-default-route is also selected |
dial-on-demand (yes | no; Default: no) | connects only when outbound traffic is generated. If selected, then route with gateway address from 10.112.112.0/24 network will be added while connection is not established. |
disabled (yes | no; Default: yes) | Enables/disables tunnel. |
keepalive-timeout (integer [1..4294967295]; Default: 60s) | Since v6.0rc13, tunnel keepalive timeout in seconds. |
max-mru (integer; Default: 1460) | Maximum Receive Unit. Max packet size that L2TP interface will be able to receive without packet fragmentation. |
max-mtu (integer; Default: 1460) | Maximum Transmission Unit. Max packet size that L2TP interface will be able to send without packet fragmentation. |
mrru (disabled | integer; Default: disabled) | Maximum packet size that can be received on the link. If a packet is bigger than tunnel MTU, it will be split into multiple packets, allowing full size IP or Ethernet packets to be sent over the tunnel. Read more >> |
name (string; Default: ) | Descriptive name of the interface. |
password (string; Default: «») | Password used for authentication. |
profile (name; Default: default-encryption) | Used PPP profile. |
user (string; Default: ) | User name used for authentication. |
use-ipsec (yes | no; Default: no) | When this option is enabled, dynamic IPSec peer configuration and policy is added to encapsulate L2TP connection into IPSec tunnel. |
ipsec-secret (string; Default: ) | Preshared key used when use-ipsec is enabled. |
Quick example
This example demonstrates how to set up L2TP client with username «l2tp-hm», password «123» and server 10.1.101.100
[admin@dzeltenais_burkaans] /interface l2tp-client>add name=l2tp-hm user=l2tp-hm password=123 \ \... connect-to=10.1.101.100 disabled=no [admin@dzeltenais_burkaans] /interface l2tp-client> print detail Flags: X - disabled, R - running 0 name="l2tp-hm" max-mtu=1460 max-mru=1460 mrru=disabled connect-to=10.1.101.100 user="l2tp-hm" password="123" profile=default-encryption add-default-route=no dial-on-demand=no allow=pap,chap,mschap1,mschap2
L2TP Server
Sub-menu: /interface l2tp-server
This sub-menu shows interfaces for each connected L2TP clients.
An interface is created for each tunnel established to the given server. There are two types of interfaces in L2TP server’s configuration
- Static interfaces are added administratively if there is a need to reference the particular interface name (in firewall rules or elsewhere) created for the particular user.
- Dynamic interfaces are added to this list automatically whenever a user is connected and its username does not match any existing static entry (or in case the entry is active already, as there can not be two separate tunnel interfaces referenced by the same name).
Dynamic interfaces appear when a user connects and disappear once the user disconnects, so it is impossible to reference the tunnel created for that use in router configuration (for example, in firewall), so if you need persistent rules for that user, create a static entry for him/her. Otherwise it is safe to use dynamic configuration.
Note: in both cases PPP users must be configured properly — static entries do not replace PPP configuration.
Server configuration
Sub-menu: /interface l2tp-server server
Properties
Property | Description |
---|---|
authentication (pap | chap | mschap1 | mschap2; Default: mschap1,mschap2) | Authentication methods that server will accept. |
default-profile (name; Default: default-encryption) | default profile to use |
enabled (yes | no; Default: no) | Defines whether L2TP server is enabled or not. |
max-mru (integer; Default: 1450) | Maximum Receive Unit. Max packet size that L2TP interface will be able to receive without packet fragmentation. |
keepalive-timeout (integer; Default: 30) | If server during keepalive-timeout period does not receive any packets, it will send keepalive packets every second, five times. If the server still does not receive any response from the client, then the client will be disconnected after 5 seconds. Logs will show 5x «LCP missed echo reply» messages and then disconnect. Available starting from v5.22 and v6rc3. |
max-mtu (integer; Default: 1450) | Maximum Transmission Unit. Max packet size that L2TP interface will be able to send without packet fragmentation. |
use-ipsec (no | yes | require; Default: no) | When this option is enabled, dynamic IPSec peer configuration is added to suite most of the L2TP road-warrior setups. When require is selected server will accept only those L2TP connection attempts that were encapsulated in the IPSec tunnel. |
ipsec-secret (string; Default: ) | Preshared key used when use-ipsec is enabled |
mrru (disabled | integer; Default: disabled) | Maximum packet size that can be received on the link. If a packet is bigger than tunnel MTU, it will be split into multiple packets, allowing full size IP or Ethernet packets to be sent over the tunnel. Read more >> |
To enable L2TP server:
[admin@MikroTik] interface l2tp-server server> set enabled=yes [admin@MikroTik] interface l2tp-server server> print enabled: yes max-mtu: 1450 max-mru: 1450 mrru: disabled authentication: pap,chap,mschap1,mschap2 default-profile: default-encryption [admin@MikroTik] interface l2tp-server server>
Monitoring
Monitor command can be used to monitor status of the tunnel on both client and server.
[admin@dzeltenais_burkaans] /interface l2tp-client> monitor 0 status: "connected" uptime: 7h24m18s idle-time: 6h21m4s encoding: "MPPE128 stateless" mtu: 1450 mru: 1450
Read-only properties
Property | Description |
---|---|
status () | Current L2TP status. Value other than «connected» indicates that there are some problems establishing tunnel.
|
uptime (time) | Elapsed time since tunnel was established. |
idle-time (time) | Elapsed time since last activity on the tunnel. |
encoding () | Used encryption method |
local-address (IP Address) | IP Address of local interface |
remote-address (IP Address) | IP Address of remote interface |
mru (integer) | Negotiated and used MRU |
Application Examples
Connecting Remote Client
The following example shows how to connect a computer to a remote office network over L2TP encrypted tunnel giving that computer an IP address from the same network as the remote office has (without any need of bridging over EoIP tunnels)
Consider following setup:
Office router is connected to internet through ether1. Workstations are connected to ether2.
Laptop is connected to the internet and can reach Office router’s public IP (in our example it is 192.168.80.1).
First step is to create a user
[admin@RemoteOffice] /ppp secret> add name=Laptop service=l2tp password=123 local-address=10.1.101.1 remote-address=10.1.101.100 [admin@RemoteOffice] /ppp secret> print detail Flags: X - disabled 0 name="Laptop" service=l2tp caller-id="" password="123" profile=default local-address=10.1.101.1 remote-address=10.1.101.100 [admin@RemoteOffice] /ppp secret>
Notice that L2TP local address is the same as routers address on local interface and remote address is from the same range as local network (10.1.101.0/24).
Next step is to enable L2TP server and L2TP client on the laptop.
[admin@RemoteOffice] /interface l2tp-server server> set enabled=yes [admin@RemoteOffice] /interface l2tp-server server> print enabled: yes max-mtu: 1460 max-mru: 1460 mrru: disabled authentication: mschap2 default-profile: default-encryption [admin@RemoteOffice] /interface l2tp-server server>
L2TP client from the laptop should connect to routers public IP which in our example is 192.168.80.1.
Please, consult the respective manual on how to set up a L2TP client with the software you are using.
Note: By default Windows sets up L2TP with IPsec. To disable IpSec, registry modifications are required. Read more >>
At this point (when L2TP client is successfully connected) if you will try to ping any workstation from the laptop, ping will time out, because Laptop is unable to get ARPs from workstations. Solution is to set up proxy-arp on local interface
[admin@RemoteOffice] interface ethernet> set ether2 arp=proxy-arp [admin@RemoteOffice] interface ethernet> print Flags: X - disabled, R - running # NAME MTU MAC-ADDRESS ARP 0 R ether1 1500 00:30:4F:0B:7B:C1 enabled 1 R ether2 1500 00:30:4F:06:62:12 proxy-arp [admin@RemoteOffice] interface ethernet>
After proxy-arp is enabled client can now successfully reach all workstations in local network behind the router.
Site-to-Site L2TP
The following is an example of connecting two Intranets using a L2TP tunnel over the Internet.
Consider following setup:
Office and Home routers are connected to internet through ether1, workstations and laptops are connected to ether2.
Both local networks are routed through L2TP client, thus they are not in the same broadcast domain. If both networks should be in the same broadcast domain then you need to use BCP and bridge L2TP tunnel with local interface.
First step is to create a user
[admin@RemoteOffice] /ppp secret> add name=Home service=l2tp password=123 local-address=172.16.1.1 remote-address=172.16.1.2 routes="10.1.202.0/24 172.16.1.2 1" [admin@RemoteOffice] ppp secret> print detail Flags: X - disabled 0 name="Home" service=l2tp caller-id="" password="123" profile=default local-address=172.16.1.1 remote-address=172.16.1.2 routes="10.1.202.0/24 172.16.1.2 1" [admin@RemoteOffice] /ppp secret>
Notice that we set up L2TP to add route whenever client connects. If this option is not set, then you will need static routing configuration on the server to route traffic between sites through L2TP tunnel.
Next step is to enable L2TP server on the office router and configure L2TP client on the Home router.
[admin@RemoteOffice] /interface l2tp-server server> set enabled=yes [admin@RemoteOffice] /interface l2tp-server server> print enabled: yes max-mtu: 1460 max-mru: 1460 mrru: disabled authentication: mschap2 default-profile: default-encryption [admin@RemoteOffice] /interface l2tp-server server>
[admin@Home] /interface l2tp-client> add user=Home password=123 connect-to=192.168.80.1 disabled=no [admin@Home] /interface l2tp-client> print Flags: X - disabled, R - running 0 R name="l2tp-out1" max-mtu=1460 max-mru=1460 mrru=disabled connect-to=192.168.80.1 user="Home" password="123" profile=default-encryption add-default-route=no dial-on-demand=no allow=pap,chap,mschap1,mschap2 [admin@Home] /interface l2tp-client>
On home router if you wish traffic for the remote office to go over tunnel you will need to add a specific static route as follows:
[admin@Home] /ip route> add dst-address=10.1.101.0/24 gateway=l2tp-out1
After tunnel is established and routes are set, you should be able to ping remote network.
Basic L2TP/IpSec setup
This example demonstrates how to easily setup L2TP/IpSec server on Mikrotik router (with installed 6.16 or newer version) for road warrior connections (works with Windows, Android And iPhones).
First step is to enable L2TP server:
/interface l2tp-server server set enabled=yes use-ipsec=required ipsec-secret=mySecret default-profile=default
required is set to make sure that only IPSec encapsulated L2TP connections will be accepted.
Now what it does is enables L2TP server and creates dynamic ipsec peer iwth specified secret
[admin@MikroTik] /ip ipsec peer> print 0 D address=0.0.0.0/0 local-address=0.0.0.0 passive=yes port=500 auth-method=pre-shared-key secret="123" generate-policy=port-strict exchange-mode=main-l2tp send-initial-contact=yes nat-traversal=yes hash-algorithm=sha1 enc-algorithm=3des,aes-128,aes-192,aes-256 dh-group=modp1024 lifetime=1d dpd-interval=2m dpd-maximum-failures=5
Note: Care must be taken if static ipsec peer configuration exists.
Next step is to create VPN pool and add some users.
/ip pool add name=vpn-pool range=192.168.99.2-192.168.99.100 /ppp profile set default local-address=192.168.99.1 remote-address=vpn-pool /ppp secret add name=user1 password=123 add name=user2 password=234
If there are strict firewall policies, do not forget to add rules which accepts l2tp and ipsec.
/ip firewall filter add chain=input protocol=udp port=1701,500,4500 add chain=input protocol=ipsec-esp
Now router is ready to accept L2TP/IpSec client connections.
L2TP/IpSec with static IPSec server setup
Ipsec/L2TP behind NAT
Consider setup as illustrated below
Client needs secure connection to the office with public address 1.1.1.1, but server does not know what will be the source address from which client connects. It is so called road-warrior setup.
Our client will also be located behind the router with enabled NAT.
For the setup RouterOS router will be used as the client device behind NAT (it can be any device: Windows PC, Smartphone, Linux PC, etc.)
IP Connectivity
On the server:
/ip address add address=1.1.1.1/24 interface=ether1 /ip route add gateway=1.1.1.2
On the clients router:
/ip address add address=2.2.2.2/24 interface=ether1 add address=10.5.8.0/24 interface=ether2 /ip route add gateway=2.2.2.1 /ip firewall nat add chain=srcnat action=masquerade out-interface=ether1
On the client:
/ip address add address=10.5.8.120/24 interface=ether1
L2TP Config
On the server:
/interface l2tp-server server set enabled=yes profil=default /ip pool add name=l2tp-pool ranges=192.168.1.2-192.168.1.20 /ppp profile set default local-address=192.168.1.1 remote-address=l2tp-pool /ppp secret add name=l2tp-test password=test123456
On the client:
/interface l2tp-client add connect-to=1.1.1.1 disabled=no name=l2tp-out1 password=password user=l2tp-test
IpSec Config
On server side:
/ip ipsec proposal set [ find default=yes ] enc-algorithms=3des,aes-128,aes-192,aes-256 /ip ipsec peer add generate-policy=yes hash-algorithm=sha1 nat-traversal=yes secret=test123456
RouterOS as client:
/ip ipsec proposal set [ find default=yes ] enc-algorithms=aes-128 /ip ipsec peer add address=1.1.1.1/32 hash-algorithm=sha1 nat-traversal=yes secret=test123456 /ip ipsec policy add dst-address=1.1.1.1/32 protocol=udp sa-dst-address=1.1.1.1 \ sa-src-address=10.5.8.120 src-address=10.5.8.120/32
Notice that nat-traversal
is enabled. This option is required because Ipsec connection will be established through the NAT router otherwise Ipsec will not be able to establish phase2.
Warning: Only one L2TP/IpSec connection can be established through the NAT. Which means that only one client can connect to the sever located behind the same router.
Apple iOS (iPhone/iPad) Client
You must choose L2TP as VPN type in iOS to connect to the IPsec/L2TP server on RouterOS (this includes the default IPsec server created by QuickSet VPN checkbox).
Read More
- BCP (Bridge Control Protocol)
- MikroTik RouterOS and Windows XP IPSec/L2TP
[ Top | Back to Content ]
В данном примере показано как легко можно настроить сервер L2TP/IPsec на маршрутизаторе Mikrotik с конфигурацией по умолчанию (RouterOS 6.16 или поздней) в интерфейсе winbox для соединений типа roadwarrior (который работает с Windows, Android и iPhone).
Первый шаг — включить L2TP-сервер:
Заходим в раздел PPP > Interface , сверху жмем по кнопке L2TP Server, откроется окно настройки сервера:
Отмечаем галочку Enabled, в поле Default Profile выбираем “default”, в поле “Use IPsec” выбираем “required”. В поле IPsec Secret прописываем свой уникальный пароль, который будет необходим для всех подключенных VPN клиентов, остальное оставляем по умолчанию. Жмем OK, закрываем все окна.
Следующий шаг – выделить диапазон адресов и шлюз для подключенных VPN клиентов, а также создание профилей подключения для отдельных пользователей. Важно – диапазон адресов не должен пересекаться с диапазонами других сервисов на устройстве во избежании конфликтов (например DHCP).
Заходим в раздел IP > Pool , в появившемся окне жмем по синему плюсу – появится новое окошко.
В поле “Name” даем любое название нашему диапазону адресов для, в поле “Adresses” указываем сам диапазон (Не забываем оставить один адрес в диапазоне под шлюз). Жмем OK, закрываем все окна.
Теперь открываем раздел PPP, заходим во вкладку Profiles, двойным нажатием в списке жмем по default. В открывшемся окне в поле “Local Address” справа жмем на черную стрелочку вниз и прописываем оставленный ранее адрес шлюза. В поле “Remote Address” из списка выбираем название ранее созданного нами диапазона. Жмем ок.
В этом же окне заходим в раздел “Secrets”, жмем на синий плюс, появится окно создания профиля пользователей.
Здесь в поле “Name” прописываем имя пользователя клиента, который будет подключатся по VPN соединению, в поле “Password” соответственно пишется пароль для данного пользователя. Жмем ок, повторяем так для каждого нам необходимого пользователя, закрываем все окна.
Последний шаг – убедится что на маршрутизаторе открыты необходимые порты для принятия соединений IPsec. Заходим в раздел IP > Firewall. Во вкладке “Filter Rules” жмем на синий плюс, появится новое окно.
В новом окне меняем настройки как показано на картинке (в поле “Dst. Port” числа указываются через запятую), жмем ок.
Повторяем предыдущее действие, только в этот раз со следующими настройками, жмем ок.
В окне “Firewall” в разделе “Filter Rules” в самом конце списка теперь должно появится два новых пункта – их необходимо мышкой передвинуть в самый вверх списка под первым пунктом.
Все готово! Маршрутизатор готов к подключению L2TP/IPsec VPN клиентов используя ранее введенные IPsec secret и данные профиля пользователя.
Полезные ссылки:
1. Описание и примеры конфигураций L2TP сетей для различных условий их использования (англ.)
2. Подробная теория и описание всех настроек связанных с протоколом IPsec, а также примеры к их применению на практике, описание возможностей и поддержки устройств данного протокола и ответы на часто задаваемые вопросы (англ.)
Это продолжение предыдущих двух статей (Первая) и (Вторая) в которых мы показали как настроить L2TP на MikroTik без IPSec, теперь же прикрутим его к нашей конфигурации.
IPSEC – это целый набор протоколов, обеспечивающих защиту данных IP через сеть интернет. Несомненно, он один из самых безопасных реализаций VPN, но ложкой дегтя является сложность настройки. Некоторые модели RouterBOARD имею встроенные чипы разгрузки для алгоритмов AES, это сделано для того, чтобы не нагружать центральный процессор сложной обработкой. Ознакомиться более подробно со списком оборудования поддерживающих аппаратную разгрузку можно на сайте mikrotik.com.
В нижеизложенной инструкции будет продемонстрировано конфигурирование классического IPSEC, а не IKEv2. На основе предыдущих статей я покажу два режима настройки L2TP\IPSec в транспортном режиме на роутере микротик. По сложившейся практике предпочтительно делать именно в транспортном режиме, т.к. удобнее прописать маршруты в локальные сети через адреса в туннелях вместо создания NAT правил. В добавок про NAT отмечу, что IPSEC-у становится дурно, когда он проходит через него. Не плохо реализована поддержка NAT-T. Взяв во внимание вышеизложенную информацию приступим.
Если вы хотите углубить свои знания по работе с роутерами MikroTik, то наша команда рекомендует пройти курсы которые сделаны на основе MikroTik Certified Network Associate и расширены автором на основе опыта . Подробно читайте ниже.
Содержание
- Схема сети
- Простая настройка
- Site to site
- Настройка firewall
- 89 вопросов по настройке MikroTik
Схема сети
Используем лабораторный стенд с Mikrotik CHR версии 6.46.2 на борту. Мы находимся справа внизу в офисе SPB (Office-SPB). Вводные данные:
- Office-SPB сервер;
- Office-Moscow клиент;
- NetworkCore выполняет роль провайдера, он будет заниматься обычной маршрутизацией;
- Office-Moscow ether1 смотрит в интернет 172.16.10.2/24;
- Office-SPB ether1 смотрит в интернет 172.16.11.2/24;
- Office-Moscow имеет bridge “General-Bridge” в локальной сети 192.168.11.1/24;
- Office-SPB имеет bridge “General-Bridge” в локальной сети 192.168.10.1/24;
- IP ПК в локальной сети Office-Moscow 192.168.11.2;
- IP ПК в локальной сети Office-SPB 192.168.10.2;
- Адресация в VPN сети 172.16.25.0/24;
- Активный L2TP туннель между офисами.
Простая настройка
Предполагает быстрое развертывание на сервере и клиенте. Она более всего подходит для инсталляций, когда вы планируете чтобы к вам подключалось много мобильных устройств или устройств находящихся за NAT-ом. На московском роутере проверим состояние клиентского подключения. Переходим PPP – Interface – SPB-Office – Status.
С соединением все в порядке. В строке Encoding видим стандартное шифрование протокола L2TP. Открываем свойства сервера L2TP. Ставим required на параметре Use IPsec и указываем пароль.
Сохраняем. Клиентское соединение пропадает, т.к. теперь мы требуем согласование протокола IPSEC. Видим соответствующее сообщение в логах сервера. Оно говорит о том, что подключение было отброшено.
Если вы установите значение Use IPsec в yes, то все желающие подключиться без использования IPSEC – подключатся.
Подключаемся к клиентскому Mikrotik в Питере, открываем PPP – Interface – выбираем интерфейс to-MSC и открываем вкладку Dial Out. Ставим галочку на UseIPsec и задаем пароль, установленный на сервере.
После нажатия кнопки Apply проверим состояние подключения на вкладке Status.
Строка Encoding изменилась на более внушительное значение, что символизирует об успешном согласовании.
Site to site
Все настройки находятся в IP – IPSEC. Данный метод предназначен для развёртывания между удаленными площадками. Обязательным условием является наличие статических публичных адресов для обоих участников туннеля. Параметры идентичны, за исключением маленьких деталей. Отлично подходит для голосового трафика, т.к. все данные будут инкапсулированы в UDP. Запасаемся терпением и вниманием. Надеюсь, что все помнят простое правило по неиспользованию стандартных профилей. Создаем одинаковый профиль на обоих устройствах.
Далее создаем предложения.
Далее нужно создать пиров. Направляем их друг на друга и указываем раннее созданные профили. Пишем в поле Local Address тот адрес роутера, с которого хотите инициировать соединение. Это особенно актуально если у вас их несколько или нужно инициировать соединение с определенного. Т.к. у нас всего по одному адресу – укажем их.
Далее создаем группы.
Еще не все. Следующий пункт — Identity.
И вишенкой на торте Policies. На вкладке General указываем адреса источника и назначения. Соответственно направляем друг на друга. 1701 это UDP порт L2TP.
Переходим в Action. Обязательно выбираем параметр Level в unique. Особенно полезно будет для тех, кто планирует много шифрованных туннелей.
Сохраняем и проверяем.
Established в конце строки пира SPB означает что согласование прошло успешно и оно устоялось. Откроем Installed SAs и посмотрим на наши ключики.
Все как мы и заказывали. Ну и наконец проверим наше L2TP соединение. Все должно зашифроваться без переподключений.
Настройка firewall
Тут также, как и с предыдущим пунктом. Настраиваем одинаково с обоих сторон. Нужно отредактировать созданные правила на московском роутере, а на питерском создаем с нуля аналогичные. В первом правиле кроме порта для L2TP добавляем еще два:
- 500;
- 4500.
Создадим еще одно правило для IPSEC-ESP.
Перемещаем его над последним правилом.
Повторив параметры фаервола на питерском роутере, обязательно проверьте что соединение L2TP подключается и шифруется соответствующими алгоритмами. На этом мы закончили цикл статей про настройку L2TP клиента и сервера как с IPSec так и без него. Если у вас остались вопросы задавайте из в комментариях а лучше в группу Теллеграмм.
89 вопросов по настройке MikroTik
Вы хорошо разбираетесь в Микротиках? Или впервые недавно столкнулись с этим оборудованием и не знаете, с какой стороны к нему подступиться? В обоих случаях вы найдете для себя полезную информацию в курсе «Настройка оборудования MikroTik». 162 видеоурока, большая лабораторная работа и 89 вопросов, на каждый из которых вы будете знать ответ. Подробности и доступ к началу курса бесплатно тут.