特定のネットワークインターフェイスでsshを使用する


38

openconnectVPNへの接続に使用しています。資格情報を入力した後、私はこれを取得します:

POST https://domain.name/...
Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 30, Keepalive 30
Connected tun0 as xxx.xxx.xxx.xxx, using SSL
Established DTLS connection

実行ifconfigするtun0と、特定のIPアドレスを持つ新しいネットワークインターフェイスが表示されます。

質問:そのプライベートネットワーク上のコンピューターにアクセスできるようにssh、ネットワークインターフェイスのみを使用するにはどうすればよいtun0ですか?

編集:

私のネットワーク構成(route -n)は次のようです:

172.16.194.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
172.16.25.0     0.0.0.0         255.255.255.0   U     0      0        0 vmnet1
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 eth0

ネットワーク構成について詳しく説明していただけますか?適切なルーティングを設定すると、tun0に接続されたネットワーク宛てのトラフィックはすべて、そのインターフェイスを使用します。
イーライ酔わ

回答:


45

TCPパケットが通過するインターフェイスを決定するのはsshクライアントではなく、カーネルです。要するに、SSHはカーネルに特定のIPアドレスへの接続を開くように要求し、カーネルはルーティングテーブルを参照して、使用するインターフェイスを決定します。

(以下はGNU / Linuxを使用していることを前提としています。一般的な概念はすべてのUnicesで同じですが、実行するコマンドの詳細と出力のフォーマット方法は異なる場合があります。)

コマンドroute -nip route showを使用して、カーネルルーティングテーブルを表示できます 。

OpenConnectには、tun0インターフェイスの行が追加されているはずです。その回線に一致するアドレスへの接続は、そのインターフェイスを介してルーティングされます。たとえばroute -n、ラップトップで実行すると、次の出力が得られます。

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.30.0.1       0.0.0.0         UG    0      0        0 eth0
10.30.0.0       0.0.0.0         255.255.255.0   U     1      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

これは、192.168.122.0 / 24(つまり、CIDR表記法によるアドレス192.168.122.0から192.168.122.255 )ネットワーク内のホストへの接続が、インターフェースを介してルーティングされることを意味しますvirbr0。169.254.0.0/16および10.30.0.0/24へのパスはを通過しeth0、その他(0.0.0.0行)はeth0を介してゲートウェイホスト 10.30.0.1にルーティングされます。


これを明確にしてくれてありがとう- インターフェースのopenconnect行を追加しなかったようですtun0。これを手動で行う必要があると思います。
axel22

1
@あなたが、ここで見ているかもしれませんaxel22:bbs.archlinux.org/viewtopic.php?id=69064ルートまで用途がopenconnectことをスクリプトとセット用。
リッカルドムリ

@RiccardoMurri 私の質問
ラーフル

7

いつ導入されたかはわかりませんが、RHEL7のOpenSSHクライアントのマンページには次のように記載されています。

 -b bind_address
         Use bind_address on the local machine as the source address of the connection.  Only useful on systems with more than one address.

インターフェイスを選択できるほど良くはありませんが、近いです。


また、-B使用するネットワークインターフェイスの名前を指定できるように見えるフラグ。
ヘンリック

-b bind_addressどういうわけか、このオプションはうまくいきませんでした。一時的にルートを変更する必要があります。ところで:この-Bオプションは、Ubuntuに付属しているSSHバージョンには存在しません。
ジョン

2

あなたは(多くのシステム上のデフォルトマネージャーのように)あなたのインターネット接続を管理するネットワークマネージャを使用している場合は、両方をインストールすることをお勧めしますopenconnectnetwork-manager-openconnect

Network Manager用のOpenConnectプラグインがインストールされたら、Network Managerを開き+、左下のアイコンをクリックします。オプションVPNを備えたコンボボックスが提供され、次にOpenConnect Compatible VPNを選択する機能が提供されます。

Network Managerを使用してOpenConnectとインターフェイスすることにより、ルートが自動的に表示され、VPNへの接続を支援します。これは、FireHostの処理方法など、VPN経由でサーバーにアクセスする場合に特に役立ちます。


1

回答を追加するだけです。-bフラグを使用して、アクセス時にソースIPを定義できます。

フォーマット+例

ssh -b interface-ip remote-ip
ssh -b 10.11.22.40 10.11.22.38 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.