transproxy 構築メモ


前回の構築のリプレース。

Raspbian Buster Lite を balenaEtcher で書き込む

root に ssh という空ファイルを置く

Downstream 側用に USB ethernet dongle を追加する

apt-get dist-upgrade -y

apt-get install しておく

  • firmware-linux-free : USB ethernet dongle のため
  • iptables-persistent : nat rule を保存したい
  • dnsmasq : Downstream 向け
  • screen : 作業用

raspbian では最終的には dhcpcd の制御下にあるので、dhcpcd で eth1 を static 割り当てにする

dhcpcd.conf
interface eth1
static ip_address=192.168.0.2/24
static routers=192.168.0.2
static domain_name_servers=192.168.0.2

ip routing を有効にする

/etc/sysctl.d/98-nat.conf
net.ipv4.ip_forward=1

masquerade のルールを入れる。

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

/etc/init.d/iptables-persistent save で保存しておく。

再起動してここまでの設定が反映されることを確認する。

golang-go をインストールして、github.com/wadahiro/go-transproxy をビルドする

systemd unit を書いて enable する

[Unit]
Description=transproxy
After=network.target

[Install]
WantedBy=multi-user.target

[Service]
Environment=http_proxy=http://proxy.server:8080
Environment=https_proxy=http://proxy.server:8080
ExecStart=/home/pi/go/bin/transproxy -private-dns 192.168.0.2 -public-dns 8.8.8.8
KillMode=process
Restart=on-failure

だめだった。IPv6->IPv4 fallback が待っていられない。DNS も透過 proxy したいという気持ちは理解した気がする。

どうしようかな。