Настройка GRE-туннеля с МТС


GRE (англ. Generic Routing Encapsulation — общая инкапсуляция маршрутов) — протокол туннелирования сетевых пакетов, разработанный компанией Cisco Systems. Его основное назначение — инкапсуляция пакетов сетевого уровня сетевой модели OSI в IP пакеты.
В основном используется для организации виртуальных приватных сетей (VPN) поверх глобальных сетей (WAN).
Конкретно в моем случае необходимо было объединить локальную сеть предприятия с сетью МТС для привязки к своему серверу APN (т.е. точки доступа, выданной МТС вида *.spb), для того чтобы агенты с коммуникаторами имели доступ только к серверу предприятия, без возможности выхода в интернет.
 
93.153.xxx.218 - внешний ip-адрес сервера предприятия 
217.66.xxx.221 - внешний ip-адрес железки МТС
10.254.xxx.226 - внутренний ip-адрес сервера предприятия
10.254.xxx.225 - внутренний ip-адрес железки МТС
 
т.е. МТС выделили для туннеля подсеть 10.254.xxx.224/30
После настройки с их стороны туннеля и прибития к ip сервера предприятия APN, с моей стороны туннель настраивался следующим образом:
Открываем /etc/network/interfaces:
 
nano /etc/network/interfaces
 
И добавляем:
 
iface tun_mts inet static
        address 10.254.xxx.226
        netmask 255.255.255.252
broadcast 10.254.xxx.227
        up ifconfig tun_mts multicast
        pre-up modprobe ip_gre
        pre-up iptunnel add tun_mts mode gre local 93.153.xxx.218 remote 217.66.xxx.221 ttl 255
        pointopoint 10.254.xxx.225
        post-down iptunnel del tun_mts
 
т.е. указываем внутренний ip сервера, маску, широковещательный адрес, поднимаем интерфейс tun_mts, подгружаем в ядро модуль ip_gre, необходимый для создания туннеля, создаем туннель, указываем внутренний адрес железки МТС, даем команду удалять туннель после выключения сетевого интерфейса.
 
После внесения изменений перезапускаем сеть:
 
/etc/init.d/networking restart
 
Если используете iptables то добавляем правила:
 
iptables -A OUTPUT -p gre -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT 
 
Так как коммуникаторы агентов получают адреса от МТС из подсети 10.0.xxx.0/24, добавил на сервере предприятия маршрут: 
route add -net 10.0.xxx.0 netmask 255.255.255.0 tun_mts 
 
P.S.
Если бы с другой стороны тоже был сервер под линуксом, а не настроенная уже железка МТС, то отличия там в настройке были бы минимальны - меняются местами ip-адреса, т.е. в /etc/network/interfaces для создания gre-туннеля нужно было бы добавить:
 
 iface tun_mts inet static
        address 10.254.xxx.225
        netmask 255.255.255.252
broadcast 10.254.xxx.227
        up ifconfig tun_mts multicast
        pre-up modprobe ip_gre
        pre-up iptunnel add tun_mts mode gre local 217.66.xxx.221 remote 93.153.xxx.218 ttl 255
        pointopoint 10.254.xxx.226
        post-down iptunnel del tun_mts

May 15, 2012