У меня проблема с туннелированием, и мне трудно найти решение. У меня есть два сервера: A: Host-Server — это сервер с одним IP-адресом, а B: Main-Server — это сервер, обрабатывающий все наши приложения.
Я настроил туннель GRE в порядке, но для приложения требуется, чтобы (A) IP-адрес сервера ( 192.168.0.1 ) находился на (B) серверах Eth0, чтобы приложение могло использовать IP-адрес как свой собственный (это обязательно). Однако, когда я пытаюсь добавить IP-адрес (A) к (B), я считаю, что происходит петля маршрутизации, и я не могу понять, как правильно настроить поток трафика. Я пробовал несколько PREROUTE и POSTROUTE на iptabels без особого успеха. Ниже приведены настройки, которые я получаю, когда все перестает работать.
Любая помощь в этом будет принята с благодарностью!
Подробности:
Сервер А: Хост:
Публичный IP-адрес: 192.168.0.1
IP-адрес туннеля: 10.0.2.1
Сервер Б: Основной:
Публичный IP-адрес: 192.168.1.2
IP-адрес туннеля: 10.0.2.2
Сервер А:
Добавьте туннель
sudo ip-туннель добавить режим test_tunnel gre локальный 192.168.0.1 удаленный 192.168.1.2 ttl 255
sudo ip addr add 10.0.2.1/30 dev test_tunnel
sudo ip link set test_tunnel up
sudo echo '101 test_tunnel_GRE' >> /etc/iproute2/rt_tables
/sbin/ip маршрут добавить по умолчанию через таблицу 10.0.2.2 dev test_tunnel test_tunnel_GRE
/sbin/iptables -t nat -A РАЗМЕЩЕНИЕ -s 10.0.2.0/30 ! -o gre+ -j SNAT --к источнику 192.168.0.1
/sbin/iptables -A FORWARD -d 10.0.2.2 -m state --state НОВЫЙ,УСТАНОВЛЕННЫЙ,СВЯЗАННЫЙ -j ПРИНЯТЬ
/sbin/iptables -A FORWARD -s 10.0.2.2 -m state --state НОВЫЙ,УСТАНОВЛЕННЫЙ,СВЯЗАННЫЙ -j ПРИНЯТЬ
Проверьте IP-адреса туннеля для проверки связи и посмотрите, получен ли ответ (работает).
root@A:~# ping -c4 10.0.2.2
PING 10.0.2.2 (10.0.2.2) 56 (84) байт данных.
64 байта из 10.0.2.2: icmp_seq=1 ttl=64 время=50,6 мс
64 байта из 10.0.2.2: icmp_seq=2 ttl=64 время=49,6 мс
64 байта из 10.0.2.2: icmp_seq=3 ttl=64 время=49,7 мс
64 байта из 10.0.2.2: icmp_seq=4 ttl=64 время=49,7 мс
--- 10.0.2.2 статистика пинга ---
4 пакета передано, 4 получено, 0% потери пакетов, время 3005 мс
rtt min/avg/max/mdev = 49,636/49,945/50,651/0,439 мс
Тест на сервере должен увидеть IP-адрес туннельного сервера: (работает)
root@A:~# curl http://www.cpanel.net/showip.cgi --interface 10.0.2.1
192.168.0.1
Сервер Б:
Добавьте туннель
sudo ip-туннель добавить режим test_tunnel gre локальный 192.168.1.2 удаленный 192.168.0.1 ttl 255
sudo ip addr add 10.0.2.2/30 dev test_tunnel
sudo ip link set test_tunnel вверх
sudo echo '101 test_tunnel_GRE' >> /etc/iproute2/rt_tables
/sbin/ip добавить правило из таблицы 10.0.2.0/30 test_tunnel_GRE
/sbin/ip маршрут добавить по умолчанию через таблицу 10.0.2.1 dev test_tunnel test_tunnel_GRE
Проверьте IP-адреса туннеля для проверки связи и посмотрите, получен ли ответ (работает).
[root@B~]# пинг -c4 10.0.2.1
PING 10.0.2.1 (10.0.2.1) 56 (84) байт данных.
64 байта из 10.0.2.1: icmp_seq=1 ttl=64 время=51,7 мс
64 байта из 10.0.2.1: icmp_seq=2 ttl=64 время=50,0 мс
64 байта из 10.0.2.1: icmp_seq=3 ttl=64 время=50,0 мс
64 байта из 10.0.2.1: icmp_seq=4 ttl=64 время=50,0 мс
--- 10.0.2.1 статистика пинга ---
4 пакета передано, 4 получено, 0% потери пакетов, время 3054 мс
rtt min/avg/max/mdev = 50,023/50,458/51,721/0,746 мс
Тест на сервере должен увидеть IP-адрес туннельного сервера: (работает)
[root@B~]# curl http://www.cpanel.net/showip.cgi --interface 10.0.2.2
192.168.0.1
Вот где он ломается:
Добавьте IP в eth0:
IP-адрес 192.168.0.1/32 dev eth0
/sbin/ip добавить правило из таблицы 192.168.0.1 test_tunnel_GRE
СЛОМАННЫЙ
Теперь все ломается на обоих концах, на обоих серверах ping и curl оба не отвечают.
Я ценю любую информацию, которая может помочь мне решить эту проблему!