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

Общедоступная IP-маршрутизация через частный туннель GRE

У меня настроен туннель GRE между двумя Linux-системами. Туннель работает нормально. Я могу пинговать с каждого хоста другой частный IP-адрес.

Главный приват: 10.0.0.1

publicip: 8.8.8.8

Приватный хвост: 10.0.0.2

publicip: 7.7.7.7

Общедоступный IP-адрес на Tail имеет сетевой блок 9.9.9.0/23, статически маршрутизируемый через интерфейс 7.7.7.7. Идея состоит в том, чтобы заставить 9.9.9.0/23 ips работать на серверах в сети 8.8.8.8.

Я настраиваю хвостовой хост для маршрутизации блока / 23. Я установил 9.9 IP на головном сервере. Могу пинговать 9.9 ip от хвоста до головы.

Я не могу пропинговать ip 9.9 из общедоступного интернета.

Я думаю, что мне нужно добавить некоторые другие маршруты из-за проблем со шлюзом, но я, кажется, не могу осознать это (не парень маршрутизатора, просто пробивая себе путь через то, что я никогда раньше не делал и смутно понимаю)

- данки

Уже немного поздно, но если вы не решили это, вот как:

Учитывая ваш пример, просто замените:

  • publicip: 8.8.8.8 с 50.2.2.2
  • publicip: 7.7.7.7 с 70.2.2.3
  • частный IP-адрес, может быть любым допустимым частным адресом.
  • privateip: 10.0.201.1 и 10.0.201.2

Общедоступные IP-адреса:

  • А = 50.2.2.2-22
  • В = 70.2.2.3

туннелирование с gre:

На:

# adding the interface for the tunnel
$ ip tunnel add tun2 mode gre remote 70.2.2.3 ttl 64

# setting the private ip address 
$ ifconfig tun2 10.0.201.1/24
$ ifconfig tun2 up

# A point to point 
$ ifconfig tun2 pointopoint 10.0.201.2

# enabling multicast (it's not necessary for this)
$ ifconfig tun2 multicast

$ ifconfig tun2 arp
$ ifconfig tun2 broadcast

# default route for the tunnel
$ ip route add 10.0.201.2 dev tun2 

# enable ip forward
$ echo 1 > /proc/sys/net/ipv4/ip_forward

# add the permanent entries to the arp table in order to get the complete loop. (without this doesn't work)
# replace the public ips for your ips, and the mac for your real mac for your interface
# the word pub it's the most important here, if it's not there the arps will never go outside
$ arp -s 50.2.2.20 00:00:00:00:00:00 -i eth0 pub
$ arp -s 50.2.2.21 00:00:00:00:00:00 -i eth0 pub
$ arp -s 50.2.2.22 00:00:00:00:00:00 -i eth0 pub

На B:

# adding the interface for the tunnel
$ ip tunnel add tun2 mode gre remote 50.2.2.2 ttl 64

# setting the private ip address 
$ ifconfig tun2 10.0.201.2/24
$ ifconfig tun2 up

# point to point B
$ ifconfig tun2 pointopoint 10.0.201.1

# enabling multicast (it's not necessary for this)
$ ifconfig tun2 multicast

$ ifconfig tun2 arp
$ ifconfig tun2 broadcast

# default route for the tunnel
$ ip route add 10.0.201.1 dev tun2 

$ echo 1 > /proc/sys/net/ipv4/ip_forward

# putting the ips to listen in the eth0 as secondary ips
$ ip ad add 50.2.2.20/32 dev eth0
$ ip ad add 50.2.2.21/32 dev eth0
$ ip ad add 50.2.2.22/32 dev eth0

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

Еще нужно иметь в виду, что если у вас так много IP-адресов, вы должны быть осторожны с вашим широковещательным доменом в точке A, и если вы планируете туннелировать более 500 IP-адресов, вам нужно изменить значение по умолчанию. значения Linux для таблицы arp, чтобы сохранить все записи:

$ echo 1024 > /proc/sys/net/ipv4/neigh/default/gc_thresh1
$ echo 4096 > /proc/sys/net/ipv4/neigh/default/gc_thresh2
$ echo 16384 > /proc/sys/net/ipv4/neigh/default/gc_thresh3

Источники:

Давно искал то же самое и нашел ваш пост.

Маршруты должны существовать в обоих направлениях на всем протяжении пути. Из вашего описания я не совсем уверен, что именно не работает.