IP制限がかかっているAPIをsshポートフォワーディングしてコールする


はじめに

IP制限が掛かっているAPIやサイトに特定サーバからだとアクセスできるけど
localのマシンからだとIP制限でアクセスできない、ってことありますよね。
先日、その悩みを解消したので備忘録として残します。

解決方法1 VPN(今回は使いません)

エンジニアが使いそうなVPNだと以下があります。

基本従量課金なんで今回は使わなかったです。

解決方法2 sshポートフォワーディング

本記事ではsshポートフォワーディングについての説明はせずに粛々とhow toだけ書いていきます。

例として、ssh接続先のvps.jp経由で、APIのエンドポイント(https://httpbin.org/ip)にアクセスできるようにしていきます。
https://httpbin.org/ipはIPが確認できるサイトです。

vps.jpのssh接続設定

config
host vps
  user hoge
  hostname vps.jp
  Identityfile /hoge/.ssh/hoge
  port 22

ssh vpsで接続できることを確認した上で下記を追記します。

config
host tunnel-vps
  user hoge
  hostname vps.jp
  Identityfile /hoge/.ssh/hoge
  LocalForward 8000 httpbin.org:443
  port 22

追記が終わったら、ssh tunnel-vpsでsshができることを確認して下さい。

ssh接続をしたままの状態で
localhost:8000へアクセスするとア〜ラ不思議☆
httpbin.orgにはアクセスできません

なんで?

僕はずっと
サーバ側(ssh)がDNS解決出来てないんだなってサーバ側の/etc/hostsを書き換えるってアホなことやってたんですが、永井大先生(身内ネタすいません)がご教授くれたんでなぜ駄目だったかと解決方法を書きます。

まず、なぜ駄目だったかの理由から
至極かんたんな理由でしてhttpbin.orgのサーバへlocalhostというドメインでアクセスしていた為、サーバ側のvirtual hostがどこへ振り分けていいかわからないという状況となっていました。

解決方法
localマシン(MAC)の/etc/hostsに下記を追記します。

127.0.0.1   httpbin.org

超初歩的。

この状態でhttps://httpbin.org:8000/ipへアクセスするとア〜ラ不思議☆
ssh接続先のglobal IPがちゃんと返ってきます!

スバラ!!!