Назад | Перейти на главную страницу

Как направить исходящий трафик для определенного IP-адреса назначения в туннель GRE в CentOS?

Здравствуйте, я пытаюсь настроить сеть, подобную этой сетевой схеме: -

Что ж, мне нужно создать туннель GRE на моем альфа-сервере и направить определенный трафик в туннель GRE. Я хочу выполнить настройки на CentOS. Я объясню сценарий ниже: -

У меня на сервере две сетевые карты: одна - eth0, другая - eth1. eth1 подключен к Интернету, а eth0 подключен к сети A. Теперь я создал туннель GRE через Интернет, который проходит через eth1.Теперь я хочу, чтобы исходящий трафик, например, с IP-адресом назначения 190.93.247.183 или www.serverfault.com должен проходить через мой туннель GRE и остальные, весь трафик должен проходить через eth0. Как мне это сделать? Я думаю, что это возможно с помощью статической маршрутизации. Пожалуйста, объясните команды шаг за шагом, так как я не очень хорошо разбираюсь в CentOS и работе с сетями. Спасибо.

добавить правило маршрута, которое направляет предполагаемые IP-адреса (те, что в удаленной локальной сети) на удаленный IP-адрес в сети GRE (удаленный маршрутизатор)

Хотя в вашем описании недостаточно информации (например, IP-адреса и т. Д.), Чтобы мы могли дать полный / полный ответ, основная идея состоит в том, что вы создаете статический маршрут, чтобы любой трафик для этого конкретного IP-адреса, который вы хотите, проходил через туннель GRE.

Итак, если, например, вы хотите направить 190.93.247.183 через туннель GRE вы добавляете статический маршрут с помощью следующей команды.

ip route add 190.93.247.183 via 10.0.0.1 dev tun0

В 10.0.0.1 адрес - это удаленный адрес туннеля GRE (не публичный адрес), который будет использоваться в качестве шлюза.
Поэтому вы заменяете его тем, что вы настроили в своем туннеле. На диаграмме вы указываете этот адрес как gre addr.

Также вам нужно заменить tun0 с любым именем, которое имеет ваш интерфейс GRE Tunnel.

Этот маршрут нужно добавить в client сторона (я не уверен, с какой стороны на вашей диаграмме вы упоминаете альфа и бета, но не в своем описании)

Это направит все (UDP, TCP, ICMP ...) для этого IP-адреса через туннель.
Также имейте в виду, что это работает только для IP-адресов. Поэтому, если вы хотите маршрутизировать www.serverfault.com (который разрешается на несколько IP-адресов - и может время от времени меняться), вы не можете сделать это через DNS. Вам необходимо добавить статические маршруты для всех связанных IP-адресов, которые вы хотите маршрутизировать через туннель.

Наконец, имейте в виду, что статический маршрут будет потерян после перезагрузки.
Вам нужно будет добавить его в какой-нибудь файл конфигурации, чтобы он сохранялся после перезагрузки. Это зависит от вашего дистрибутива.

Вот пример дистрибутива Debian (или основанного на Debian):

В файле /etc/network/interfaces

auto tun1
iface tun1 inet static
    address <tunnel IP>
    netmask <tunnel subnet mask>
    pre-up iptunnel add tun1 mode gre local <local IP> remote <remote IP> ttl 255
    up ifconfig tun1 multicast
    pointopoint <remote tunnel IP>
    post-up ip route add <IP to route via tunnel> via <remote tunnel IP> dev tun0
    post-down iptunnel del tun1

Редактировать:

Приношу свои извинения, я не заметил, что вы упомянули, что используете CentOS.
Вот как добавить постоянные статические маршруты в поле CentOS (или любой другой на основе RHEL).

Вам нужно создать маршрут файл на основе имени вашего интерфейса.
Так, например, если ваше имя интерфейса (туннель в вашем случае) tun0 то вам нужно создать следующий файл: /etc/sysconfig/network-interfaces/route-tun0

В него вы просто добавляете следующее:

<IP to route via tunnel> via <remote tunnel IP>

Для любых дополнительных IP-адресов или подсетей, которые вы хотите маршрутизировать через туннель, вы просто добавляете больше строк, таких как один abone, в тот же файл.
Для подсетей вы можете добавить их в следующем формате: 10.0.0.0/8

Наконец, чтобы применить вышеуказанную конфигурацию, вы можете либо выключить, а затем включить интерфейс tun0

ifdown tun0 ; ifup tun0

или полностью перезапустить сеть

service network restart