Вопрос или проблема
На моем Debian 10 есть интерфейс Wi-Fi, wlx08beac0a6c1d
, который работает как WEP AP для старого оборудования, которое не поддерживает WPA.
Моя основная сеть – 192.168.1.0/24
, и этот интерфейс настроен как 192.168.2.1
.
Для начала на этом интерфейсе установлены ограничения на один MAC и разрешен только DHCP в этой сети:
iptables -A INPUT -i wlx08beac0a6c1d -m mac ! --mac-source 00:30:65:05:9F:4D -j DROP
iptables -A INPUT -i wlx08beac0a6c1d -p udp --dport 67:68 --sport 67:68 -j ACCEPT
iptables -A INPUT -i wlx08beac0a6c1d -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i wlx08beac0a6c1d -j DROP
(Проверка MAC также настроена в hostapd.conf
— что, конечно, является столь же неэффективной мерой безопасности (хотя, вероятно, она достаточно эффективна здесь, в Шропшире).)
Это устройство (заявляет, что) поддерживает L2TP over IPSec.
Я предполагаю, что, открыв дополнительный порт для этого, я смогу подключить эту старую машину к остальной моей сети через туннель к этому порту, и, как только подключение будет установлено, старая машина будет казаться, как будто она в моей сети.
Так ли это? Или я что-то неправильно понимаю?
Безопасно ли это теперь в сети WEP?
Похоже, что необходимые пакеты — это strongswan
и xl2tpd
?
Похоже, что IPSec будет шифровать трафик в сети WEP и что мне нужно будет открыть еще несколько портов, чтобы согласовать и начать шифрование?
Затем, похоже, L2TP установит соединение, PPP-соединение с другим портом на Debian, и будет маршрутизировать весь трафик через него?
Так старая машина получит второй IP-адрес для этого PPP-соединения?
И как это будет выглядеть в Debian (и будет ли оно маршрутизироваться между остальной частью моей сети и Интернетом)?
Итак: сначала strongswan
…
# apt-get install strongswan
И теперь я действительно не понимаю, что делать.
Я сделал, как указано здесь
https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ikev2-vpn-server-with-strongswan-on-ubuntu-18-04-2
и получил следующий ipsec.conf
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
conn wep-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
leftid=192.168.2.31
leftcert=server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=192.168.2.0/24
rightdns=192.168.2.31
rightsendcert=never
eap_identity=%identity
Я думаю, что left правильно, если интерпретировать его как эта машина, но не уверен насчет right, что, предположительно, является чем-то другим?
Далее он продолжает делать что-то с чем-то, называемым UFW, но я использую iptables
.
Я думаю, мне нужно
iptables -A INPUT -i wlx08beac0a6c1d -p udp --dport 500 -j ACCEPT
iptables -A INPUT -i wlx08beac0a6c1d -p udp --dport 4500 -j ACCEPT
чтобы разрешить соединения с IPsec.
Следующая часть трюка — это xl2tpd
…
# apt-get install xl2tpd
/etc/xl2tpd/xl2tpd.conf
[global]
ipsec saref = yes
access control = no
[lns default]
ip range = 192.168.3.100-192.168.3.254
local ip = 192.168.3.1
refuse chap = yes
refuse pap = yes
require authentication = yes
pppoptfile = /etc/ppp/xl2tpd-options
length bit = yes
/etc/ppp/xl2tpd-options
require-mschap-v2
ms-dns 192.168.3.1
Добавьте в /etc/ppp/chap-secrets
И
iptables -A INPUT -i wlx08beac0a6c1d -p udp --dport 1701 -j ACCEPT
Очевидно, что это не работает.
/etc/ipsec.conf
config setup
conn wep-ap
type=transport
authby=secret
pfs=no
rekey=no
keyingtries=1
left=%any
leftid=%any
right=%any
auto=add
esp=aes128-sha1-modp1536
ike=aes128-sha1-modp1536
include /var/lib/strongswan/ipsec.conf.inc
Вопрос: как определить, какие значения должны быть у esp
и ike
? Они имеют другой формат в ipsec.conf
, чем в /var/log/syslog
— это очень неудобно.
/etc/strongswan.conf
charon {
plugins {
eap_dynamic {
preferred = eap-mschapv2, eap-tls
}
}
}
/etc/ipsec.secrets
%any %any : PSK "password"
/etc/ppp/chap-secrets
laptop * password *
/etc/ppp/options.xl2tpd
noccp
auth
mtu 1410
mru 1410
nodefaultroute
proxyarp
silent
debug
ms-dns 192.168.3.31
/etc/xl2tpd/xl2tpd.conf
[global] ; Глобальные параметры:
port = 1701 ; * Привязка к порту 1701
debug avp = yes
debug network = yes
debug packet = yes
debug state = yes
debug tunnel = yes
auth file = /etc/xl2tpc/l2tp-secrets
access control = no
[lns default] ; Наше определение LNS по умолчанию
ip range = 192.168.3.100-192.168.3.254 ; * Это допустимо
local ip = 192.168.3.31 ; * Наш локальный IP для использования
name = mini31 ; * Сообщаем это как наше имя хоста
pppoptfile = /etc/ppp/options.xl2tpd
ppp debug = yes
require authentication = yes
require chap = yes
refuse pap = yes
Тем не менее, это всё равно не работает. В /var/log/syslog
видно, что IPsec подключен, но затем L2TP завершает работу с сообщением об ошибке:
...
xl2tpd[27668]: network_thread: select timeout with max retries: 5 for tunnel: 28160
xl2tpd[27668]: Maximum retries exceeded for tunnel 28160. Closing.
xl2tpd[27668]: Connection 4 closed to 192.168.1.11, port 1701 (Timeout)
...
Только что воспроизвёл на свежей установке Raspberry Pi, и оно заработало!
В итоге я обнаружил, что на Raspberry было много файлов в /etc/strongswan.d/charon
, но ни одного на Debian. Копирование этих файлов с Raspberry на Debian помогло всё запустить!
.
Ответ или решение
Настройка L2TP поверх IPSec на Debian 10: Решение проблем
Если вы планируете настроить L2TP поверх IPSec на вашем Debian 10 для защиты трафика в вашей сети и соединения старых устройств с более современной сетью, эта инструкция поможет вам достичь вашей цели. Мы обсудим основные аспекты, связанные с этой настройкой, и представим возможные решения.
Исходные условия
Вы запустили точку доступа WEP с интерфейсом wlx08beac0a6c1d
для старого оборудования, которое не поддерживает WPA. Основная сеть 192.168.1.0/24
, и интерфейс настраивается на 192.168.2.1
. Интерфейс ограничен одним MAC-адресом, и DHCP разрешен только на этой сети. Изначально вы установили следующие правила iptables:
iptables -A INPUT -i wlx08beac0a6c1d -m mac ! --mac-source 00:30:65:05:9F:4D -j DROP
iptables -A INPUT -i wlx08beac0a6c1d -p udp --dport 67:68 --sport 67:68 -j ACCEPT
iptables -A INPUT -i wlx08beac0a6c1d -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i wlx08beac0a6c1d -j DROP
Установка необходимых пакетов
Для настройки L2TP поверх IPSec на вашем сервере Debian 10 вам потребуются следующие пакеты: strongswan
для IPSec и xl2tpd
для L2TP. Установка осуществляется командами:
apt-get install strongswan
apt-get install xl2tpd
Настройка IPSec с помощью StrongSwan
Файл конфигурации /etc/ipsec.conf
должен быть настроен для работы в транспортном режиме, используя PSK аутентификацию. Пример конфигурации:
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
conn wep-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
leftid=192.168.2.31
leftcert=server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=192.168.2.0/24
rightdns=192.168.2.31
rightsendcert=never
eap_identity=%identity
Важным моментом является корректная настройка параметров "left" и "right", где "left" обычно указывает на ваш сервер, а "right" — на клиентов.
Настройка L2TP с помощью xl2tpd
Файл конфигурации /etc/xl2tpd/xl2tpd.conf
должен выглядеть следующим образом:
[global]
ipsec saref = yes
access control = no
[lns default]
ip range = 192.168.3.100-192.168.3.254
local ip = 192.168.3.1
refuse chap = yes
refuse pap = yes
require authentication = yes
pppoptfile = /etc/ppp/xl2tpd-options
length bit = yes
Файл /etc/ppp/xl2tpd-options
:
require-mschap-v2
ms-dns 192.168.3.1
И добавьте учетные данные в /etc/ppp/chap-secrets
.
Настройка iptables
Для того чтобы разрешить подключение по VPN, добавьте следующие правила iptables:
iptables -A INPUT -i wlx08beac0a6c1d -p udp --dport 500 -j ACCEPT
iptables -A INPUT -i wlx08beac0a6c1d -p udp --dport 4500 -j ACCEPT
iptables -A INPUT -i wlx08beac0a6c1d -p udp --dport 1701 -j ACCEPT
Поиск и устранение неисправностей
Если вы сталкиваетесь с ошибками при подключении L2TP, как например Maximum retries exceeded for tunnel
, убедитесь, что файлы конфигурации корректны и все необходимые файлы, такие как из директории /etc/strongswan.d/charon
, присутствуют. Как оказалось, в вашем случае копирование файлов из работающей системы помогло решить проблему.
Имейте в виду, что IPSec обеспечивает шифрование трафика, обеспечивая его защиту даже при использовании более слабой защиты на уровне канала, такой как WEP. Всегда проверяйте логи в /var/log/syslog
, чтобы получать более детальную информацию об ошибках.
При выполнении данных шагов, вы сможете настроить L2TP поверх IPSec на вашем Debian 10, обеспечив защищенное подключение для ваших старых устройств.