我读过几个类似的场景,但没有找到任何解决方案。
这就是我现在所拥有的。
带有 E2Guardian 5.4 和 Squid 4.10 的 Ubuntu 20.0 LTS 盒子。该主机被设置为网络上我的客户端的网关。我的四个网络有四个接口。每个请求 (80,443) 都会经过 DNAT 处理并转发到 E2Guardian 8080 或 8443 端口。内容过滤后,请求将转发到 localhost:3128,其中鱿鱼侦听并将请求转发到真正的网关。
我唯一的问题是所有请求都转发 192.168.1.253,因为它是源 IP。因此,我无法过滤/设置带宽排队,因此每个客户端(网络)地址在我的网关处都有一个排队。
我使用以下脚本来设置路由和 NAT。我按源网络标记每个数据包,但在 E2guardian 将请求转发给鱿鱼后我看不到标记。我在squid.conf中设置了tcp_outgoing_address,但它没有用,因为squid从192.168.1.253 ip获取请求,e2guardian将它们转发到那里。
我的目标是调整此设置,以便根据客户端的网络地址将请求转发到正确的方式。
快速草稿以便更好地理解。 https://drive.google.com/file/d/16apWSLL8sX5T_VdDFMm7FMbseCMF41sr/view?usp=sharing
#!/bin/bash
LAN1_IF=ens160
LAN2_IF=ens192
LAN3_IF=ens224
LAN4_IF=ens256
LAN1=192.168.1.0/24
GW_LAN1=192.168.1.254
LAN2=192.168.2.0/24
GW_LAN2=192.168.2.254
LAN3=192.168.3.0/24
GW_LAN3=192.168.3.254
LAN4=10.15.0.0/22
GW_LAN4=10.15.3.254
PROXY_IP_LAN1=192.168.1.253
PROXY_IP_LAN2=192.168.2.253
PROXY_IP_LAN3=192.168.3.253
PROXY_IP_LAN4=10.15.3.253
ip route add $LAN2 dev $LAN2_IF src $PROXY_IP_LAN2 table admin2
ip route add default via $GW_LAN2 dev $LAN2_IF table admin2
ip rule add from $LAN2 table admin2
ip rule add to $LAN2 table admin2
ip route add $LAN3 dev $LAN3_IF src $PROXY_IP_LAN3 table admin3
ip route add default via $GW_LAN3 dev $LAN3_IF table admin3
ip rule add from $LAN3 table admin3
ip rule add to $LAN3 table admin3
ip route add $LAN4 dev $LAN4_IF src $PROXY_IP_LAN4 table admin3
ip route add default via $GW_LAN4 dev $LAN4_IF table admin3
ip rule add from $LAN4 table admin4
ip rule add to $LAN4 table admin4
ip route flush cache
PROXY_PORT=8080
PROXY_SSL_PORT=8443
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -A PREROUTING -s $LAN1 -p tcp -t mangle --dport 80 -j MARK --set-mark 1
iptables -A PREROUTING -s $LAN1 -p tcp -t mangle --dport 443 -j MARK --set-mark 1
iptables -t nat -A PREROUTING -s $LAN1 -i $LAN1_IF -p tcp --dport 80 -j REDIRECT --to-port $PROXY_PORT
iptables -t nat -A PREROUTING -s $LAN1 -i $LAN1_IF -p tcp --dport 443 -j REDIRECT --to-port $PROXY_SSL_PORT
iptables -A PREROUTING -s $LAN2 -p tcp -t mangle --dport 80 -j MARK --set-mark 2
iptables -A PREROUTING -s $LAN2 -p tcp -t mangle --dport 443 -j MARK --set-mark 2
iptables -t nat -A PREROUTING -s $LAN2 -i $LAN2_IF -p tcp --dport 80 -j REDIRECT --to-port $PROXY_PORT
iptables -t nat -A PREROUTING -s $LAN2 -i $LAN2_IF -p tcp --dport 443 -j REDIRECT --to-port $PROXY_SSL_PORT
iptables -A PREROUTING -s $LAN3 -p tcp -t mangle --dport 80 -j MARK --set-mark 3
iptables -A PREROUTING -s $LAN3 -p tcp -t mangle --dport 443 -j MARK --set-mark 3
iptables -t nat -A PREROUTING -s $LAN3 -i $LAN3_IF -p tcp --dport 80 -j REDIRECT --to-port $PROXY_PORT
iptables -t nat -A PREROUTING -s $LAN3 -i $LAN3_IF -p tcp --dport 443 -j REDIRECT --to-port $PROXY_SSL_PORT
iptables -A PREROUTING -s $LAN4 -p tcp -t mangle --dport 80 -j MARK --set-mark 4
iptables -A PREROUTING -s $LAN4 -p tcp -t mangle --dport 443 -j MARK --set-mark 4
iptables -t nat -A PREROUTING -s $LAN4 -i $LAN4_IF -p tcp --dport 80 -j REDIRECT --to-port $PROXY_PORT
iptables -t nat -A PREROUTING -s $LAN4 -i $LAN4_IF -p tcp --dport 443 -j REDIRECT --to-port $PROXY_SSL_PORT