私のローカル作業環境では、他の場所にあるワークステーションから会社のすべてのサーバーに直接アクセスしたいと思います。これを本当に興味深くするために、可能な唯一のアクセスは会社管理ノートブックのVPNを介してのみ可能であり、ラップトップはローカルネットワークに接続できません。
明らかに、どのIT部門もこれらの問題を解決するのに役立ちません。
答え1
自宅のコンピュータからワークラップトップにSSH経由で接続できる場合は、次のものを使用できます。SSHトンネルまたはSSHジャンプホスト
答え2
SSHトンネリング文書はたくさんありますが、この特定のシナリオには対応していません。
したがって、ワークステーション<->ノートブック<->会社ネットワークから出るには、Nに別のネットワークに接続するためのルーターとして機能するシステムを追加でインストールする必要があります。
ノートブックに2つのネットワークポートを持つ仮想マシンを追加する必要があります。 1 つは NAT を介してホスト ネットワークに接続され、もう 1 つはブリッジングを介して LAN に接続されます。
したがって、W<->VM1<->VM2<->N1<->N2<->CN接続を得ることができる。
SSH構成で構成できます。偽のIPのいくつかの例。
W = 192.0.0.3 <LAN> VM1 = 192.0.0.2
VM1 = 192.0.0.2 <route> VM2 = 10.0.0.3
VM2 = 10.0.0.3 <NAT> NATRouter = 10.0.0.1
NR = 10.0.0.1 <nat2host> N1 = 20.0.0.4
N2 = 20.0.0.4 <vpnroute> CN 0.0.0.0/0
これはシステム間のネットワークホップの説明です。
したがって、CNのサーバーに接続するには、2つの別々の手順を解決する必要があります。中間ホップのSSH構成を設定する必要があります。 .ssh/config エントリ:
# reaching the VM
Host VM
User vmuser
IdentityFile ~/.ssh/vm_id_rsa
ForwardX11 yes
# reaching a host inside the CN
Host CNhost
User companyuser
IdentityFile ~/.ssh/cnhost_id_rsa
ForwardX11 yes
ProxyCommand ssh -A vm nc %h %p 2> /dev/null
もう一つの重要な問題は、仮想マシン内の正しいルーティングです。ブリッジされたLAN 192.0.0.0/24へのルートは、NAT 10.0.0.1へのデフォルトルートよりも低いメトリックを持つ必要があります。
vm$ ip route
default via 10.0.0.1 metric 100
10.0.0.0/24 dev nat1 metric 100
192.0.0.0/24 dev bridge1 metric 99
興味深い状況は、企業ネットワーク内のサーバーからのみアクセスできる内部ネットワーク上のサーバーにもアクセスしたい場合です。クラシックジャンプホストの設定。これには別の .ssh/config エントリが必要です。
# reaching a host on a CN internal network
Host CNInternalhost
User cnInternalUser
IdentityFile ~/.ssh/cninternalhost_id_rsa
ForwardX11 yes
ProxyCommand ssh -A CNhost nc %h %p 2> /dev/null
これでCNInternalhostにSSH経由で簡単にアクセスできます。
そうでない場合は、ルーティングテーブルを確認する必要があります。 (例:パスが見つからないか間違っていることを示す)
しかし、私たちはまた、ローカルワークステーションから直接この内部ホストのサービスにアクセスしたいと思います!
これを行うには、.ssh / configで事前設定されたホップを使用してトンネルを作成します。
ssh -L <portOnLocalhost>:CNInternalhost:<portOnCNInternalHost> CNhost
これで、localhost:< portOnLocalhost>からCNInternalhost:< portOnCNInternalHost>にアクセスできるようになりました。
ローカル設定で追加のネットワーク名(ServerX)を再利用するには、ローカルホストにLAN IPのホストエイリアスを追加し、それに追加のトンネルを作成できます。
echo 192.0.0.3 ServerX >> /etc/hosts
これには追加の.ssh / configエントリも必要です。
# configuring another host on the CN internal network
Host serverX
User cnInternalUser
IdentityFile ~/.ssh/serverX_id_rsa
ForwardX11 yes
ProxyCommand ssh -A CNhost nc %h %p 2> /dev/null
この SSH 構成では、次のトンネルを作成できるようになりました。
ssh -L serverX:<portOnLocalhost>:serverX:<portOnLocalhost> CNhost
CNhostからserverXにアクセスできる限り。
私たちはできる:
$ wget serverX:<portOnLocalhost>