Здравствуйте, я пытаюсь настроить сеть, подобную этой сетевой схеме: -
Что ж, мне нужно создать туннель 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