- Gre tunnel linux centos
- How to setup GRE tunnel in CentOS 7 linux
- 1- Prerequisites
- 2- Setup tunnel
- 3- Configure firewall
- 4- Test connectivity
- 5- Remove tunnel
- 2 thoughts on “ How to setup GRE tunnel in CentOS 7 linux ”
- Настройка VPN сервера (GRE/IPSec StrongSwan, OSPF Quagga)
- Настройка файрвола и роутинга
- Настройка StrongSwan
- Старый способ, использующий демон strongswan, уже достаточно хорошо описан:
- Новый способ, использующий демон charon, появившийся в версии 5.2.0:
- Одинаковые настройки аутентификации и шифрования для всех. Сделаем разными только PSK:
- Индивидуальные настройки аутентификации и шифрования:
- Поднятие туннелей с маршрутизаторами Cisco
- Настраиваем GRE-туннели в CentOS
- Создаем туннель на Cisco 2951
- Создаем туннель на Cisco CSR1000V
- Настройка динамической маршрутизации на Quagga
- Настройка OSPF на CentOS
- Настройка OSPF на Cisco 2951
- Настройка OSPF на Cisco CSR1000V
- Что осталось нерассмотренным
- Gre tunnel linux centos
- Что такое GRE туннель?
- Как происходит инкапсуляции заголовка GRE в IP-пакет?
- Настройка GRE туннелей в Debian GNU/Linux
- How to Establish a GRE Tunnel Between Two CentOS 7 Servers
- Introduction
- What is GRE? What are some advantages?
- How does it work?
- Prerequisites and Configuring Both Endpoints
- What you’ll need to set a GRE tunnel up
- Configuring Endpoint A
- Configuring Endpoint B
- Testing the tunnels
- Conclusion
- Организация GRE-туннеля в RHEL/CentOS
Gre tunnel linux centos
Linux » Networking » How to setup GRE tunnel in CentOS 7 linux
How to setup GRE tunnel in CentOS 7 linux
In today article, we want to show how to setup GRE tunnel in CentOS 7 linux.
as you may know, GRE stands for generic routing protocol, created by Cisco and is a tunneling protocol that can encapsulate a wide variety of network layer protocols inside virtual point-to-point links or point-to-multipoint links over an Internet Protocol network.
Here is our environment:
OS: Centos 7 linux on VMWare
Firewall: CSF
SElinux: enforcing
Endpoint A:
local/internal IP: 10.10.10.1
public IP: 192.168.2.128
Endpoint B:
local/internal IP: 10.10.10.2
public IP: 192.168.2.129
1- Prerequisites
to set up gre tunnel and allow handle it by linux, related module needs to be loaded. so load it by running:
then check if it’s loaded correctly:
to automatically load this module on startup, create a file named tun.conf under /etc/modules-load.d and put the following line in it:
2- Setup tunnel
for setting up tunnel, we must create an interface on each endpoint. so run this commands on endpoint A:
and put these lines in it:
then create an interface on endpoint B:
and also put these lines in it:
now bring up two tunnel interfaces by running this command on both endpoint A and B:
3- Configure firewall
here we use csf as our firewall. so to allow gre traffic pass through these endpoints, we just need to whitelist both endpoints IPs.
so add public IP of endpoint B to endpoint A and vice versa. on endpoint A:
also we should allow gre traffic. run this commnad:
then put these lines in it:
then reload csf:
and on endpoint B:
again we should allow gre traffic. run this commnad:
then put these lines in it:
then reload csf:
if you use firewalld as your centos 7 firewall, run these command to allow gre traffic:
on endpoint A:
and on endpoint B:
4- Test connectivity
now it’s time to test connectivity. on endpoint A:
and on endpoint B:
if ping responses successfully, this means that our gre tunnel is working properly. if not, first disable firewall and test again and if problem persists, you should investigate your routing table to see where packets destined for our tunnel goes.
5- Remove tunnel
at any time, if you decided to remove tunnel, just bring down tunnel interface and remove related file on both endpoints:
2 thoughts on “ How to setup GRE tunnel in CentOS 7 linux ”
Dear Hector,
How can I share endpoint A internet to endpoint B on this tunnel?
Thank you in advance
dear abdali, what’s your goal totally and does your both servers have internet access?
Источник
Настройка VPN сервера (GRE/IPSec StrongSwan, OSPF Quagga)
Кто бы мог подумать, что развернуть часть серверов компании в Amazon было плохой идеей.
В итоге поставленная задача — сделать дополнительный VPN-туннель между Amazon и инфраструктурой в РФ.
Кроме простого how-to опишу несколько особенностей в настройке, с которыми можно столкнуться.
Настройка файрвола и роутинга
Покупаем у пока еще не заблокированного хостера VPS за сумму, эквивалентную 10 000 монгольских тугриков в месяц, ставим CentOS 7, включаем пересылку пакетов
Добавляем в файрволе правила для приема пакетов IPsec
Настройка StrongSwan
Устанавливаем демон IPsec StrongSwan:
Делаем предварительные настройки в /etc/strongswan.d/charon.conf:
Настройка Strongswan может быть проведена двумя способами.
Старый способ, использующий демон strongswan, уже достаточно хорошо описан:
Файл с паролями и сертификатами:
Новый способ, использующий демон charon, появившийся в версии 5.2.0:
Вся конфигурация хранится в /etc/strongswan/swanctl/swanctl.conf
Рассмотрим два варианта настройки демона charon:
Одинаковые настройки аутентификации и шифрования для всех. Сделаем разными только PSK:
Индивидуальные настройки аутентификации и шифрования:
Поднятие туннелей с маршрутизаторами Cisco
Настраиваем GRE-туннели в CentOS
В настройке GRE-интерфейсов есть пара особенностей.
Первая — необходимо уменьшить MTU для корректного прохождения пакетов.
Второе — указать TTL, это понадобится в будущем, когда будем настраивать OSPF. Если этого не сделать, пакеты OSPF будут приходить на удаленный хост с TTL, равным единице (из-за GRE over IPsec), оставаясь без ответа. Соответственно устройства будут висеть в состоянии INIT/DROTHER, связности мы не дождемся. При этом корректные ответы ICMP могут сбить с толку.
Создаем туннель на Cisco 2951
Создаем туннель на Cisco CSR1000V
Проверяем, что туннели поднялись, шифрование работает.
Настройка динамической маршрутизации на Quagga
Если вы используете динамическую маршрутизацию на основе OSPF, то следующим шагом логично было бы поднять демон OSPF на CentOS, настроив новые туннели в качестве резервного маршрута.
Настройка OSPF на CentOS
В качестве демона установим Quagga:
Создаем конфигурационный файл демона /etc/quagga/zebra.conf
Вес пути можно регулировать параметрами cost либо bandwidth, устанавливая их на нужных интерфейсах.
Устанавливаем права и включаем службу
Создаем конфигурационный файл демона /etc/quagga/ospfd.conf
Устанавливаем права и включаем службу
Далее можем запустить терминал vtysh и работать с Quagga в циско-подобном интерфейсе, например:
Настройка OSPF на Cisco 2951
Настройка OSPF на Cisco CSR1000V
Проверяем видимость соседей и пришедшие маршруты на CentOS:
Что осталось нерассмотренным
Я описал самый простой вариант. Конечно же, вы настроите обмен ключами, используя IKE v2, авторизацию по сертификату, добавите в файрвол дополнительную фильтрацию по адресам, сделаете OSPF с авторизацией и, при большом количестве маршрутизаторов, с разделением на area, измените значения hello-interval и dead-interval на интерфейсах.
Буду рад советам в комментариях, а информации об опечатках — в личку. Спасибо за внимание.
Источник
Gre tunnel linux centos
GRE (Generic Routing Encapsulation — общая инкапсуляция маршрутов) — протокол туннелирования сетевых пакетов, разработанный компанией CISCO Systems. Его основное назначение — инкапсуляция пакетов сетевого уровня сетевой модели OSI в IP пакеты. Номер протокола в IP — 47.
Что такое GRE туннель?
GRE туннель представляет собой соединение точка — точка, его можно считать одной из разновидностей VPN туннеля, без шифрования. Основное достоинство GRE это возможность передавать широковещательный трафик, что позволяет пропускать через такой туннель протоколы маршрутизации использующие его, IPSec — протокол защиты сетевого трафика на IP-уровне туннели в чистом виде этого не могут. Причин для организации GRE туннеля может быть множество от банальной необходимости пробросить свою сеть через чужое IP пространство до использования протоколов OSPF, RIPv2, EGRP совместно с IPSec. Так же GRE, в отличии от IPIP, может помочь пробросить немаршрутизируюмые протоколы, такие как NetBios, IPX, AppleTalk.
Различия между туннель GRE или IPIP:
Туннелирование увеличивает нагрузку на систему и сеть, потому что добавляются дополнительные IP-заголовки. Таким образом, если обычный размер пакета (MTU) в сети равен 1500 байтам, то при пересылке по туннелю, пакет будет меньше, 1476 байт для GRE и 1480 байт для IPIP. Задать MTU можно вручную или с помощью PMTUD (path MTU discovery). Основная проблема в ручной настройке MTU и/или MSS состоит в том, что по пути между вашими площадками может оказаться линк с MTU, скажем, 1300. Тут на помощь может прийти PMTUD. Протокол целиком и полностью полагается на ICMP протокол диагностики перегрузки сети unreachable messages, которые должны быть разрешены на всем пути между соседями. Cisco рекомендует устанавливать MTU в 1400 байт вне зависимости от того работает GRE поверх IPSec в туннельном или в транспортном режиме.
Туннелирование подразумевает три протокола:
Как происходит инкапсуляции заголовка GRE в IP-пакет?
GRE-заголовок накладывается «поверх» стандартного IP-пакета. При этом в самом GRE-заголовке содержится так называемый Tunnel IP Header. Именно в нем содержится информация о tunnel source и tunnel destination.
Данные адреса вкладываются в основной пакет, когда он отправляется в публичную сеть. В поле Control Information оригинального IP-пакета содержатся исходные IP-адреса источника и назначения. Таким образом, локальные серые IP-адреса скрыты в пакете, а в маршрутизации участвуют только те адреса которые мы указали в tunnel source и tunnel destination. При передаче пакета в локальную сеть GRE-заголовок отбрасывается и остается «чистый» IP-пакет.
Настройка GRE туннелей в Debian GNU/Linux
Настройка GRE туннелей в FAQ Debian и Хостинг VPS/VDS на Ubuntu одинаковы. Имеется 2 удаленных сервера Debian 7.8 Wheezy с реальными статическими IP адресами.
То же самое только через файл /etc/network/interfaces
В файл /etc/network/interfaces это будет выгладить так
Ниже рабочий пример для ping из локальной сети
Источник
How to Establish a GRE Tunnel Between Two CentOS 7 Servers
Introduction
What is GRE? What are some advantages?
GRE stands for Generic Routing Encapsulation, which allows two servers to communicate privately. GRE tunnels are useful as they allow all types of traffic to go through. It is relatively easy to set up and is secure (imagine having a direct pipe between server A and server B).
Simply put: creating a GRE tunnel allows for packets to be forwarded with minimal resource usage.
NOTE: GRE tunnels must be set up on two endpoints.
How does it work?
When you create a GRE tunnel on your server, your server will act as a virtual router. Keep in mind that both ends will need a public IP address as packets are sent over multiple networks.
Prerequisites and Configuring Both Endpoints
What you’ll need to set a GRE tunnel up
Fortunately, all you’ll need is:
- 2 servers running CentOS 7
- The ip_gre module loaded
- nano or any text editor
If you don’t already have the GRE module loaded into either server, perform the following command:
In order to make things easier to understand, the first and second endpoint will be labelled as A and B respectively.
The IP addresses that we’ll be using are below:
Endpoint A:
- local/internal IP: 192.0.2.1
- public IP: 203.0.113.1
Endpoint B:
- local/internal IP: 192.0.2.2
- public IP: 203.0.113.2
Keep in mind that you’ll need to modify the example IP addresses (change 203.0.113.1 and 203.0.113.2 with the IP addresses of the two servers that you will be using).
Configuring Endpoint A
To begin, we need to head over to the network-scripts folder:
Now, use nano or your favourite text editor to create a file called ifcfg-tun0 :
In the newly created file, paste the following:
Save and exit (with nano , do CTRL + X , followed by ENTER ).
Bring the interface up:
Once you perform the command above, you can begin configuring the second endpoint.
Configuring Endpoint B
The process of configuring this endpoint is similar to that of the first one. To begin, head over to your network-scripts folder:
Now, create a new file called ifcfg-tun0 :
Paste the following:
You can now bring the interface up:
Testing the tunnels
On Endpoint A, enter the following:
You will see a similar output:
On Endpoint B:
You will see a similar output:
If both ends can ping each other successfully, you can skip to the final section of this article. If it times out, you may need to disable your firewall or allow the appropriate addresses.
Refer to this article if you don’t understand how to create these rules.
If you only wish to test if the tunnels work, you can (at your own risk) disable the firewall on both servers:
Some CentOS 7 systems have IPTables, so perform the following if the command above does not work:
Conclusion
You’ve successfully established a GRE tunnel between two servers. Should you wish to remove the tunnels in the future, perform the following on both servers:
Источник
Организация GRE-туннеля в RHEL/CentOS
Протокол GRE создавался компанией Cisco Systems для организации сетевых тунелей. И хотя в настоящее время GRE теряет актуальность, так как не поддерживает шифрование и не работает через NAT, в случае необходимости быстрой организации туннеля между двумя локальными сетями именно GRE будет в числе самых простых вариантов.
Ранее уже описывалась организация GRE-туннеля на машинах под управлением Debian/Ubuntu. Сейчас будет рассмотрено решение той же самой задачи, но уже на серверах под управлением RHEL/CentOS.
Допустим что в обоих офисах стоит шлюз под управлением CentOS. На кажом сервере по две сетевые карты:
- eth0: Смотрит в интернет. В центральном офисе адрес 1.1.1.1, в филиале — 1.1.2.2;
- eth1: Смотрит в локальную сеть офиса. В центральном офисе: 192.168.101.1/24, в филиале — 192.168.102.1/24.
На обоих серверах будет создан интерфейс tun0. В центральном офисе он будет иметь адрес 172.17.254.1 а в филиале — 172.17.254.2. Для этого на сервере головного офиса создадим файл «/etc/sysconfig/network-scripts/ifcfg-tun0» следующего содержания:
На сервере филиала нужно создать такой же файл, но его содержание будет немного отличаться:
Так же на обоих серверах создадим файл «/etc/sysconfig/network-scripts/route-tun0». На сервере центрального офиса он будет иметь вид:
А на сервере филиала:
И наконец на обеих машинах поднимаем интерфейс командой:
Проверить что интерфейс поднялся можно командой:
Вывод будет примерно таким:
Ну а проверить работоспособность соединения можно банальной командой ping. Остаётся лишь дополнить набор правил iptables чтобы разрешить обмен трафиком и работа завершена.
Источник