Как направить исходящий трафик для определенного IP-адреса назначения в GRE Tunnel в CentOS?
Здравствуйте, я пытаюсь настроить сеть, как эта схема сети:-
Что ж, мне нужно создать GRE-туннель на моем альфа-сервере и направить некоторый конкретный трафик на GRE-туннель. Я хочу выполнить настройки в CentOS. Я объясню сценарий ниже:
У меня есть две сетевые карты на моем сервере. Одна из них - eth0, а одна - eth1. eth1 подключен к Интернету, а eth0 подключен к сети A. Теперь я создал GRE-туннель через Интернет, который проходит через eth1. Теперь я хочу исходящий трафик, например, с IP-адресом назначения, как 190.93.247.183 или www.faultserver.ru. мой GRE Tunnel и остальные весь трафик должен проходить через eth0. Как мне это сделать? Я думаю, что это возможно с помощью статической маршрутизации. Пожалуйста, объясните команды шаг за шагом, так как я не очень хорошо разбираюсь в CentOS и Networking. Спасибо.
2 ответа
Хотя в вашем описании недостаточно информации (например, 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.faultserver.ru (который разрешается на несколько 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-адресов или подсетей, которые вы хотите направить через туннель, вы просто добавляете больше строк, таких как одна отсутствующая, в тот же файл.
Для подсетей вы можете добавить их в следующем формате: 10.0.0.0/8
Наконец, чтобы применить вышеуказанную конфигурацию, вы можете либо отключить, а затем запустить интерфейс tun0.
ifdown tun0 ; ifup tun0
или полностью перезагрузите сеть
service network restart
Добавьте правило маршрутизации, которое направляет предполагаемые IP-адреса (те, что находятся в удаленной локальной сети) на удаленный IP-адрес в сети GRE (удаленный маршрутизатор)