🧰
misskey用のフォワードプロキシをsquid+tailscaleで建てる
おことわり
- これは個人的なメモであり、参考程度に見てください
なぜ建てたのか?
家の回線の相性でdeliverが謎にabortしてしまう現象が発生していたのですが、フォワードプロキシで安定してるところに出口を作ればいいって話を聞いたので今回お試しでやってます。
前提
- 両方のマシンでtailscaleが入ってる
- 1core/1gbのマシン←512mbのマシンでも動きそう
- ubuntu server 22.04
firewall
tailscale以外からのアクセスを遮断しておかないとフリーなプロキシとして悪用されてしまうので注意してください。
sudo ufw allow in on tailscale0 from 100.64.0.0/10 to any port 3128 proto tcp
squid
squidはsudo apt install -y squid
で入ります。
デフォルトのsquidのファイルは色々書いてあって読解が大変なので新しいファイルにコンフィグを書いていきます。
sudo mv /etc/squid/squid.conf ./squid.conf.backup
sudo vi /etc/squid/squid.conf
squid.conf
acl localnet src 100.64.0.0/10
acl tailscale_network src 100.64.0.0/10
acl tailscale_dst dst 100.64.0.0/10
http_access allow tailscale_network
http_access allow tailscale_dst
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 443
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
acl localdst dst 0.0.0.0
acl localdst dst 0.0.0.1-0.255.255.255
acl localdst dst 10.0.0.0/8
acl localdst dst 100.64.0.0/10
acl localdst dst 169.254.0.0/16
acl localdst dst 172.16.0.0/12
acl localdst dst 192.168.0.0/16
acl localdst dst fc00::/7
acl localdst dst fe80::/10
http_access deny localdst
include /etc/squid/conf.d/*
http_access allow localnet
http_access allow localhost
http_access deny all
workers 4
http_port 3128
コンフィグを書いたらsudo systemctl enable --now squid
で起動
sudo systemctl status squid
を叩いて
● squid.service - Squid Web Proxy Server
Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; preset: enabled)
Active: active (running) since
になってればok
curl ipinfo.io -x http://tailscaleのip:3128/
を叩いてipが変わってれば正しく接続できてます。
misskeyでフォワードプロキシを使う
misskeyの.config/default.yml
を開き、
# Proxy for HTTP/HTTPS
#proxy: http://127.0.0.1:3128
という部分があるのでproxyのコメントアウトを外す。
http://tailscaleのip:3128/
って感じで置き換えて、misskeyを再起動してください。
正常にdeliverが動いていれば完了です。
なぜ建てたのか?
家の回線の相性でdeliverが謎にabortしてしまう現象が発生していたのですが、フォワードプロキシで安定してるところに出口を作ればいいって話を聞いたので今回お試しでやってます。
Discussion