例:手元のホストから辿りつけないホストのIPアドレス
192.168.30.1 : destination1 192.168.30.2 : destination2 192.168.30.3 : destination3 192.168.30.4 : destination4
例:destinaion1~4に辿りつける remotehost を経由した SSH ポートフォワーディング
Host remotehost LocalForward 11000 destination1:1000 LocalForward 12000 destination1:2000 LocalForward 21000 destination2:1000 LocalForward 22000 destination2:2000 LocalForward 31000 destination3:1000 LocalForward 32000 destination3:2000 LocalForward 41000 destination4:1000 LocalForward 42000 destination4:2000
しかしこの方法では実際に connect() する際の宛先IPアドレス・ポート番号の両方、もしくは片方がかわってしまい、透過的とはいえません。
SSHで何段もポートフォワーディングしなければたどり着けないホストや、例えば IRC の DCC コネクションなどのように、プロトコル中に IP アドレスが含まれていたり、 Web ページの中にホストの IP アドレスが入るケースでは透過的な通信を確保したいケースもあります。
ここで、手元のホスドのループバックアダプタなどに接続先のホストのアドレスを割り当て、バインド先としてIPアドレスとポートを明示的に指定しポートフォワーディングを行うと、TCPのあらかじめ指定したポートだけでも、まるで透過的なようにアクセスできます。
例:ループバックアダプタと組み合わせて利用する SSH ポートフォワーディングの例(~/.ssh/config ファイルの例)
Host remotehost LocalForward 192.168.30.1:1000 destination1:1000 LocalForward 192.168.30.1:2000 destination1:2000 LocalForward 192.168.30.2:1000 destination2:1000 LocalForward 192.168.30.2:2000 destination2:2000 LocalForward 192.168.30.3:1000 destination3:1000 LocalForward 192.168.30.3:2000 destination3:2000 LocalForward 192.168.30.4:1000 destination4:1000 LocalForward 192.168.30.4:2000 destination4:2000
なお、ループバックアダプタに 192.168.30.0/24 をアサインしている場合、本来 destination1~4 のセグメントにルーティングができるネットワーク上に移動したとすると、このループバックアダプタが邪魔をして通信に支障をきたします。このような場合には、 Windows の場合はアダプタ単位で無効化することで回避でき、具合がいいでしょう。
0 件のコメント:
コメントを投稿