スタッフの皆様、下記のルーティングテーブルをご覧ください。 dev ens160 は、172.17.4.x からの着信 ping 要求を受け入れ、dev tun0 を介して応答します。
- 「0.0.0.0/1」と「デフォルト」の違いは何ですか?
- 172.17.4.xからens160までのトラフィックに応答するにはどのような変更が必要ですか?
ホスト:172.31.4.225
Lan:172.31.4.0/24
GW:172.31.4.1
tun0:インターネットにアクセスするためのトンネル(openvpn)
ens160:仮想マシンネットワークインターフェイス
リモートクライアント:172.17.4.x
# ip route
0.0.0.0/1 via 10.z.0.1 dev tun0
default via 172.31.4.1 dev ens160 proto dhcp src 172.31.4.225 metric 100
10.z.0.0/16 dev tun0 proto kernel scope link src 10.z.0.6
128.0.0.0/1 via 10.23.0.1 dev tun0
172.16.0.0/16 via 172.31.4.1 dev ens160
172.31.4.0/24 dev ens160 proto kernel scope link src 172.31.4.225
172.31.4.1 dev ens160 proto dhcp scope link src 172.31.4.225 metric 100
u.w.x.y via 172.31.4.1 dev ens160
192.168.19.0/24 dev br-<snip> proto kernel scope link src 192.168.19.1
192.168.68.0/24 dev docker0 proto kernel scope link src 192.168.68.1 linkdown
答え1
0.0.0.0/1 via 10.z.0.1 dev tun0 128.0.0.0/1 via 10.z.0.1 dev tun0
これらの 2 つの規則は、合計0.0.0.0/0
(0.0.0.0 から 127.255.255.255 までの最初の IP アドレス、128.0.0.0 から 255.255.255.255 までの 2 番目の IP アドレス) をカバーし、次に優先します.
default via 172.31.4.1 dev ens160 proto dhcp src 172.31.4.225 metric 100
ルールは範囲が狭いためにdefault
存在します。0.0.0.0/0
openvpn
これらは、少なくともあなたがそれらを使用するときに追加されます--redirect-gateway def1
。
マニュアルページから:
定義1 0.0.0.0/0 の代わりに 0.0.0.0/1 と 128.0.0.0/1 を使用してデフォルトゲートウェイをオーバーライドするには、このフラグを使用します。これは元のデフォルトゲートウェイを上書きしますが消去しないという利点があります。
答え2
注目すべき重要な点は、/1
最初少量IPアドレスはでなければなりません0
。最初の数字がに設定されているIPアドレスは1
一致しません。一致する他のルールがない場合、デフォルトのルールはすべてのIPアドレスと一致します。実際、これは0.0.0.0/1
IPアドレスがローカルループバックであり、ルーティングされていないため、実際には...にのみ一致する0.0.0.0
ことを意味します。デフォルトルールが適用されるため、すべてのIPアドレスと一致します。127.x.x.x
0.0.0.0
126.x.x.x
127.x.x.x
0.0.0.0/0
ルーティングテーブルにもルールがあることに注意してください128.0.0.0/1
。すべてのIPv4アドレスは次のいずれかに一致するため、デフォルトの0.0.0.0/1
ルール128.0.0.0/1
は使用されません。
172.17.4.xからens160までのトラフィックに応答するにはどのような変更が必要ですか?
に172.17.4.0/24
ルーティングする別のルールを追加します。これens160
172.31.4.1
しなければならないこのルーティングテーブルは既に172.31.4.1
許容可能なデフォルトゲートウェイを考慮しているため、許容可能です。この結果を得る理由は、最初の3バイト(3×8ビット)が/24
()の最初の3バイトと一致する必要があり、4番目のバイトは気にしないからです。172.31.4.0
172
31
4
x