Поиск по этому блогу

16.08.2010

Создание IP-IP туннеля между двумя серверами FreeBSD

Задача:
Создать IP-IP туннель используя стандартные средствами FreeBSD.

Дано:
Два сервера под управлением FreeBSD 6.4
Сервер А:
интерфейс fxp0, ip 10.0.0.1
Сервер Б:
интерфейс vr0, ip 10.0.0.2

Решение:
Сервер A:
добавляем в rc.conf
gif_interfaces="gif0" # Активируем “туннельный” интерфейс
gifconfig_gif0="10.0.0.1 10.0.0.2" # Задаем параметры создаваемого туннеля (локальный и удалнные ip адреса между которыми будет строиться ip-ip туннель
ifconfig_gif0="inet 172.16.1.1 172.16.1.2 netmask 255.255.255.252 mtu 1500" # Задаем ip адреса создаваемого туннеля (ip на стороне сервера А и на стороне сервера Б, а так же значение mtu, т.к. по умолчанию интерфейс создается с mtu 1280, что препятствует прохождению большинства пакетов)

Сервер Б:
добавляем в rc.conf
gif_interfaces="gif0" # Активируем “туннельный” интерфейс
gifconfig_gif0="10.0.0.2 10.0.0.1" # Задаем параметры создаваемого туннеля (локальный и удалнные ip адреса между которыми будет строиться ip-ip туннель
ifconfig_gif0="inet 172.16.1.2 172.16.1.1 netmask 255.255.255.252 mtu 1500" # Задаем ip адреса создаваемого туннеля (ip на стороне сервера Б и на стороне сервера A)

Перезагружаем оба сервера, либо /etc/rc.d/netif restart на обоих серверах.

Результат:
server_a# ifconfig
fxp0: flags=8843 mtu 1500
options=3b
inet 10.0.0.1 netmask 0xfffffffc broadcast 10.0.0.255
ether 00:15:77:26:88:96
media: Ethernet autoselect (100baseTX )
status: active
gif0: flags=8051 mtu 1500
tunnel inet 10.0.0.1 --> 10.0.0.2
inet 172.16.1.1 --> 172.16.1.2 netmask 0xfffffffc

server_b# ifconfig
vr0: flags=8843 mtu 1500
options=3b
inet 10.0.0.2 netmask 0xfffffffc broadcast 10.0.0.255
ether 00:1e:0b:6f:29:b4
media: Ethernet autoselect (100baseTX )
status: active
gif0: flags=8051 mtu 1500
tunnel inet 10.0.0.2 --> 10.0.0.1
inet 172.16.1.2 --> 172.16.1.1 netmask 0xfffffffc