Уже писал про свою домашнюю сеть два раза тут и тут. В последнее время выпадают относительно свободные вечера и я наконец-то решил начать приводить свою домашнюю сеть в порядок. Сегодня бытро расскажу как поднять GRE+IPSec между Mikrotik и Ubuntu. Также расскажу про своё первое знакомство с таким прекрасным инструментом как Quagga.
GRE
На самом деле, тема не нова, но я просто оставлю это здесь, чтобы потом не бегать по Интернету в поисках статей и конфигов.
Начнем с Mikrotik'a. Обычно я настраиваю все через CLI, как приверженец "старой школы", но реально иногда проще накликать все в Winbox и не заморачиваться. Наверное, это "взрослость"...
Короче, заходим в интерфейсы, далее вкладка GRE и добавляем новый интерфейс. Указываем наш локальный публичный IP и IP удаленной стороны. Чуть уменьшаем MTU и убираем галку Allow Fast Path, с IPSec все равно не заработает.
Идем в Ubuntu. У меня это 16.04, думаю, поднимется в любой современной версии. В /etc/network/interfaces пишем.
auto tun1
iface tun1 inet static
address 10.0.0.6
netmask 255.255.255.252
pre-up iptunnel add tun1 mode gre local 80.XXX.XXX.XXX remote 109.XXX.XXX.XXX ttl 255
up ifconfig tun1 multicast
pointopoint 10.0.0.5
mtu 1435
post-down iptunnel del tun1
iface tun1 inet static
address 10.0.0.6
netmask 255.255.255.252
pre-up iptunnel add tun1 mode gre local 80.XXX.XXX.XXX remote 109.XXX.XXX.XXX ttl 255
up ifconfig tun1 multicast
pointopoint 10.0.0.5
mtu 1435
post-down iptunnel del tun1
Чуть занижаем MTU и здесь же указываем IP адреса внутри туннеля. В нашем случае, это 10.0.0.6 на Ubuntu и 10.0.0.5 на Mikrotik.
Возвращаемся на Mikrotik и настраиваем там нужный адрес, раз сначала забыли.
После таких непростых манипуляций все должно поднятся, если бы с обоих сторон не было файерволов.
На Mikrotik'е это пара правил
add action=accept chain=input comment="Allow GRE from VPS" protocol=gre src-address=80.XXX.XXX.XXX
add action=accept chain=input comment="Allow any from VPS" in-interface=gre-tunnel1 src-address=10.0.0.4/30
add action=accept chain=input comment="Allow any from VPS" in-interface=gre-tunnel1 src-address=10.0.0.4/30
На Ubuntu я традиционно использую многим ненавистный Shorewall. Если кратко, то он позволяет настраивать iptables не зная iptables... Мой случай...
Описываем наш будущий туннель в /etc/shorewall/tunnels. Указываем адрес нашего Mikrotik'a и определяем туннель к зоне net, что смотрит в публичную сеть. PPTP сервер уже давно настроен.
###############################################################################
#TYPE ZONE GATEWAY GATEWAY_ZONE
pptpserver net 0.0.0.0/0
#TYPE ZONE GATEWAY GATEWAY_ZONE
pptpserver net 0.0.0.0/0
ipip net 109.XXX.XXX.XXX
Добавляем туннельный интерфейс в новую зону rem в /etc/shorewall/interfaces. ens3 и ppp+ уже были настроены.
###############################################################################
#ZONE INTERFACE OPTIONS
net ens3 dhcp,tcpflags,logmartians,nosmurfs,sourceroute=0
vpn ppp+
rem tun1
#ZONE INTERFACE OPTIONS
net ens3 dhcp,tcpflags,logmartians,nosmurfs,sourceroute=0
vpn ppp+
rem tun1
Теперь определяем политику по умолчанию для зоны rem в /etc/shorewall/policies. Пока разрешим ей обращаться только к файерволу.
###############################################################################
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
$FW all ACCEPT
vpn all ACCEPT
rem $FW ACCEPT
all all DROP
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
$FW all ACCEPT
vpn all ACCEPT
rem $FW ACCEPT
all all DROP
Ну и все, shorewall check затем shorewall restart. После этого туннель должен поднятся и мы сможем попинговать 10.0.0.5 с Ubuntu.
IPSec
На Mikrotik'e уже был настроен L2TP/IPSec, поэтому я буду переиспользовать дефолтный Proposal с не самыми крутыми параметрами. Идем в IP, далее IPSEC.
Теперь нужно поставить strongswan в Ubuntu и настроить его.
aptitude install strongswan
Далее пишем наш конфиг в /etc/ipsec.conf. Не самый классный конфиг, но работает. Основные моменты это адреса, esp и ike параметры, тип и протокол 47.
сharondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2"
conn %default
conn mikrotik
conn %default
conn mikrotik
auto=start
authby=secret
compress=no
closeaction=clear
dpddelay=30s
dpdtimeout=150s
dpdaction=restart
esp=aes128-sha1-modp1024
forceencaps=no
ike=aes128-sha1-modp1024
ikelifetime=86400s
keyingtries=%forever
lifetime=1800s
dpddelay=30s
dpdtimeout=150s
dpdaction=restart
esp=aes128-sha1-modp1024
forceencaps=no
ike=aes128-sha1-modp1024
ikelifetime=86400s
keyingtries=%forever
lifetime=1800s
keyexchange=ikev1
type=transport
type=transport
left=80.XXX.XXX.XXX
right=109.XXX.XXX.XXX
right=109.XXX.XXX.XXX
leftprotoport=47
rightprotoport=47
rightprotoport=47
Далее в /etc/ipsec.secrets пишем сам ключ
80.XXX.XXX.XXX 109.XXX.XXX.XXX : PSK "SecretNinja"
Последний указываем на GRE интерфейсе Mikrotik.
После чего интерфейсы поднимаются и трафик внутри них начинает бегать уже прикритый IPSec. В верификации нам поможет ipsec status на Ubuntu.
root@b842:~# ipsec status
Security Associations (1 up, 0 connecting):
mikrotik[2]: ESTABLISHED 78 minutes ago, 80.xxx.xxx.xxx[80.xxx.xxx.xxx]...109.xxx.xxx.xxx[109.xxx.xxx.xxx]
mikrotik{5}: REKEYED, TRANSPORT, reqid 1, expires in 13 minutes
mikrotik{5}: 80.xxx.xxx.xxx/32[gre] === 109.xxx.xxx.xxx/32[gre]
mikrotik{6}: INSTALLED, TRANSPORT, reqid 1, ESP SPIs: c64cacf4_i 029c733c_o
mikrotik{6}: 80.xxx.xxx.xxx/32[gre] === 109.xxx.xxx.xxx/32[gre]
Security Associations (1 up, 0 connecting):
mikrotik[2]: ESTABLISHED 78 minutes ago, 80.xxx.xxx.xxx[80.xxx.xxx.xxx]...109.xxx.xxx.xxx[109.xxx.xxx.xxx]
mikrotik{5}: REKEYED, TRANSPORT, reqid 1, expires in 13 minutes
mikrotik{5}: 80.xxx.xxx.xxx/32[gre] === 109.xxx.xxx.xxx/32[gre]
mikrotik{6}: INSTALLED, TRANSPORT, reqid 1, ESP SPIs: c64cacf4_i 029c733c_o
mikrotik{6}: 80.xxx.xxx.xxx/32[gre] === 109.xxx.xxx.xxx/32[gre]
На микротике должа появится соответсвующая политика в статусе established.
Все пингуется, все хорошо, но не руками же прописывать маршруты в конце-то концов...
Quagga
Честно говоря, я впервые с ней столкнулся и она прям классная! Ставим!
aptitude install quagga
Далее включаем протоколы в /etc/quagga/daemons. Пока ограничимся OSPF, но в будущем добавлю и OSPFv3, т.к. внутри моей сети он уже поднят.
zebra=yes
bgpd=no
ospfd=yes
ospf6d=no
ripd=no
ripngd=no
isisd=no
babeld=no
bgpd=no
ospfd=yes
ospf6d=no
ripd=no
ripngd=no
isisd=no
babeld=no
Далее копируем конфиги из /usr/share/doc/quagga/examples/ в /etc/quagga/ и рестартуем его /etc/init.d/quagga restart.
А теперь самая прикольная часть... Я офигел, чесслово....
Да ну!.. Бежим на микротик и добавляем там gre интерфейс в OSPF.
Снова возвращаемся на Quagga.... ну же, быстрей!
Вот это да. Я в своей жизни что только не настраивал, но quagga меня почему-то поразила. Возмжно, я просто ожидал копания в конфигах и прочего такого "линуксоидного"... а тут все так привычно и по-домашнему....
Все, теперь наша Ubuntu машина подключена к домашней сети через GRE и все это дело зашифровано с помощью старого доброго IPSec. Ну и, конечно же, теперь не придется прописывать маршруты руками. Тем более, я не помню как это делается в Ubuntu. Проше было "квагу" поставить. )
Комментариев нет:
Отправить комментарий