<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>さくらVPS</title><link>https://blog.ast.moe/tags/%E3%81%95%E3%81%8F%E3%82%89vps/</link><description>Recent posts from 五里霧中</description><generator>Hugo</generator><item><title>固定IPが欲しかったので、さくらVPSをSSH SOCKSプロキシにしたメモ</title><link>https://blog.ast.moe/blog/2026-08-18-3/</link><pubDate>Tue, 18 Aug 2026 21:23:10 +0900</pubDate><guid>https://blog.ast.moe/blog/2026-08-18-3/</guid><description>&lt;p&gt;IP制限をかけた環境の疎通確認をするとき、自分の接続元IPだけ例外として許可したいことがある。&lt;/p&gt;
&lt;p&gt;ただ、自宅回線のグローバルIPは固定ではないので、ルーター再起動などでIPが変わる。&lt;/p&gt;
&lt;p&gt;そのたびに許可IPを変更するのは面倒なのでさくらVPSを踏み台にする。&lt;/p&gt;
&lt;p&gt;SoftEther VPNなどでIPsecを使ってもよかったけどSSHが使えるのでローカルPC上で完結するならこっちの方が楽なのでSOCKSを使った。&lt;/p&gt;
&lt;h2 id="やりたいこと"&gt;やりたいこと&lt;/h2&gt;
&lt;p&gt;構成はこんな感じ。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Firefox
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;localhost:1080
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SSH
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;さくらVPS
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Internet
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="sshでsocksプロキシを作る"&gt;SSHでSOCKSプロキシを作る&lt;/h2&gt;
&lt;p&gt;SSHのDynamic Port Forwardingを使う。&lt;/p&gt;
&lt;p&gt;今回は1080番ポートを設定する。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ssh -D &lt;span style="color:#ae81ff"&gt;1080&lt;/span&gt; Bastion
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;Bastion&lt;/code&gt;は&lt;code&gt;~/.ssh/config&lt;/code&gt;に登録しているVPS。&lt;/p&gt;
&lt;p&gt;次のように設定する。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-sshconfig" data-lang="sshconfig"&gt;Host Bastion
HostName xxx.xxx.xxx.xxx
User username
IdentityFile ~/.ssh/id_ed25519
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;SSH接続中は、&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;127.0.0.1:1080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;がエンドポイントになりSOCKSプロキシとして待ち受ける。&lt;/p&gt;
&lt;h2 id="待ち受け確認"&gt;待ち受け確認&lt;/h2&gt;
&lt;p&gt;macOSなら&lt;code&gt;lsof&lt;/code&gt;で確認できる。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;lsof -iTCP:1080 -sTCP:LISTEN
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;例えば、&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;COMMAND PID USER FD TYPE NAME
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ssh ... ... ... TCP localhost:socks (LISTEN)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;のように出力される。&lt;/p&gt;
&lt;h2 id="curlでvps経由になっているか確認"&gt;curlでVPS経由になっているか確認&lt;/h2&gt;
&lt;p&gt;Firefoxを設定する前にcurlで確認する。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl --proxy socks5h://127.0.0.1:1080 https://ifconfig.me
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;表示されるIPがさくらVPSのグローバルIPになっていれば成功である。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;socks5h&lt;/code&gt;を使うと、ホスト名の名前解決もSOCKSプロキシ側で行われる。&lt;/p&gt;
&lt;h2 id="firefoxだけsocks経由にする"&gt;FirefoxだけSOCKS経由にする&lt;/h2&gt;
&lt;p&gt;今回はMac全体をVPS経由にする必要がなかったので疎通確認に使うFirefoxだけプロキシを通す。
というよりもchromeとFirefoxでそれぞれIP制限されている、されていないブラウザ用意できて便利なのでこういう構成にした。&lt;/p&gt;</description></item></channel></rss>