IP制限をかけた環境の疎通確認をするとき、自分の接続元IPだけ例外として許可したいことがある。
ただ、自宅回線のグローバルIPは固定ではないので、ルーター再起動などでIPが変わる。
そのたびに許可IPを変更するのは面倒なのでさくらVPSを踏み台にする。
SoftEther VPNなどでIPsecを使ってもよかったけどSSHが使えるのでローカルPC上で完結するならこっちの方が楽なのでSOCKSを使った。
やりたいこと
構成はこんな感じ。
Firefox
↓
localhost:1080
↓
SSH
↓
さくらVPS
↓
Internet
SSHでSOCKSプロキシを作る
SSHのDynamic Port Forwardingを使う。
今回は1080番ポートを設定する。
ssh -D 1080 Bastion
Bastionは~/.ssh/configに登録しているVPS。
次のように設定する。
Host Bastion
HostName xxx.xxx.xxx.xxx
User username
IdentityFile ~/.ssh/id_ed25519
SSH接続中は、
127.0.0.1:1080
がエンドポイントになりSOCKSプロキシとして待ち受ける。
待ち受け確認
macOSならlsofで確認できる。
lsof -iTCP:1080 -sTCP:LISTEN
例えば、
COMMAND PID USER FD TYPE NAME
ssh ... ... ... TCP localhost:socks (LISTEN)
のように出力される。
curlでVPS経由になっているか確認
Firefoxを設定する前にcurlで確認する。
curl --proxy socks5h://127.0.0.1:1080 https://ifconfig.me
表示されるIPがさくらVPSのグローバルIPになっていれば成功である。
socks5hを使うと、ホスト名の名前解決もSOCKSプロキシ側で行われる。
FirefoxだけSOCKS経由にする
今回はMac全体をVPS経由にする必要がなかったので疎通確認に使うFirefoxだけプロキシを通す。 というよりもchromeとFirefoxでそれぞれIP制限されている、されていないブラウザ用意できて便利なのでこういう構成にした。
Firefoxの
設定
↓
一般
↓
ネットワーク設定
↓
接続設定
を開いて、「手動でプロキシを設定する」を選択。
SOCKS Host:
127.0.0.1
Port:
1080
SOCKSのバージョンは、
SOCKS v5
を選択。
さらに、
SOCKS v5を使用するときはDNSもプロキシを使用する
も有効にしておく。
これでFirefoxの通信だけがVPS経由になる。
IP制限の疎通確認に使う
例えばサービス側で、
許可IP:
xxx.xxx.xxx.xxx/32
のように接続元IPを制限している場合このIPにさくらVPSのIPを登録しておく。
通常の自宅回線からアクセスすると拒否される。
FirefoxをSSH SOCKS経由にすると、
Firefox
↓
SSH SOCKS
↓
さくらVPS
↓
IP制限されたサービス
となりサービス側からはVPSのIPから接続しているように見える。