Как настроить IP-IP-тунель между FreeBSD и Linux

Иногда бывают ситуации, когда мне необходимо соединить удаленные Unix-сервера тунелем для того, чтобы предоставить локальным пользователям определенные сервисы из удаленной сети или просто для того, чтобы получить доступ к удаленной внутренней сети. Я был очень удивлен, когда мой знакомый, молодой сисадмин, спросил меня о том, как поднять IP-IP тунель между разными операционными системами (в его случае: FreeBSD и Linux) и сказал, что не может найти информацию по этому вопросу. Как результат моих с ним изысканий появилось это HOWTO.

Давайте для начала посмотрим, что у нас есть и что нам надо получить в итоге.

Мы имеем 2 сервера:

  • Server1:
    • ОС: Linux
    • Сетевой интерфейс: eth0
    • IP: 100.100.100.100
  • Server2:
    • ОС: FreeBSD
    • Сетевой интерфейс: fxp0
    • IP: 200.200.200.200

Нам необходимо получить IPv4 over IPv4 тунель со следующими параметрами между указанными серверами:

  • Server1: 10.0.0.1 / 255.255.255.252
  • Server2: 10.0.0.2 / 255.255.255.252

Для настройки описанной конфигурации на Linux-сервере нам нужно выполнить следующие шаги:

  • Создадим ipip-тунельный интерфейс:
    # ip tunnel add tun0 mode ipip \\
    > remote 200.200.200.200 local 100.100.100.100 dev eth0
    
  • Установим IP-адреса:
    # ifconfig tun0 10.0.0.1 netmask 255.255.255.252 \\
    > pointopoint 10.0.0.2
    
  • Установим MTU и поднимем интерфейс:
    # ifconfig tun0 mtu 1500 up
    

Теперь на Linux-сервере мы имеем следующий интерфейс:

linux:~# ifconfig tun0
tun77     Link encap:IPIP Tunnel  HWaddr
          inet addr:10.0.0.1  P-t-P:10.0.0.2  Mask:255.255.255.252
          UP POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:6 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:504 (504.0 b)  TX bytes:624 (624.0 b)

Следующим шагом будет настройка конца тунеля на стороне FeeeBSD-сервера:

  • Создаем gif-интерфейс для тунеля:
    # # ifconfig gif0 create
    
  • Устанавливаем транспортные IP-адреса:
    # gifconfig gif0 inet 200.200.200.200 100.100.100.100
    
  • Устанавливаем IP-адреса тунеля:
    # ifconfig gif0 10.0.0.2 netmask 255.255.255.252 10.0.0.1
    
  • Устанавливаем MTU и поднимаем интерфейс:
    # ifconfig gif0 mtu 1500 up
    

В результате на стороне FreeBSD видим следующее:

# ifconfig gif0
gif0: flags=8051 mtu 1500
        tunnel inet 200.200.200.200 --> 100.100.100.100
        inet 10.0.0.2 --> 10.0.0.1 netmask 0xfffffffc

Для проверки результатов можно использовать утилиту ping на любой из сторон тунеля. Ны проверим со стороны Linux-сервера:

linux:~# ping -c 4 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.139 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.138 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.138 ms
64 bytes from 10.0.0.2: icmp_seq=4 ttl=64 time=0.136 ms

--- 172.17.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2997ms
rtt min/avg/max/mdev = 0.136/0.137/0.139/0.014 ms

Вот и все! Теперь у нас есть “прямое” соединение между серверами и мы можен настраивать маршрутизацию, используя этот линк.
Источник

Запись опубликована в рубрике *Unix,*Linux, *Сети. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91