go-transproxy as a service


プロキシとの戦いに疲れたのでgoで透過プロキシを作ってみた - Qiita

Systemdを使ってさくっと自作コマンドをサービス化してみる - Qiita

sudo nano /etc/systemd/system/transproxy.service

[Unit]
Description = go-transproxy service

[Service]
ExecStart = {fullpath}/go-transproxy/bin/transproxy  -private-dns {option_value} -dns-over-https-enabled -tcp-proxy-dports 2222 {othe optionr}
Restart = always
Type = simple
Environment = "http_proxy=http://{ip}:{port}"
Environment = "https_proxy=http://{ip}:{port}"
Environment = "no_proxy={ip},{hostname},{etc}"
StandardOutput = null

[Install]
WantedBy = multi-user.target

sudo systemctl daemon-reload
sudo systemctl enable transproxy.service
sudo systemctl start transproxy.service
sudo systemctl status transproxy.service

これは私の環境でコンテナを使うとき用の設定であり、起動オプションはそれぞれの環境・用途に合わせて変える必要あり。

また、デフォルトで22番ポートを制御しちゃう(してくれる)ので、--tcp-proxy-dportsオプションで適当なポートに変えてあげないとSSH経由でログインできなくなった。
SSH接続するときに以下のような、

ssh_exchange_identification: read: Connection reset by peer

や、

Remote side unexpectedly closed network connection

などのエラーが出たらここを疑うべし。