====== Настройка туннеля между двумя сетями на FreeBSD. ====== {{:freebsd:tunnel:gif-net.png?300 |}} **Дано:** Две сети которые необходимо объеденить через туннель. Оддна из сетей подключенна к Интернету через сервер с FreeBSD, вторая сеть через ADSL модем. За NATом модема стоит сервер с FreeBSD. Тунель организован между серверами.\\ Для работы туннеля в настройках файрвола модема необходимо разрешить протокол 47 iptables -t nat -A PREROUTING -p 47 -s 0.0.0.0 -j DNAT --to-destination 10.xxx.xxx.1 или в секции настроек виртуальных серверов добавить правило для сервера PPTP За маршрутизацию пакетов из одной подсети в другую у сервера FreeBSD отвечает параметр **net.inet.ip.forwarding**, посмотр какое значение он имеет: sysctl net.inet.ip.forwarding net.inet.ip.forwarding: 0 * **0** - сервер FreeBSD не будет выполнять маршрутизацию. * **1** - сервер FreeBSD будет выполнять маршрутизацию. Включение функции маршрутизации sysctl net.inet.ip.forwarding=1 net.inet.ip.forwarding: 0 -> 1 Чтобы после перезагрузки это значение всегда было 1-цой. Это можно сделать 2-мя способами: * в файл /etc/rc.conf добавить строчку: **gateway_enable="YES"** * в файл /etc/sysctl.conf добавить строчку: **net.inet.ip.forwarding=1** Cоздание интерфейса gif0 на хосте А: ifconfig gif0 create ifconfig gif0 192.168.10.253 192.168.10.254 netmask 255.255.255.255 ifconfig gif0 tunnel 10.xxx.xxx.1 B.B.B.B Это не опечатка ifconfig gif0 tunnel **10.xxx.xxx.1** B.B.B.B Хост Б: ifconfig gif0 create ifconfig gif0 192.168.10.254 192.168.10.253 netmask 255.255.255.255 ifconfig gif0 tunnel B.B.B.B A.A.A.A * Первой строкой, вышеприведенных команд, мы создаётся интерфейс gif0. * Второй, назначается интерфейсу IP адрес, для текущего хоста и для другого конца туннеля. * Третья строка, устанавливается туннель между хостами.интерфейсов. Когда интерфейсы туннеля подняты, можно проверить соединение пропинговав с хоста А, командой ping, IP адрес туннеля, хоста Б: ping 192.168.10.254 Для доступа из сети 10.xxx.xxx.0/24 в сеть 10.yyy.yyy.0/24, необходимо добавить статический маршрут на каждом шлюзе.\\ Хост А: route add -net 10.yyy.yyy.0/24 192.168.10.254 Хост Б. route add -net 10.xxx.xxx.0/24 192.168.10.253 Что-бы после перезагрузки туннель настраивался автоматически, нужно дописать в **/etc/rc.conf** следующие строчки: Хост А. cloned_interfaces="gif0" ifconfig_gif0="inet 192.168.10.253 192.168.10.254 netmask 255.255.255.255 tunnel 10.xxx.xxx.1 B.B.B.B" static_routes="Host-B" route_Host-B="-net 10.yyy.yyy.0/24 192.168.10.254" Хост Б. cloned_interfaces="gif0" ifconfig_gif0="inet 192.168.10.254 192.168.10.253 netmask 255.255.255.255 tunnel B.B.B.B A.A.A.A" static_routes="Host-A" route_Host-A="-net 10.xxx.xxx.0/24 192.168.10.253" Для создания gif интерфейсов можно выделить адрес из локальных сетей 10.xxx.xxx.0/24 и 10.yyy.yyy.0/24 соответственно. Офис А. Шлюзом в Интернет является ADSL модем,а шлюзом до офиса Б - сервер FreeBSD.\\ Офис Б. Шлюзом в Интернет и шлюзом до офиса А - сервер FreeBSD. СОЗДАННЫЙ ТУННЕЛЬ НЕ ЗАЩИЩЁН ШИФРОВАНИЕМ! Ссылки:\\ http://www.lissyara.su/archive/ipsec\\ http://vds-admin.ru/networks/gre-generic-routing-encapsulation-sozdanie-tunnelei\\ https://www.opennet.ru/base/sec/ipsec_fr.txt.html\\ https://www.freebsd.org/doc/ru/books/handbook/ipsec.html\\ http://unixadm.info/content/%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-ipsec-%D1%82%D1%83%D0%BD%D0%BD%D0%B5%D0%BB%D0%B5%D0%B9-freebsdipsecracoonipsec-tools-cisco-freebsdipsecracoonipsec-tools\\ https://www.opennet.ru/openforum/vsluhforumID1/95477.html\\ http://kovyrin.net/2006/03/17/how-to-create-ip-ip-tunnel-between-freebsd-and-linux\\ http://subnets.ru/blog/?p=280