😎
自宅のサーバーを別拠点のサーバーにOpenVPNで接続させて、SOCKS5プロキシ経由で自宅内の端末からアクセスできるようにする
はじめに
最近VPNを契約して、全部の端末をそのVPNに常時接続させています。プライバシー重視のサービスを選んだので安心です。
ただ、私の場合はここで問題が生じます。友人が私に貸し出してくれているサーバーがあるのですが、セキュリティーの関係でOpenVPNを使って接続しないとアクセスできません。アクセスするだけ切り替えればいいのですが、いちいちやるのは面倒ですし出来ればつなぎっぱなしにしておきたいです。さあどうしましょう...
自宅のサーバーにOpenVPNとDante(Socks Proxy)をぶち込む
家に使っていないサーバーがあったので、そいつを踏み台サーバーとして使うことにします。
OSはUbuntu 20.04です。
【OpenVPN】インストール+設定
とりあえずapt
でインストール。
sudo apt install openvpn
そして、OpenVPNの設定ファイルを何らかの方法で入手しお好みのエディタで/etc/openvpn/client.conf
に記述。
記述したら再起動。
sudo systemctl restart openvpn@client.service
多分つながってるはず。念のためipを確認
curl ifconfig.me
無事成功していれば次へ
【Dante】インストール
Dantedとか、Sockdとか、色々言い方あるっぽい?
とりあえずインストール。aptからインストールもできますが、今回はビルドします。
gcc
、make
がない場合はインストール。
sudo apt install gcc make
以下に従ってビルド。
# ダウンロード
wget https://www.inet.no/dante/files/dante-1.4.3.tar.gz
# 解凍、ディレクトリ移動
tar xzvf dante-1.4.3.tar.gz
cd dante-1.4.3
# Make
./configure
sudo make
sudo make install
sockd -v
でバージョンが表示されればok。
【Dante】設定
systemdに登録するファイルを記述。
/etc/systemd/dante.service
[Unit]
Description=SOCKS (v4 and v5) proxy daemon (danted)
Documentation=man:danted(8) man:danted.conf(5)
After=network-online.target
[Service]
Type=simple
PIDFile=/run/danted.pid
ExecStart=/usr/local/sbin/sockd -f /etc/sockd.conf
ExecStartPre=/bin/sh -c ' \
uid=`sed -n -e "s/[[:space:]]//g" -e "s/#.*//" -e "/^user\\.privileged/{s/[^:]*://p;q;}" /etc/danted.conf`; \
if [ -n "$uid" ]; then \
touch /var/run/danted.pid; \
chown $uid /var/run/danted.pid; \
fi \
'
PrivateTmp=yes
InaccessibleDirectories=/boot /home /media /mnt /opt /root
ReadOnlyDirectories=/bin /etc /lib -/lib64 /sbin /usr
DeviceAllow=/dev/null rw
[Install]
WantedBy=network-online.target
sudo systemctl enable dante.service && sudo systemctl start dante.service
Danteの設定ファイルを記述。
/etc/sockd.conf
internal: 0.0.0.0 port = 1080
external: eth0
socksmethod: none
clientmethod: none
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
# log: connect disconnect
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
}
再起動
sudo systemctl restart dante.service
エラーが出なければok。
別端末を用意して接続テスト。
curl -socks5-hostname ipaddress:1080 https://ifconfig.me/
レスポンスが正常に返ってきていればok。これでお好きな家庭内の端末からSOCKSプロキシを経由して別拠点に接続できます。
.ssh/config
の設定
【おまけ】WindowsでsshにSOCKSプロキシを使う場合の.ssh/config
Host meruru_sv1
HostName 接続したいip
User meru
ProxyCommand "C:\Program Files\Git\mingw64\bin\connect.exe" -S proxyのip:1080 %h %p
Git for Windowsが入っていれば使える方法です。Zenn.devに辿り着いている開発者の中で入っていない人は居ないはず...
Discussion