На роутере проводим настройку L2TP сервера:
На роутере заводим пользователя с правом L2TP. При подключении будет использоваться логин пароль этого пользователя. На роутере мы можем посмотреть подключенных пользователей:
На клиенте Ubuntu Desktop провожу настройку клиента. IPSec в настройке отключаю. Соединяемся с роутером по L2TP туннелю.
Это таблица маршрутизации на этом роутере:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.13.201 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
127.0.0.1 127.0.0.1 255.255.255.255 UGH 1 0 0 lo
192.168.4.0 0.0.0.0 255.255.255.0 U 0 0 0 bdg1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth1
Где 192.168.4.0 адрес локальной сети роутера, 192.168.0.0 внешние интернет адреса (моя локалка с которой раздаю интернет), 192.168.13.201 адрес выданный роутером клиенту L2TP.
В программе Wireshark, запущенной с клиента, установившего L2TP-туннель с роутером, при запуске пинга на IP-адрес 192.168.4.20 принадлежащий локальной сети за роутером, вложенность в пакет выглядит так:eth:ip:udp:l2tp:ppp:ip:icmp:data
L2TP не шифруется, поэтому нас не устраивает. Будем его использовать только как транспорт для IPSec, который шифруется.
Настраиваем IPSec на роутере D-Link. С теорией по IPSec можно ознакомится в этой статье.
Теперь в Wireshark мы увидим что содержимое пакетов зашифровано eth:ip:esp
На рисунке ниже, вот так выглядят пакеты в L2TP over IPSec с включенным NAT-Traversal. NAT-T использует UDP 4500.
Теперь настроим IPSec в туннельном режиме. И еще одно немаловажное изменение, в Remote Endpoint укажем не конкретный адрес, а FQDN 0.0.0.0
Схема соединения без NAT:
Client VPN 192.168.0.196 ---- Internet ---- Server VPN - Router - 192.168.0.166
Вот такой VPN - лог генерируется:
[IKE] INFO: [IPSEC_VPN] IPsec-SA established: ESP/Transport 192.168.0.166->192.168.0.196 with spi=515848118(0x1ebf37b6)
[IKE] INFO: [IPSEC_VPN] IPsec-SA established: ESP/Transport 192.168.0.196->192.168.0.166 with spi=122863806(0x752c0be)
[IKE] INFO: No policy found, generating the policy : 192.168.0.196/32[1701] 192.168.0.166/32[1701] proto=udp dir=in
[IKE] INFO: Using IPsec SA configuration: anonymous
[IKE] INFO: Responding to new phase 2 negotiation: 192.168.0.166[0]<=>192.168.0.196[0]
[IKE] INFO: Sending Informational Exchange: notify payload[INITIAL-CONTACT]
[IKE] INFO: ISAKMP-SA established for 192.168.0.166[500]-192.168.0.196[500] with spi:cae6f671d5e4d507:b50558498aa24484
[IKE] INFO: Received unknown Vendor ID
[IKE] INFO: Received unknown Vendor ID
[IKE] INFO: Received Vendor ID: draft-ietf-ipsec-nat-t-ike-02
[IKE] INFO: Received unknown Vendor ID
[IKE] INFO: Received Vendor ID: RFC 3947
[IKE] INFO: Received Vendor ID: DPD
[IKE] INFO: Received unknown Vendor ID
[IKE] INFO: Beginning Identity Protection mode.
[IKE] INFO: Received request for new phase 1 negotiation: 192.168.0.166[500]<=>192.168.0.196[500]
[IKE] INFO: Anonymous configuration selected for 192.168.0.196[500].
Теперь появилась анонимная конфигурация, т.е. нет привязки к IP-адресу клиента.
Интересно проверить как будет работать с адресами клиентов за NAT-ом. Проверено - за NAT не работает. Надо включать NAT-Traversal.
Пример соединения:
Client VPN 192.168.0.196 - Router-NAT-1.1.1.1 ---- Internet ---- Server VPN - Router - 2.2.2.2
Лог соединения:
IPsec-SA established[UDP encap 4500->11366]: ESP/Transport 2.2.2.2->1.1.1.1 with spi=3037768221(0xb510aa1d)
IPsec-SA established[UDP encap 11366->4500]: ESP/Transport 1.1.1.1->2.2.2.2 with spi=2688364(0x29056c)
Adjusting peer's encmode 4(4)->Transport(2)
No policy found, adjusting source address for generating the policy incase of NAT-T in Transport Mode: 1.1.1.1/32[1701] 2.2.2.2/32[1701] proto=udp dir=in
Re-using previously generated policy: 192.168.0.196/32[1701] 2.2.2.2/32[1701] proto=udp dir=in
Using IPsec SA configuration: anonymous
Responding to new phase 2 negotiation: 2.2.2.2[0]<=>1.1.1.1[0]
Sending Informational Exchange: notify payload[INITIAL-CONTACT]
ISAKMP-SA established for 2.2.2.2[4500]-1.1.1.1[11366] with spi:59d70c4ff4f9c7d1:edc2e8b3c26d1876
KA list add: 2.2.2.2[4500]->1.1.1.1[11366]
Floating ports for NAT-T with peer 1.1.1.1[11366]
NAT detected: PEER
NAT-D payload does not match for 1.1.1.1[63485]
NAT-D payload matches for 2.2.2.2[500]
For 1.1.1.1[63485], Selected NAT-T version: RFC 3947
Received unknown Vendor ID
Received unknown Vendor ID
Received Vendor ID: draft-ietf-ipsec-nat-t-ike-02
Received unknown Vendor ID
Received Vendor ID: RFC 3947
Received Vendor ID: DPD
Received unknown Vendor ID
Beginning Identity Protection mode.
Received request for new phase 1 negotiation: 2.2.2.2[500]<=>1.1.1.1[63485]
Anonymous configuration selected for 1.1.1.1[63485].
Как видно из лога используется UDP 4500 для NAT-Traversal
Также акцентирую внимание на настройку L2TP сервера. Там есть настройка роутинга NAT и Classical. Если выбран Classical, то при установке соединения будет доступен только сам роутер по внутреннему адресу. Поэтому надо выставлять NAT для того чтобы увидеть компы за натом.
UPD 12.08.2015
Для того чтобы видеть сеть за L2TP сервером, нужно прописать маршрут в "Advanced - Routing - Static routing".
Например:
Destination - 192.168.13.0, MASK - 255.255.255.0, GW - 192.168.1.1, Interface - LAN, Active - Yes, Private - No, Metric - 15,
где 192.168.13.0 - это сеть L2TP, GW - 192.168.1.1 - это адрес самого роутера в локальной сети, метрика от 2 до 15.
Спасибо за статью!!! Так и не могу получить доступ в локальную сеть компании за маршрутизатором без включения в настройках VPN туннеля, "Использовать основной шлюз в удаленной сети". Это для клиента на Windows.
ОтветитьУдалитьТогда нужно на клиенте прописать постоянный маршрут с указанием gateway=адрес-выданный-машине-в-L2TP-сети
ОтветитьУдалитьroute -p ADD 192.168.1.0 MASK 255.255.255.0 192.168.13.201
где 192.168.1.0/24 - локальная сеть, 192.168.13.201 - адрес выданный клиенту в L2TP сети (можно увидеть ipconfig)
Добрый день настроил подключение как здесь написано, все отлично коннектится с windows и android, и нормально захожу по rdp на сервак, но с raspbery pi с установленным LINUX 10 (buster) никак не могу подключиться, упростил уже до того что захожу только по L2TP без IPSec, подключение появляется (ppp0) но пинги дальше роутера не идут.
ОтветитьУдалитьвозможно нужно добавить маршрут на raspbery pi
ОтветитьУдалитьЯ о том же думаю, прописал такие маршруты, может еще добавите что надо?
Удалитьiptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A INPUT -p udp -m udp --dport 1701 -j ACCEPT
-не пингует сеть за роутером, до роутера пинги идут.
Попробовал поставил TwistOS, прописал только последнюю строчку в маршрутизацию и все заработало там. Но надо запустить на Linux. Может посоветуете еще какие маршруты прописать?
З.Ы. NetworkManager убрал, использую чисто xl2tpd.
Для большей конкретики.
УдалитьСтоит роутер DSR1000 с внешн адресом 87.87.87.87 внутр адрес 192.168.16.1(L2TP 192.168.15.1) в лок сети RDP серв. Подключаюсь на малине (192.168.43.3) через сот. тел. (192.168.43.1), DSR по L2TP выдает 192.168.15.3.
1) iptables это firewall, не маршрутизация. тебе в сторону route копать)
ОтветитьУдалить2) у тебя linux не видит 192.168.16.0/24 сеть предприятия, так добавь маршрут на linux через шлюз 192.168.15.1
что-то вроде
ip route add 192.168.16.0/24 via 192.168.15.1
Спасибо огромное, все заработало!!!
ОтветитьУдалитьНо сейчас появилась потребность в печати на принтере установленном на малине (192.168.15.2), установил CUPS на него расшарил, а с сервера(192.168.16.30) не могу даже пропинговать до 192.168.15.2. Может какие-то настройки еще в роутере надо сделать?
я думаю что здесь тоже самое, добавь на сервере(192.168.16.30) маршрут к малине через команду route, толька с синтаксисом Windows уже.
ОтветитьУдалитьПрописал на серваке маршрут, никакого эффекта((((
ОтветитьУдалитьПодключил уже пару малин сотовый тел. по wifi, в сетке они норм пингуются, CUPS работает печатают друг на друга. Как только их подключаю по L2TP, всё кердык, пинги пропадают между собой, CUPS не видит тоже соседние компы, пингует только 15.1 и подсеть 16.0 Сможете что то порекомендовать? такое ощущение что дело в роутере. Стоит прошивка 2.13_WW.
из подсети 16.0 не пингуется вообще подсеть 15.0, роутер пингует 192.168.15.1 и подсеть 16.0, 15.2 и 15.3 не пингует
ОтветитьУдалитьЗаметил такое, начинаю пинговать соседний комп по впн, ответов нет, потом подключаю впн на обоих компах и проскакивает 1 пакет с ответом и все, ни пакетов ни ответов(
ОтветитьУдалитьв логах такое сообщение:
ОтветитьУдалитьVPN Debug [Wed Jun 16 15:43:22 2021(GMT+0400)] [DSR-1000] [2.13] [VPN] [Debugging] [L2TP_SERVER] [L2TPD : DBUpdate event: Table: ipAddressTable opCode:23 rowId:5]
VPN Debug [Wed Jun 16 15:43:25 2021(GMT+0400)] [DSR-1000] [2.13] [VPN] [Debugging] [L2TP_SERVER] [L2TPD : DBUpdate event: Table: ipAddressTable opCode:23 rowId:5 status = ERROR]
>>> Прописал на серваке маршрут, никакого эффекта((((
ОтветитьУдалитьЯ думаю сначала было бы неплохо увидеть что ты прописал и таблицу маршрутизации на 16.30 сервере.
IPv4 таблица маршрута
ОтветитьУдалить===========================================================================
Активные маршруты:
Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика
0.0.0.0 0.0.0.0 192.168.16.1 192.168.16.35 281
127.0.0.0 255.0.0.0 On-link 127.0.0.1 331
127.0.0.1 255.255.255.255 On-link 127.0.0.1 331
127.255.255.255 255.255.255.255 On-link 127.0.0.1 331
192.168.15.0 255.255.255.0 192.168.16.1 192.168.16.35 26
192.168.16.0 255.255.255.0 On-link 192.168.16.35 281
192.168.16.35 255.255.255.255 On-link 192.168.16.35 281
192.168.16.255 255.255.255.255 On-link 192.168.16.35 281
192.168.25.0 255.255.255.0 192.168.15.1 192.168.16.35 26
192.168.25.0 255.255.255.0 192.168.16.1 192.168.16.35 26
192.168.137.0 255.255.255.0 On-link 192.168.137.1 291
192.168.137.1 255.255.255.255 On-link 192.168.137.1 291
192.168.137.255 255.255.255.255 On-link 192.168.137.1 291
192.168.164.0 255.255.255.0 On-link 192.168.164.1 291
192.168.164.1 255.255.255.255 On-link 192.168.164.1 291
192.168.164.255 255.255.255.255 On-link 192.168.164.1 291
224.0.0.0 240.0.0.0 On-link 127.0.0.1 331
224.0.0.0 240.0.0.0 On-link 192.168.137.1 291
224.0.0.0 240.0.0.0 On-link 192.168.164.1 291
224.0.0.0 240.0.0.0 On-link 192.168.16.35 281
255.255.255.255 255.255.255.255 On-link 127.0.0.1 331
255.255.255.255 255.255.255.255 On-link 192.168.137.1 291
255.255.255.255 255.255.255.255 On-link 192.168.164.1 291
255.255.255.255 255.255.255.255 On-link 192.168.16.35 281
===========================================================================
Постоянные маршруты:
Сетевой адрес Маска Адрес шлюза Метрика
0.0.0.0 0.0.0.0 192.168.16.1 По умолчанию
сервер 16.35, менял ip L2TP на роутере на 25.1
ОтветитьУдалитьЕсли ты поставил 25.0 для L2TP, то зачем эта сеть в таблице маршрутизации?
ОтветитьУдалить192.168.15.0 255.255.255.0 192.168.16.1 192.168.16.35 26
192.168.25.0 255.255.255.0 192.168.15.1 192.168.16.35 26
192.168.25.0 255.255.255.0 192.168.16.1 192.168.16.35 26
0.0.0.0 0.0.0.0 192.168.16.1 192.168.16.35 281
У тебя должна быть запись с адресом 15.0 сети, которую тебе нужно достичь со шлюзом = IP сервера из 25 сети (например IP сервера 25.2 в L2TP, 15.1 в 15.0 сети), также на этом 15.1 сервере должна быть включена маршрутизация, чтобы он мог пересылать запросы в сеть.
Белый внешний ip это статичный ip клиента?
ОтветитьУдалитьЯ думаю, судя по таблице маршрутизации на роутере, я делал настройку лабораторно, eth1 & eth2 - это WAN1 & WAN2 роутера, где Интернетом выступала 192.168.0.0 сеть. Я думаю, под "Белый внешний ip" - имелся ввиду статический WAN адрес выданный провайдером если это перевести в продакшен
ОтветитьУдалитьУ меня для теста нужно провести подключение к l2tp где роутер и клиент находятся в одной сети, и соответственно внешний адрес клиента будет wanip роутера что невозможно назначить в ipsec. Буду очень благодарен если подскажете мне что я делаю не так. Клиент под Windows 7
ОтветитьУдалитьтестируй со смартфоном с 4G, либо на самом смартфоне, либо смартфон как модем к компу подключай, с отключением локальной сети на компе.
ОтветитьУдалить