0 routing linux-networking google-compute-engine
我正在 Google 计算引擎中构建一个集群,目前我需要添加到同一网络中另一台计算机的静态路由,但出现问题,我收到错误“RTNETLINK 答案:网络无法访问”。
重要提示:我不是网络专家,我可能在这个过程中犯了一些基本错误。
我有一台机器A和一台机器B,其中A有一个子网11.10.0.0/16,其他机器B无法到达,所以A将是B到它们的网关。两者都具有活动标志IP forwarding并且位于同一网络中(两者都使用 eth0)并且可以直接到达对方。
命令和错误(在B上执行)是:
B:~$ sudo ip 路由通过 10.240.0.8 dev eth0 添加 11.10.0.0/16 RTNETLINK解答:网络不可达
A:~$ip路由列表 默认通过 10.240.0.1 dev eth0 10.240.0.1 dev eth0 范围链接 11.10.0.0/16 通过 11.10.0.2 dev tun0 11.10.0.2 dev tun0 proto 内核范围链接 src 11.10.0.1 172.17.0.0/16 dev docker0 proto 内核范围链接 src 172.17.42.1
A:~$ ip 地址
1: lo: mtu 65536 qdisc noqueue 状态 UNKNOWN 组默认值
链接/环回 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 范围主机 lo
永远有效_lft 永远首选_lft
2: eth0: mtu 1460 qdisc pfifo_fast 状态 UP 组默认 qlen 1000
链接/以太 42:01:0a:f0:00:08 brd ff:ff:ff:ff:ff:ff
inet 10.240.0.8/32 brd 10.240.0.8 范围全局 eth0
永远有效_lft 永远首选_lft
3: docker0: mtu 1500 qdisc noqueue 状态 DOWN 组默认
链接/以太 02:42:7d:6d:9b:0b brd ff:ff:ff:ff:ff:ff
inet 172.17.42.1/16 范围全局 docker0
永远有效_lft 永远首选_lft
7: tun0: mtu 1500 qdisc pfifo_fast 状态 UP 组默认 qlen 100
链接/无
inet 11.10.0.1 对等 11.10.0.2/32 范围全局 tun0
永远有效_lft 永远首选_lft
答:~$ sudo iptables --list -t nat 链 PREROUTING(策略接受) 目标 prot 选择源目的地 DOCKER all -- 任何地方任何地方 ADDRTYPE 匹配 dst 类型 LOCAL 链输入(策略接受) 目标 prot 选择源目的地 链输出(策略接受) 目标 prot 选择源目的地 DOCKER all --anywhere !loopback/8 ADDRTYPE 匹配 dst 类型 LOCAL 链 POSTROUTING(策略接受) 目标 prot 选择源目的地 伪装所有人 -- 172.17.0.0/16 任何地方 链 DOCKER (2 参考) 目标 prot 选择源目的地
答:~$ sudo iptables --list -t 过滤器 链输入(策略接受) 目标 prot 选择源目的地 链转发(策略接受) 目标 prot 选择源目的地 DOCKER all——任何地方、任何地方 接受所有 - 任何地方 任何地方 ctstate 相关、已建立 接受所有——任何地方任何地方 接受所有——任何地方任何地方 链输出(策略接受) 目标 prot 选择源目的地 链 DOCKER (1 参考) 目标 prot 选择源目的地
B:~$ip 路由 默认通过 10.240.0.1 dev eth0 10.240.0.1 dev eth0 范围链接 11.11.0.0/16 通过 11.11.0.2 dev tun0 11.11.0.2 dev tun0 proto 内核范围链接 src 11.11.0.1 172.17.0.0/16 dev docker0 proto 内核范围链接 src 172.17.42.1
B:~$ ip 地址
1: lo: mtu 65536 qdisc noqueue 状态 UNKNOWN 组默认值
链接/环回 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 范围主机 lo
永远有效_lft 永远首选_lft
2: eth0: mtu 1460 qdisc pfifo_fast 状态 UP 组默认 qlen 1000
链接/以太 42:01:0a:f0:00:07 brd ff:ff:ff:ff:ff:ff
inet 10.240.0.7/32 brd 10.240.0.7 范围全局 eth0
永远有效_lft 永远首选_lft
3: docker0: mtu 1460 qdisc noqueue 状态 DOWN 组默认
链接/以太 02:42:b0:25:d5:57 brd ff:ff:ff:ff:ff:ff
inet 172.17.42.1/16 范围全局 docker0
永远有效_lft 永远首选_lft
17:tun0:mtu 1500 qdisc pfifo_fast状态UP组默认qlen 100
链接/无
inet 11.11.0.1 对等 11.11.0.2/32 范围全局 tun0
永远有效_lft 永远首选_lft
B:~$ sudo iptables --list -t nat 链 PREROUTING(策略接受) 目标 prot 选择源目的地 DOCKER all -- 任何地方任何地方 ADDRTYPE 匹配 dst 类型 LOCAL 链输入(策略接受) 目标 prot 选择源目的地 链输出(策略接受) 目标 prot 选择源目的地 DOCKER all --anywhere !loopback/8 ADDRTYPE 匹配 dst 类型 LOCAL 链 POSTROUTING(策略接受) 目标 prot 选择源目的地 伪装所有人 -- 172.17.0.0/16 任何地方 链 DOCKER (2 参考) 目标 prot 选择源目的地
B:~$ sudo iptables --list -t 过滤器 链输入(策略接受) 目标 prot 选择源目的地 链转发(策略接受) 目标 prot 选择源目的地 DOCKER all——任何地方、任何地方 接受所有 - 任何地方 任何地方 ctstate 相关、已建立 接受所有——任何地方任何地方 接受所有——任何地方任何地方 链输出(策略接受) 目标 prot 选择源目的地 链 DOCKER (1 参考) 目标 prot 选择源目的地
我希望我已经提供了有关该问题的足够信息。
您在 GCE 实例上获得的虚拟网络实际上是/32仅连接实例本身和网关的网络(后者使用主机路由进行配置)。这意味着所有传出流量都会发送到网关。
这就是您收到以下错误的原因:
B:~$ sudo ip route add 11.10.0.0/16 via 10.240.0.8 dev eth0
RTNETLINK answers: Network is unreachable
Run Code Online (Sandbox Code Playgroud)
该错误只是告诉您没有匹配的主机或网络路由10.240.0.8(除了使用网关本身的默认路由)。
无法使用主机上的路由配置来设置所需的配置。相反,您需要在 GCE 本身中配置路由,如此处所述。从概念上讲,您可以将其视为在网关上配置路由表。您不需要在主机上进行任何其他配置,因为如上所述,它们将所有传出数据包发送到网关。
| 归档时间: |
|
| 查看次数: |
3284 次 |
| 最近记录: |