Как добавить, что статический маршрут на Google вычисляет механизм

Я создаю кластер в Google Compute Engine, и в настоящее время я должен добавить статический маршрут к другой машине в той же сети, но что-то идет не так, как надо, и я получаю ошибку "ответы RTNETLINK: Сеть недостижима".

Важное примечание: Я не сетевой эксперт, и я, вероятно, делаю некоторые основные ошибки в процессе.

У меня есть машина A и машина B, где A имеет подсеть 11.10.0.0/16 с другими машинами B, не может достигнуть, таким образом, A будет шлюзом B им. У обоих есть флаг IP forwarding активный и находятся в той же сети (использующий eth0 на обоих) и может достигнуть другого непосредственно.

Команда и ошибка (выполняемый на B):

B:~$ sudo ip route add 11.10.0.0/16 via 10.240.0.8 dev eth0
RTNETLINK answers: Network is unreachable

Хост A

A:~$ ip route list
default via 10.240.0.1 dev eth0 
10.240.0.1 dev eth0  scope link 
11.10.0.0/16 via 11.10.0.2 dev tun0 
11.10.0.2 dev tun0  proto kernel  scope link  src 11.10.0.1 
172.17.0.0/16 dev docker0  proto kernel  scope link  src 172.17.42.1
A:~$ ip addr
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1460 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 42:01:0a:f0:00:08 brd ff:ff:ff:ff:ff:ff
    inet 10.240.0.8/32 brd 10.240.0.8 scope global eth0
       valid_lft forever preferred_lft forever
3: docker0:  mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:7d:6d:9b:0b brd ff:ff:ff:ff:ff:ff
    inet 172.17.42.1/16 scope global docker0
       valid_lft forever preferred_lft forever
7: tun0:  mtu 1500 qdisc pfifo_fast state UP group default qlen 100
    link/none 
    inet 11.10.0.1 peer 11.10.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever
A:~$ sudo iptables --list -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  anywhere             anywhere             ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  anywhere            !loopback/8           ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  172.17.0.0/16        anywhere            

Chain DOCKER (2 references)
target     prot opt source               destination
A:~$ sudo iptables --list -t filter
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain DOCKER (1 references)
target     prot opt source               destination

Хост B

B:~$ ip route
default via 10.240.0.1 dev eth0 
10.240.0.1 dev eth0  scope link 
11.11.0.0/16 via 11.11.0.2 dev tun0 
11.11.0.2 dev tun0  proto kernel  scope link  src 11.11.0.1 
172.17.0.0/16 dev docker0  proto kernel  scope link  src 172.17.42.1
B:~$ ip addr
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1460 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 42:01:0a:f0:00:07 brd ff:ff:ff:ff:ff:ff
    inet 10.240.0.7/32 brd 10.240.0.7 scope global eth0
       valid_lft forever preferred_lft forever
3: docker0:  mtu 1460 qdisc noqueue state DOWN group default 
    link/ether 02:42:b0:25:d5:57 brd ff:ff:ff:ff:ff:ff
    inet 172.17.42.1/16 scope global docker0
       valid_lft forever preferred_lft forever
17: tun0:  mtu 1500 qdisc pfifo_fast state UP group default qlen 100
    link/none 
    inet 11.11.0.1 peer 11.11.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever
B:~$ sudo iptables --list -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  anywhere             anywhere             ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  anywhere            !loopback/8           ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  172.17.0.0/16        anywhere            

Chain DOCKER (2 references)
target     prot opt source               destination
B:~$ sudo iptables --list -t filter
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain DOCKER (1 references)
target     prot opt source               destination

Я надеюсь, что дал достаточно информации о проблеме.

0
задан 27 October 2015 в 12:16
1 ответ

Виртуальная сеть, которую вы получаете в экземпляре GCE, фактически представляет собой сеть / 32 , к которой присоединены только сам экземпляр и шлюз (последний настраивается с помощью хоста маршрут). Это означает, что весь исходящий трафик отправляется на шлюз.

Это причина того, что вы получаете следующую ошибку:

B:~$ sudo ip route add 11.10.0.0/16 via 10.240.0.8 dev eth0
RTNETLINK answers: Network is unreachable

Ошибка просто сообщает вам, что нет хоста или сетевого маршрута, который соответствует 10.240.0.8 (кроме маршрута по умолчанию, который использует сам шлюз).

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

4
ответ дан 4 December 2019 в 11:46

Теги

Похожие вопросы