LoginSignup
0
0

More than 1 year has passed since last update.

ASUS の無線 LAN ルータで透過プロキシサーバを動かした時のメモ

Posted at

ASUS RT-AX56U (Asuswrt-Merlin 導入済) で透過プロキシサーバ (go-transproxy) を動かしました.

ルータ下の IP アドレスは 192.168.50.0/24 で
プロキシサーバは 172.16.0.1 の 8080 番で Listen している前提です.

go-transproxy の本体は /jffs 下に配置しました.実機でビルドしてもいいですが,環境構築の手間がかかることと,それなりに時間がかかるので下の注意事項に気を付けながらクロスコンパイルすることを推奨します.

iptables 設定

ipset -N localnet iphash
ipset -A localnet 192.168.50.0/24
ipset -A localnet 172.16.0.0/24
ipset -A localnet 172.16.10.0/24
ipset -A localnet 172.16.20.0/24
ipset -A localnet 172.16.30.0/24
ipset -A localnet 172.16.40.0/24
ipset -A localnet 172.16.50.0/24
ipset -A localnet 172.16.60.0/24

iptables -A PREROUTING -t nat -m set ! --match-set localnet dst -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 7080
iptables -A PREROUTING -t nat -m set ! --match-set localnet dst -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 7443

iptables -t nat -A OUTPUT -m set ! --match-set localnet dst -p tcp -o br0 --dport 80 -j DNAT --to 127.0.0.1:7080
iptables -t nat -A OUTPUT -m set ! --match-set localnet dst -p tcp -o br0 --dport 443 -j DNAT --to 127.0.0.1:7443
iptables -t nat -A OUTPUT -m set ! --match-set localnet dst -p tcp -o eth0 --dport 80 -j DNAT --to 127.0.0.1:7080
iptables -t nat -A OUTPUT -m set ! --match-set localnet dst -p tcp -o eth0 --dport 443 -j DNAT --to 127.0.0.1:7443

transproxy

no_proxy='127.0.0.1,localhost' http_proxy=http://172.16.0.1:8080 /jffs/transproxy  -tcp-proxy-dports 0 -disable-iptables -http-proxy-listen :7080 -https-proxy-listen :7443 -loglevel info

ビルド時に気をつけること

GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=0 go build  -o bin/transproxy cmd/transproxy/main.go

CGO_ENABLED=0 を付けないと not found になる.(ライブラリが足りてない?)

起動時のスクリプト

Web GUI の管理→システムから "Enable JFFS custom scripts and configs" を有効にする
スクリプトは /jffs/scripts/services-start に書く

こんなイメージ

#!/bin/sh
hoge & \
fuga & \
exec piyo

参考文献

go-transproxy
https://github.com/wadahiro/go-transproxy

Asuswrt-Merlin
https://www.asuswrt-merlin.net/

ipset 関係
https://serverfault.com/questions/6989/iptables-multiple-source-ips-in-single-rule

go のバイナリ
https://stackoverflow.com/questions/34729748/installed-go-binary-not-found-in-path-on-alpine-linux-docker

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0