Просмотрев много статей по созданию туннелей я к своему удивлению не нашел ничего
о том как быстро и без проблем создать туннель между двумя машинами (сетями) через интернет. И вот решил написать.
Буду предельно краток...
И так, ДАНО:
1. Сеть 192.168.1.0/24 (255.255.255.0) В которой есть машина подключенная
к интернет. Со стороны локальной сети машина имеет IP: 192.168.1.1 (на eth1), а со стороны инета имеет IP: 195.64.21.123 (на eth0) Назовем эту машину ALPHA.
2. Сеть 192.168.2.0/24 (255.255.255.0) В которой есть машина подключенная
к интернет. Со стороны локальной сети машина имеет IP: 192.168.2.1 (на eth1), а со стороны интернета имеет IP: 62.5.195.124 (на eth0) Назовем эту машину BETA.
Цель: Надо организовать туннель между машинами ALPHA и BETA, чтобы компьютеры
одной сети имели доступ к компьютерам в другой сети.
Решение:
Пишется скрипт следующего содержания и запускается на машине ALPHA:
#!/bin/sh
# insmod ip_gre
tnl=tnl0
remote=62.5.195.124
local=195.64.21.123
ip=192.168.1.1
range=192.168.2.0/24
ip tunnel del $tnl
ip tunnel add $tnl mode gre local $local remote $remote ttl 255
ip addr add $ip dev $tnl
ip link set $tnl up
ip route add $range dev $tnl
-----------------------------------------------------------------------
А для машины BETA пишется другой аналогичный скрипт и запускается:
#!/bin/sh
# insmod ip_gre
tnl=tnl0
remote=195.64.21.123
local=62.5.195.124
ip=192.168.2.1
range=192.168.1.0/24
ip tunnel del $tnl
ip tunnel add $tnl mode gre local $local remote $remote ttl 255
ip addr add $ip dev $tnl
ip link set $tnl up
ip route add $range dev $tnl
-------------------------------------------------------------------------
И ВСЕ. Тепрь две сетки связаны туннелем.
Теперь примечания:
1.) Ядро должно быть собрано с включенными опциями поддержки тунелей
(GRE в частности). А так же с включенной опцией поддержки Advanced Routing (у меня вообще все фичи того что касается IP сетей ВКЛЮЧЕНЫ БЫЛИ)
2.) Строка "insmod ip_gre" у меня закоментирована т.к. ядро собрано без модулей
(все в ядре). Если у вас используются модули для тунеля, то просто
раскоментируйте строку в скриптах.
Это все. Если что пишите на
[email protected] PS: Испытания проводились на ядрах Linux 2.4.19 2.4.20
PPS: В данном виде туннеля шифрование не поддерживается (необходимо создание IPSEC туннеля)