透過プロキシ(Ubuntu, go-transproxy)
/etc/sudoers
Defaults env_keep+="HTTP_PROXY"Defaults env_keep+="HTTPS_PROXY"Defaults env_keep+="NO_PROXY"
環境変数
export HTTP_PROXY=http://proxy.example.com:8080/export HTTPS_PROXY=http://proxy.example.com:8080/export NO_PROXY=localhost,127.0.0.0/8,::1
NO_PROXYには必ずlocalhost/ローカルループバックアドレスを設定しておくこと(無限ループする)。
デスクトップの場合はGUI設定でOK。
/usr/local/bin/transproxy
/usr/local/bin/transproxy-start
#!/bin/bashset -eu# iptables -t nat -I OUTPUT -p tcp --dport 53 -j REDIRECT --to-ports 3131# iptables -t nat -I OUTPUT -p udp --dport 53 -j REDIRECT --to-ports 3131iptables -t nat -I OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 3129iptables -t nat -I OUTPUT -p tcp --dport 443 -j REDIRECT --to-ports 3130transproxy -disable-iptables # -dns-over-https-enabled
/usr/local/bin/transproxy-stop
#!/bin/bashset -eu# iptables -t nat -D OUTPUT -p tcp --dport 53 -j REDIRECT --to-ports 3131# iptables -t nat -D OUTPUT -p udp --dport 53 -j REDIRECT --to-ports 3131iptables -t nat -D OUTPUT -p tcp --dport 443 -j REDIRECT --to-ports 3130iptables -t nat -D OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 3129
iptablesのルールを書き換えるため、実行時にはroot権限が必要。
sudoで実行すれば、/etc/sudoersの設定から現在のシェルの環境変数が引き継がれる(-Eオプションでもいいが)。
transproxyは内部で環境変数からプロキシ設定を読み出し、透過プロキシサーバを立てる。
自動起動設定 /etc/systemd/system/transproxy.service
常時プロキシに接続する端末ではOS起動時に実行されるようにしておくと便利。
[Unit]Description=transproxy[Service]Environment=HTTP_PROXY=http://proxy.example.com:8080/Environment=HTTPS_PROXY=http://proxy.example.com:8080/Environment=NO_PROXY=localhost,127.0.0.0/8,::1ExecStart=/usr/local/bin/transproxy-startExecStop=/usr/local/bin/transproxy-stopRestart=alwaysRestartSec=10[Install]WantedBy=multi-user.target