web-dev-qa-db-ja.com

デフォルトルートを追加できないのはなぜですか?

プライベートアドレス空間にCentOS 7マシンがあります。IPは10.10.0.2です。パブリックIPを持つゲートウェイ経由でインターネットにアクセスしたい同じスイッチに接続されている、これを50.50.50.50と呼びましょう。ある時点で機能していましたが、現在は壊れており、修正できないようです。また、net-toolsをインストールしました。これは、そのフォーマットに頭を悩ます方がはるかに簡単だからです。

[root@node002 ~]# ip route show
10.0.0.0/8 dev ens785 proto kernel scope link src 10.10.0.2 metric 100 
[root@node002 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.0.0.0       U     100    0        0 ens785

50.50.50.50をゲートウェイとして、他のすべてのルートを追加するにはどうすればよいですか?

[root@node002 ~]# ip route add 0.0.0.0/0 dev ens785などのいくつかのことを試しましたが、ルーティングテーブルに何も追加されません。エラーメッセージもありません。このip route add 50.50.50.50 dev ens785のようにホストにルートを追加してみましたが、ルーティングテーブルに1行追加されました。

[root@node002 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.0.0.0       U     100    0        0 ens785
50.50.50.50     0.0.0.0         255.255.255.255 UH    0      0        0 ens785

私は[root@node002 ~]# ip route add 0.0.0.0/0 via 50.50.50.50などの他のバリエーションも試しましたが、これにより、ホストへのルートが削除されました。

[root@node002 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.0.0.0       U     100    0        0 ens785

私も試しました:

[root@node002 ~]# ip route add default via 50.50.50.50/0
Error: ??? address is expected rather than "50.50.50.50/0".

そしてさらに:

[root@node002 ~]# ip route add default dev ens785
[root@node002 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.0.0.0       U     100    0        0 ens785
50.50.50.50     0.0.0.0         255.255.255.255 UH    0      0        0 ens785

他のすべてのマシンには、宛先およびゲートウェイとして0.0.0.0を持つデフォルトルートがあります。例えば私のデスクトップのように、それは理にかなっています-同じネットワーク上のトラフィックはゲートウェイなしでローカルネットワークに行き、他のものへのトラフィックはルーターを経由します。

root@desktop ~ $ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         100.100.100.1   0.0.0.0         UG    100    0        0 eth0
100.100.100.0   0.0.0.0         255.255.255.0   U     100    0        0 eth0

私がこれをどのように壊したのか、どのように修正したのか、私にはよくわかりません。どんなポインタでも大歓迎です!

[〜#〜]編集[〜#〜]

まず、同じマシン上でゲートウェイマシンにプライベートアドレスを与えました。これは10.1.1.1になりました。これは、サブネットマスクが255.0.0.0であることを意味しますthinkは、同じネットワークであることを意味します。アドレスはping可能です。しかし、それをデフォルトとして追加することもできません。

[root@node002 ~]# ip route add default via 10.1.1.1
[root@node002 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.0.0.0       U     100    0        0 ens785
50.50.50.50     0.0.0.0         255.255.255.255 UH    0      0        0 ens785

ノードにパブリックIPを一時的に追加してから、デフォルトゲートウェイを追加できます。

[root@node002 ~]# ip a add 50.50.50.51 dev ens785
[root@node002 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.0.0.0       U     100    0        0 ens785
50.50.50.50     0.0.0.0         255.255.255.255 UH    0      0        0 ens785
[root@node002 ~]# ip route add default via 10.1.1.1
[root@node002 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.1.1.1        0.0.0.0         UG    100    0        0 ens785
10.0.0.0        0.0.0.0         255.0.0.0       U     100    0        0 ens785
50.50.50.50     0.0.0.0         255.255.255.255 UH    0      0        0 ens785
50.50.50.51     0.0.0.0         255.255.255.255 UH    100    0        0 ens785

次に、パブリックIPアドレスを削除しますが、デフォルトのルートはそのままにします。

[root@node002 ~]# ip a del 50.50.50.51/32 dev ens785
[root@node002 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.1.1.1        0.0.0.0         UG    100    0        0 ens785
10.0.0.0        0.0.0.0         255.0.0.0       U     100    0        0 ens785
50.50.50.50     0.0.0.0         255.255.255.255 UH    0      0        0 ens785

それで、パブリックIPを削除してゲートウェイを保持できる場合、ゲートウェイを追加できるようにパブリックIPを追加する必要があるのはなぜですか?

編集2パブリックIPを簡単に追加しないと、ipコマンドを使用して追加するデフォルトルートを取得できません。

さらに混乱を招きますが、NetworkManagerをバイパスしてifcfgファイルを使用する(そしてDHCPではなく静的割り当てにスワップする)ことで、実現できます。

[root@node002 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens785 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
NM_CONTROLLED=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens785
DEVICE=ens785
ONBOOT=yes
MTU=9000
HWADDR=00:11:22:33:44:55
IPADDR=10.10.0.2
NETMASK=255.0.0.0
GATEWAY=10.1.1.1
DNS1=10.1.1.1
[root@node002 ~]# systemctl stop NetworkManager 
[root@node002 ~]# ifdown ens785 && ifup ens785
[root@node002 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use 
Iface
0.0.0.0         10.1.1.1        0.0.0.0         UG    0      0        0 ens785
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 ens785
169.254.0.0     0.0.0.0         255.255.0.0     U     1004   0        0 ens785
1
Biggles

まず、IPを介してデフォルトゲートウェイを追加することはできません。また、ゲートウェイの同じ範囲からのIPを持つインターフェイスがありません。たとえば、50.50.50.50/24などのデフォルトゲートウェイを追加するには、50.50.50.100/24などの同じ範囲のIPが必要です。

インターフェイスが1つしかなく、プライベートIPアドレスがあり、インターネットにアクセスする必要がある場合は、ルーターが必要です。これにより、ルーターは、ローカルIPからパブリックIPにNAT=を作成できます。

スイッチしかないので、この問題を修正するには、パブリックIP範囲のIPを持つプライベートIPがある同じインターフェースにサブ(エイリアス)インターフェースを追加するというトリックを実行できます。たとえば、50.50.50.100/24を追加します。このようなデフォルトゲートウェイip route add default via 50.50.50.50

4

ルーティングは常にレイヤー3(IP)で行われます。デフォルトルートが50.50.50.50を指すだけでは不十分です。ルーティングテーブルには、到達方法を示すエントリも含まれている必要がありますthatホスト。 IP層には、同じリンク上にあっても、ランダムなアドレスには到達できません。 IP層はそれを知りません。 IPレイヤーがルーティングテーブルからIPパケットの送信先を決定した場合のみ、レイヤー2に引き渡す準備が整います。

ホストが同じ範囲のIPを持つことは厳密に必要ではないことに注意してください(50.50.50.51など)。重要なことは、サブネットへのルートがあることです。ただし、セカンダリアドレス(ip addr add 50.50.50.51/24 dev ens785)を追加すると、50.50.50.0/24へのルートが自動的に追加されます。

そうは言っても、これを行う正しい方法は、あなたがやろうとしたことだと思います。セカンダリアドレスを10.0.0.0/8範囲のルーターに追加し、そのアドレスにデフォルトルートを追加します(10.1.1.1例)。ルートの追加がうまくいかなかった理由がわかりません。 ip route add default via 10.1.1.1からエラーメッセージが表示されましたか?

10.0.0.0/8ネットワーク上のホストからインターネットにアクセスする場合、ルーターは上記の@WissamRoujoulahのようにプライベートアドレスとパブリックアドレスの間でNAT=)を実行する必要があります。

2
Johan Myréen

これは自動ネットワーク構成マネージャーのバグだと思います。次のように入力して設定マネージャをオフにした場合:

NM_CONTROL=no

あなたのifcfg-ens785とネットワークを再起動すると、手動でデフォルトルートを追加できるようになります。

1
markljenkins