
私はネットワークの初心者なので、適切な設定方法がわかりません。
サーバーにpingできる
ping -I 192.168.42.1 42.112.178.185
しかし、pingできなかった
ping 42.112.178.185
42.112.178.185 は 192.168.42.0/24 に対してのみ許可されます。
ルートテーブルを追加するにはどうすればいいですか?
ping 42.112.178.185
の代わりに
ping -I 192.168.42.1 42.112.178.185
電話をかけようとしていますhttp://42.112.178.185curl を使用して、192.168.42.1 からルーティングする必要があります。
答え1
アップデートご要望どおり、特定の問題に対する解決策は次のとおりです。接続前にオプションcurl
を使用してバインドするように指示し、接続時に正しいソース IP を使用するようにします--interface
。
- インターフェース
指定されたインターフェースを使用して操作を実行します。インターフェース名、IP アドレス、またはホスト名を入力できます。
curl
したがって、次のコマンドを使用して正しい IP で 42.112.178.185 に到達するだけで、問題を解決できます。
curl --interface 192.168.42.1 http://42.112.178.185/
もちろんインターフェースを指定することもできます。
誰かの役に立つかもしれないので、ルーティングソリューションを以下に残しておきます。
実際に、ターゲットに到達するときに、デフォルト IP (ゲートウェイのネットワークに属する IP) 以外のソース IP を使用するように指示するルートを追加できます。
注: 必要な情報 (デフォルト ゲートウェイの IP とそこに到達するためのインターフェイス) がいくつか提供されていないため、その値を見つけるには追加のスクリプトが必要です。また、デフォルト ルートを置き換えていないが、2 つの「半分のデフォルト ルート」0.0.0.0/1 と 128.0.0.0/1 を追加している可能性のあるトンネルが存在する可能性があるため、42.112.178.185 へのルートに正しい値を取得します。
それでは、gw IP を次のように割り当ててみましょうgw
:
gw=$(ip -o route get 42.112.178.185 | sed -n 's/^.* via \([^ ][^ ]*\) *.*$/\1/p')
次に、簡単なルーティング コマンドを示します。
ip route add 42.112.178.185 src 192.168.42.1 via $gw
たとえば、変更前のゲートウェイが 10.0.8.1 で、Ubuntu の想定される tun0 の想定される IP が 10.0.8.2 だった場合、42.112.178.185 へのルートを照会すると、次の結果が返されます。
# ip route get 42.112.178.185
42.112.178.185 via 10.0.8.1 dev tun0 src 10.0.8.2
cache
変更後は次のようになります:
# ip route get 42.112.178.185
42.112.178.185 via 10.0.8.1 dev tun0 src 192.168.42.1
cache
このip route
コマンドは、この単一の IP 以外にも影響を与えるように変更できますが、実行する内容は、すでに存在する他のルートによって異なります。