地方でリモートワーク

リモートワーク、プログラミング、エンジニア、地方

202605012005_眠らせていたRaspberryPiをProxyサーバーとして稼働させた

こんにちは、吉田智哉です。 今日は眠らせていたRaspberryPiをProxyサーバーとして稼働させました。

VPSで動かしているサーバーでブラウザ操作の自動化をしているんですが、VPSから直接自動化すると(VPSのIPアドレスだと)、ボット判定されてしまうからです。 そのため、自宅のネットワークでインターネットにつながっている RaspberryPiをProxyサーバーとして稼働させて、VPSサーバーからProxyすることでボット判定されずにブラウザ操作を自動化することができます。

今回は特定のVPS(サーバー)からのみProxyできればよいので、Squidなどのプロキシサーバーソフトウェアを使用せず、SSHのポートフォワーディングを使用しました。 具体的にはOpenSSHの機能で、以下の2つを組み合わせています。

  1. リバーストンネル(-R)
    • ラズパイからサーバーへSSH接続し、サーバーの特定ポート(2222)をラズパイのSSHポートに繋げる
    • サーバー側からラズパイに直接SSHできない(NAT越え)問題を解決
  2. 動的ポートフォワーディング(-D)
    • SSHのSOCKS5プロキシ機能
    • ssh -D 1080 ... とするだけでlocalhost:1080がSOCKS5プロキシになる
    • Linuxカーネルの機能ではなくOpenSSHが実装しているSOCKS5サーバー

ネットの記事ではSquidやmicrosocksを使用する例が多いですが、特定の限定されたサーバーのリクエストをProxyしたいだけであればOpenSSHの機能で十分です。 このほうがシンプルに実装できます。

https://www.squid-cache.org/

https://github.com/rofl0r/microsocks

今回もAIを使いながら実装したのですが、Squidやmicrosocksで実装する方法を提案してきましたが、Linux(正確にはOpenSSHですが)だけで実装してと依頼をして、軌道修正をしました。

このあたりをハンドリングするための知識は身につけておきたいですね。