
こんにちは、みんな、
私の専用サーバーには、特定のアカウントに割り当てられた IP アドレスがいくつかあります。セカンダリ IP 経由でアカウントに SSH 接続できます。ただし、いったんログインすると、IP は常にプライマリ IP になります (コマンド「curl wtfismyip.com/text」で試しました)
異なる SSH インスタンスで実行する必要があるシェル スクリプトがいくつかあり、送信には異なる IP アドレス (異なるアカウント) を使用する必要があります。
この件に関して、何か提案や解決策をお持ちの方はいらっしゃいますか? ご協力いただければ幸いです。
ありがとう
答え1
外部サイト (例: whatismyip など) が参照するサーバー IP は、サーバーがルーティング テーブルから取得する IP です。
$ ip route
default via x.x.x.x dev ethX ...
10.0.0.0/16 dev ethY ...
....
接続しようとしているサイトの IP がルーティング テーブルで指定されたサブネット内にある場合、送信元 IP (自分の IP) と送信インターフェイスの両方がこの特定のルートから取得されます。たとえば、whatismyip.net の IP が 10.0.0.1 の場合、そこにトラフィックを送信すると、サーバーは ethY インターフェイスと ethY IP を使用します。
それ以外の場合、サイトがどのサブネットにも一致しない場合は、デフォルト ルートが使用されます。この例では、サーバーは ethX IP を送信元として ethX インターフェイスを介してトラフィックを送信します。
あなたの状況では、デフォルトのルートは eth0 経由であるようです。
別のインターフェース/IPを使用するには:
いくつかのコマンドでは、送信インターフェイスと送信元 IP を指定できます。例:
ping -I ethY whatever.net ping -I eth0.Y whatever.net curl --interface eth0.Y wtfismyip.com/text
または、MY_REMOTE_IPに新しいルートを追加して、通信時に特定のインターフェースまたはソースIPの使用を強制することもできます。上記の例では、MY_SECOND_IPはethYインターフェースのIPです。
$ ip route add MY_REMOTE_IP dev ethY src MY_SECOND_IP $ ip route add MY_REMOTE_IP dev eth0.Y src MY_SECOND_IP
それ以外の場合、一部のコマンドでは、送信元 IP を強制できます。例:
ssh -b MY_SECOND_IP user@MY_REMOTE_IP