SSH踏み台サーバを経由して社内サーバにアクセスする
最近のリモートワークの状況下で自宅から職場のサーバにアクセスしなければならないことも多いと思います。
hirakegoma.sh
最近は"--proxy-pac-url=f"でファイルを指定しても無視されてしまうようなので、ワークアラウンドが必要である。
VPNを使ったり、OAuth付きのproxyサーバを立てたり、いろいろとやり方があると思います。今回はSSHの踏み台サーバ経由で職場内のWEBサーバにアクセスする方法について、やり方を記録して置こうと思います。
昔から、1. SSHのダイナミックフォワードでトンネルを掘る、2. ブラウザにproxy.pacを読ませて特定の(社内サーバ)URLのみにそのトンネルを使わせる、といった方法は利用していましたが、あるバージョンを境にChromeでproxy.pacファイルを読まなくなってしまい、放置していました。
今回改めてやり方を調べてみたというのが背景です。
トンネル掘り
トンネルにはSSHのダイナミックフォワードを使います。例えば以下のような感じ。
#!/bin/bash while true; do echo "Connecting gw.example.com:22 ... " ssh -4ND 18888 gw.example.com -p 22 sleep 1 echo retrying done
職場内のサーバ、xxx.inside.example.comへのアクセスを上で作ったトンネルを経由させるには、例えば以下のようにすれば良い。
proxy.pac
function FindProxyForURL(url, host) { if (dnsDomainIs(host, ".inside.example.com")) if (isResolvable(host)) return "DIRECT"; else return "SOCKS5 localhost:18888"; else return "DIRECT"; }
会社内ではサーバ名前解決ができるであろうから、名前ができないときのみトンネルを通すようになっている。
Chrome起動オプション
Chromeでproxy.pacのありかを指定するには、システムの環境設定でやればいいらしい。残念なことにLinuxの場合にはそういうわけにもいかず、Chrome起動時にオプションを引数として渡してあげる必要がある。
以前は以下のような感じでうまく行っていた。
google-chrome %U --proxy-pac-url=file:///home/ktaka/proxy.pac
結局行き着いたのが以下のオプション。
google-chrome %U --proxy-pac-url='data:application/x-javascript-config;base64,'$(base64 -w0 /home/me/proxy.pac)
最近のサーバやワークステーションは、BMCというミニプロセッサが載っていて、Webブラウザー経由で電源のオンオフ、ハードリセット、BIOS設定の変更などができます。
今回のような簡易プロキシを使うことによって、これらの職場内にあるサーバに、外部から簡単にアクセスすることができるようになります。
BMC搭載の高性能なワークステーションはこちらをどうぞ→AMD Ryzen™ Threadripper™ ECCメモリ IPMI搭載 ワークステーション
Comments