我有 http 代理,是我公司开发的。代理使用 TPROXY。通常,安装此代理需要添加一些路由规则和 iptables 规则(对于 squid 而言):
ip rule add fwmark 1 lookup 100
ip route add local 0.0.0.0/0 dev lo table 100
iptables -t mangle -N DIVERT
iptables -t mangle -A DIVERT -j MARK --set-mark 1
iptables -t mangle -A DIVERT -j ACCEPT
iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port $PROXPORT --on-ip $PROXIP
现在我需要代理来自不同 VLAN 的流量。我不明白如何编写 IP 规则以将代理后的流量路由到合适的输出接口。对于“合适”,我的意思是与输入接口一致的虚拟标记输出接口。
+---------+ +---------+
| | | |
| eth4.2 |--+ | eth5.2 |
| input | | +-->| output |
+---------+ | +----------+ | +---------+
| | | |
+---------+ +-->| |--+ +---------+
| | | TROXY | | |
| eth4.3 |----->| Magic |----->| eth5.3 |
| input | | | | output |
+---------+ +-->| |--+ +---------+
| | | |
+---------+ | +----------+ | +---------+
| | | | | |
| eth4.4 |--+ +-->| eth5.4 |
| input | | output |
+---------+ +---------+
谢谢你的帮助。