试了试,docker 可以当透明网关 /代理
用的是斐讯 N1,刷的 NDM, linux 应该也可以, macos 不行,好像 macvlan 有问题
# 创建网络,网卡混杂模式
ip link set eth0 promisc on
docker network create -d macvlan --subnet=2.2.2.0/24 --gateway=2.2.2.1 -o parent=eth0 macnet
# 转发用的 clash redir
docker run -d \
-it \
--name=clash \
--network macnet \
--ip 2.2.2.77 \
--mac-address 32:D8:E2:AE:93:77 \
--ulimit nofile=16384:65536 \
--cap-add=NET_ADMIN \
--privileged=true \
-e TZ=Asia/Shanghai \
-p 7892:7892 \
golang:latest \
/bin/sh
# 安装,配置 clash
go install
github.com/Dreamacro/clash@latestvi ./bin/config.yaml
bin/clash -f bin/config.yaml
# 来自
https://github.com/shadowsocks/shadowsocks-libev#transparent-proxyiptables -t nat -N SHADOWSOCKS
iptables -t mangle -N SHADOWSOCKS
# VPS 服务器不转发
iptables -t nat -A SHADOWSOCKS -d 54.250.148.164 -j RETURN
# 局域网地址不转发
iptables -t nat -A SHADOWSOCKS -d 0.0.0.0/8 -j RETURN
iptables -t nat -A SHADOWSOCKS -d 10.0.0.0/8 -j RETURN
iptables -t nat -A SHADOWSOCKS -d 127.0.0.0/8 -j RETURN
iptables -t nat -A SHADOWSOCKS -d 169.254.0.0/16 -j RETURN
iptables -t nat -A SHADOWSOCKS -d 172.16.0.0/12 -j RETURN
iptables -t nat -A SHADOWSOCKS -d 192.168.0.0/16 -j RETURN
iptables -t nat -A SHADOWSOCKS -d 224.0.0.0/4 -j RETURN
iptables -t nat -A SHADOWSOCKS -d 240.0.0.0/4 -j RETURN
iptables -t nat -A SHADOWSOCKS -d 2.2.2.0/24 -j RETURN
# TCP
iptables -t nat -A SHADOWSOCKS -p tcp -j REDIRECT --to-ports 7892
# UDP
ip route add local default dev lo table 100
ip rule add fwmark 1 lookup 100
iptables -t mangle -A SHADOWSOCKS -p udp --dport 53 -j TPROXY --on-port 7892 --tproxy-mark 0x01/0x01
# 生效
iptables -t nat -A PREROUTING -p tcp -j SHADOWSOCKS
iptables -t mangle -A PREROUTING -j SHADOWSOCKS
# 可能用到的包
apt update
apt install -y vim iptables iproute2 iputils-ping curl net-tools ca-certificates
update-ca-certificates
# 安装包可能要临时翻
export http_proxy=http://2.2.2.77:7890
export https_proxy=http://2.2.2.77:7890
unset http_proxy
unset https_proxy
# 测试有没有生效
curl
https://ipinfo.io/curl
https://ifconfig.co/