Linux: Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-91-generic x86_64)
- Eth0 1.1.1.1/32 IP-ya derve
- ipip-ipsec0 192.168.0.1/30 dê tunela me be
Miktoik: CCR 1009, RouterOS 6.46.5
- Eth0 10.0.0.2/30 IP-ya navxweyî ji pêşkêşkerê. IP-ya NAT-a derveyî ya pêşkêşker dînamîk e.
- ipip-ipsec0 192.168.0.2/30 dê tunela me be
Em ê li ser makîneyek Linux-ê bi karanîna racoon tunelek IPsec biafirînin. Ez ê hûrguliyan nebêjim, yek baş heye
Pakêtên pêwîst saz bikin:
sudo install racoon ipsec-tools
Em racoon mîheng dikin, ew ê bi şert wekî serverek ipsec tevbigere. Ji ber ku mikrotik di moda sereke de nikare nasnameyek xerîdarek din veguhezîne, û navnîşana IP-ya derveyî ya ku ew bi Linux-ê ve girêdide dînamîk e, karanîna mifteyek pêş-hevkirî (destûrdana şîfreyê) dê nexebite, ji ber ku şîfre divê bi navnîşana IP-yê re were hevber kirin. mêvandarê girêdanê, an bi nasnameyê.
Em ê destûrnameyê bi karanîna mifteyên RSA bikar bînin.
Racoon daemon bişkojkên di formata RSA de bikar tîne, û mikrotik formata PEM bikar tîne. Ger hûn bi karanîna amûra plainrsa-gen a ku bi racoon ve tê, mifteyan biafirînin, wê hingê hûn ê nikaribin bi alîkariya wê mifteya giştî ya Mikrotika veguherînin forma PEM - ew tenê di yek alî de diguhere: PEM bo RSA. Ne openssl û ne jî ssh-keygen nikaribûn mifteya çêkirî ji hêla plainrsa-gen ve bixwînin, ji ber vê yekê veguhertin dê bi karanîna wan jî ne mumkun be.
Em ê bi karanîna openssl mifteyek PEM çêbikin û dûv re bi karanîna plainrsa-gen wê ji bo racoon veguherînin:
# Генерируем ключ
openssl genrsa -out server-name.pem 1024
# Извлекаем публичный ключ
openssl rsa -in server-name.pem -pubout > server-name.pub.pem
# Конвертируем
plainrsa-gen -i server-name.pem -f server-name.privet.key
plainrsa-gen -i server-name.pub.pem -f server-name.pub.key
Em ê mifteyên wergirtî têxin peldankê: /etc/racoon/certs/server. Ji bîr nekin ku xwediyê bikarhênerê ku di bin navê wî de racoon daemon tê destpêkirin (bi gelemperî root) li 600 destûran bicîh bikin.
Dema ku bi WinBox ve tê girêdan ez ê sazkirina mîkrotîkê diyar bikim.
Mifteya server-name.pub.pem li mikrotikê bar bikin: Pêşeka "Pel" - "Barkirin".
Beşa "IP" - "IP sec" - "Keys" vekin. Naha em bişkojan diafirînin - bişkoka "Klîftê biafirîne", dûv re mifteya giştî ya mikrotîka "Expor Pub" derdixe. Key", hûn dikarin wê ji beşa "Pel" dakêşin, li ser pelê rast-klîk bikin - "Daxistin".
Em mifteya giştî ya racoon, "Import", di navnîşa dakêşana qada "Navê pelê" de em li server-name.pub.pem-a ku me berê dakêşand digerin.
Pêdivî ye ku mifteya giştî ya mikrotik were veguheztin
plainrsa-gen -i mikrotik.pub.pem -f mikrotik.pub.key
û wê têxin peldanka /etc/racoon/certs, xwedan û mafan ji bîr nekin.
veavakirina racoon bi şîroveyan: /etc/racoon/racoon.conf
log info; # Уровень логирования, при отладке используем Debug или Debug2.
listen {
isakmp 1.1.1.1 [500]; # Адрес и порт, на котором будет слушать демон.
isakmp_natt 1.1.1.1 [4500]; # Адрес и порт, на котором будет слушать демон для клиентов за NAT.
strict_address; # Выполнять обязательную проверку привязки к указанным выше IP.
}
path certificate "/etc/racoon/certs"; # Путь до папки с сертификатами.
remote anonymous { # Секция, задающая параметры для работы демона с ISAKMP и согласования режимов с подключающимися хостами. Так как IP, с которого подключается Mikrotik, динамический, то используем anonymous, что разрешает подключение с любого адреса. Если IP у хостов статический, то можно указать конкретный адрес и порт.
passive on; # Задает "серверный" режим работы демона, он не будет пытаться инициировать подключения.
nat_traversal on; # Включает использование режима NAT-T для клиентов, если они за NAT.
exchange_mode main; # Режим обмена параметрами подключения, в данном случае ---согласование.
my_identifier address 1.1.1.1; # Идентифицируем наш linux хост по его ip адресу.
certificate_type plain_rsa "server/server-name.priv.key"; # Приватный ключ сервера.
peers_certfile plain_rsa "mikrotik.pub.key"; # Публичный ключ Mikrotik.
proposal_check claim; # Режим согласования параметров ISAKMP туннеля. Racoon будет использовать значения подключающегося хоста (инициатора) для срока действия сессии и длины ключа, если его срок действия сессии больше, или длина его ключа короче, чем у инициатора. Если срок действия сессии короче, чем у инициатора, racoon использует собственное значение срока действия сессии и будет отправлять сообщение RESPONDER-LIFETIME.
proposal { # Параметры ISAKMP туннеля.
encryption_algorithm aes; # Метод шифрования ISAKMP туннеля.
hash_algorithm sha512; # Алгоритм хеширования, используемый для ISAKMP туннеля.
authentication_method rsasig; # Режим аутентификации для ISAKMP туннеля - по RSA ключам.
dh_group modp2048; # Длина ключа для алгоритма Диффи-Хеллмана при согласовании ISAKMP туннеля.
lifetime time 86400 sec; Время действия сессии.
}
generate_policy on; # Автоматическое создание ESP туннелей из запроса, пришедшего от подключающегося хоста.
}
sainfo anonymous { # Параметры ESP туннелей, anonymous - указанные параметры будут использованы как параметры по умолчанию. Для разных клиентов, портов, протоколов можно задавать разные параметры, сопоставление происходит по ip адресам, портам, протоколам.
pfs_group modp2048; # Длина ключа для алгоритма Диффи-Хеллмана для ESP туннелей.
lifetime time 28800 sec; # Срок действия ESP туннелей.
encryption_algorithm aes; # Метод шифрования ESP туннелей.
authentication_algorithm hmac_sha512; # Алгоритм хеширования, используемый для аутентификации ESP туннелей.
compression_algorithm deflate; # Сжимать передаваемые данные, алгоритм сжатия предлагается только один.
}
mîkrotik config
Vegere beşa "IP" - "IPsec"
Tabloya "Profilan".
Parîsê
nirxê
Nav
Li gorî we (ji hêla xwerû)
Hash Algorithm
sha512
Algorîtmaya şîfrekirinê
aes-128
DH-Group
modp2048
Proposhal_check
maf
jiyana
1 00:00:00
NAT Traversal
rast (qeçikê kontrol bikin)
DPD
120
DPD Têkçûna herî zêde
5
Peers tab
Parîsê
nirxê
Nav
Li gorî we (li vir şûnda wekî MyPeer tê binav kirin)
Navnîşan
1.1.1.1 (makîneyên IP Linux)
Navnîşana Herêmî
10.0.0.2 (IP WAN interface mikrotik)
Profîla Te
destçûnî
Mode Exchange
dest
Nejîr
şaş
INITIAL_CONTACT bişîne
rast
Tabloya pêşniyarê
Parîsê
nirxê
Nav
Li gorî we (li vir şûnda wekî MyPeerProposal tê binav kirin)
Auth. Algorîtmayan
sha512
Encr. Algorîtmayan
aes-128-cbc
jiyana
08:00:00
Koma PFS
modp2048
Tabloya "Nasname".
Parîsê
nirxê
hevrê
MyPeer
Atuh. Awa
rsa key
Qûfle
mikrotik.privet.key
Mifteya Dûr
server-name.pub.pem
Siyaseta Şablon Koma
destçûnî
Notrack Chain
vala
Tîpa Nasnameya Min
auto
Type ID dûr
auto
Match By
id dûr
Veavakirina Mode
vala
Polîtîka çêbikin
na
Tab "Siyaset - Giştî"
Parîsê
nirxê
hevrê
MyPeer
Tûnêl
rast
Src. Navnîşan
192.168.0.0/30
Dest. Navnîşan
192.168.0.0/30
Protokola
255 (hemû)
Şablon
şaş
Tab "Siyaset - Çalakî"
Parîsê
nirxê
Çalakî
encrypt
Serrast
xwestin
Protokolên IPsec
esp
Pêşnîyar
MyPeerProposal
Bi îhtîmaleke mezin, mîna min, we snat/masquerade li ser navbeyna xweya WAN-ê hatî mîheng kirin; pêdivî ye ku ev rêgez were sererast kirin da ku pakêtên ipsec ên derketinê biçin tunela me:
Herin beşa "IP" - "Firewall".
Tabloya "NAT", qaîdeya meya snat/masquerade veke.
Tab pêşketî
Parîsê
nirxê
Siyaseta IPsec
der: tune
Ji nû ve destpêkirina cinê racoon
sudo systemctl restart racoon
Ger racoon bi ji nû ve destpêkirinê dest pê neke, wê hingê di mîhengê de xeletiyek heye; di syslogê de, racoon agahdariya li ser jimareya rêzê ya ku tê de xeletî hatiye dîtin nîşan dide.
Dema ku OS-ê dest pê dike, berî ku navberên torê werin hilanîn, racoon daemon dest pê dike, û me vebijarka strict_address di beşa guhdarîkirinê de destnîşan kir; hûn hewce ne ku yekîneya racoon li pelê systemd zêde bikin.
/lib/systemd/system/racoon.service, di beşa [Unit] de, rêza After=network.target.
Naha divê tunelên me yên ipsec rabin, li derketinê binêrin:
sudo ip xfrm policy
src 192.168.255.0/30 dst 192.168.255.0/30
dir out priority 2147483648
tmpl src 1.1.1.1 dst "IP NAT через который подключается mikrotik"
proto esp reqid 0 mode tunnel
src 192.168.255.0/30 dst 192.168.255.0/30
dir fwd priority 2147483648
tmpl src "IP NAT через который подключается mikrotik" dst 1.1.1.1
proto esp reqid 0 mode tunnel
src 192.168.255.0/30 dst 192.168.255.0/30
dir in priority 2147483648
tmpl src "IP NAT через который подключается mikrotik" dst 1.1.1.1
proto esp reqid 0 mode tunnel
Ger tunel nebin, li syslog, an journalctl -u racoon binêrin.
Naha hûn hewce ne ku navgînên L3 mîheng bikin da ku seyrûsefer were rêve kirin. Vebijarkên cihêreng hene, em ê IPIP bikar bînin, ji ber ku mikrotik wê piştgirî dike, ez ê vti bikar bînim, lê, mixabin, ew hîn di mikrotikê de nehatiye bicîh kirin. Ew ji IPIP-ê cûda dibe ku ew dikare di heman demê de multicast vehewîne û fwmarkan deyne ser pakêtan, ku ji hêla wan ve ew dikarin di iptables û iproute2 (rêveberiya li ser bingeha siyasetê) de werin fîlter kirin. Heke hûn hewceyê fonksiyona herî zêde hewce ne, wê hingê, mînakî, GRE. Lê ji bîr nekin ku em ji bo fonksiyonek zêde bi serê serekî mezin didin.
Hûn dikarin wergera serpêhatiyek baş a navberên tunelê bibînin
Li ser Linux:
# Создаем интерфейс
sudo ip tunnel add ipip-ipsec0 local 192.168.255.1 remote 192.168.255.2 mode ipip
# Активируем
sudo ip link set ipip-ipsec0 up
# Назначаем адрес
sudo ip addr add 192.168.255.1/30 dev ipip-ipsec0
Naha hûn dikarin rêgezên ji bo torên li pişt mikrotik zêde bikin
sudo ip route add A.B.C.D/Prefix via 192.168.255.2
Ji bo ku navbeynkar û rêgezên me piştî ji nû ve destpêkirinê werin rakirin, pêdivî ye ku em navberê di nav /etc/torê/ navgînan de diyar bikin û rêçikan li wir li paş-up zêde bikin, an jî her tiştî di yek pelê de binivîsin, mînakî, /etc/. ipip-ipsec0.conf û wê bi paş-vekêşanê bikişîne, xwediyê pelê, mafan ji bîr nekin û wê bikin îcrakar.
Li jêr pelek mînakek heye
#!/bin/bash
ip tunnel add ipip-ipsec0 local 192.168.255.1 remote 192.168.255.2 mode ipip
ip link set ipip-ipsec0 up
ip addr add 192.168.255.1/30 dev ipip-ipsec0
ip route add A.B.C.D/Prefix via 192.168.255.2
Li ser Mikrotik:
Beşa "Navpeyvîn", navgînek nû "Tunnel IP" lê zêde bike:
Tab "Tunnel IP" - "Giştî"
Parîsê
nirxê
Nav
Li gorî we (li vir şûnda wekî IPIP-IPsec0 tê binav kirin)
Mtu
1480 (heke ne diyar be, mikrotik dest bi qutkirina mtu li 68 dike)
Navnîşana Herêmî
192.168.0.2
Navnîşana Dûr
192.168.0.1
IPsec Secret
Zeviyê neçalak bike (ku nebe dê Peerek nû were afirandin)
keepalive
Zeviyê neçalak bikin (wekî din dê navbeynkar bi domdarî qut bibe, ji ber ku mikrotika ji bo van pakêtan formata xwe heye û bi Linux re naxebite)
DSCP
mîratgirtin
Parçe nekin
na
TCP MSS bişkînin
rast
Destûrê bide Fast Path
rast
Beşa "IP" - "Navnîşan", navnîşan lê zêde bike:
Parîsê
nirxê
Navnîşan
192.168.0.2/30
virtual
IPIP-IPsec0
Naha hûn dikarin li pişt makîneyek Linux rê li torê zêde bikin; dema ku rêyek lê zêde bikin, derî dê navbeynkariya meya IPIP-IPsec0 be.
PS
Ji ber ku servera meya Linux transîtîv e, maqûl e ku meriv parametreya Clamp TCP MSS-ê ji bo navgînên ipip-ê li ser wê saz bike:
pelek /etc/iptables.conf bi naveroka jêrîn biafirînin:
*mangle
-A POSTROUTING -o ipip+ -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
COMMIT
û di /etc/torê/navberan de
piştî-up iptables-restore < /etc/iptables.conf
Min nginx li ser torê li pişt mikrotik (ip 10.10.10.1) dimeşîne, wê ji Înternetê bigihîne, lê zêde bike /etc/iptables.conf:
*nat
-A PREROUTING -d 1.1.1.1/32 -p tcp -m multiport --dports 80,443 -j DNAT --to-destination 10.10.10.1
#На mikrotik, в таблице mangle, надо добавить правило route с назначением 192.168.0.1 для пакетов с адресом источника 10.10.10.1 и портов 80, 443.
# Так же на linux работает OpenVPN сервер 172.16.0.1/24, для клиентов которые используют подключение к нему в качестве шлюза даем доступ в интернет
-A POSTROUTING -s 172.16.0.0/24 -o eth0 -j SNAT --to-source 1.1.1.1
COMMIT
Ji bîr nekin ku heke hûn fîlterên pakêtê çalak in, destûrên guncan li iptables zêde bikin.
Xweşîn bimînin!
Source: www.habr.com