在 Linux 上为 Squid 的 tcp_outgoing_address 配置 iptables

在 Linux 上为 Squid 的 tcp_outgoing_address 配置 iptables

我的机器上的 IP

root@poweredge:/var/log/squid# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:1e:4f:cd:c1:5f brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.212/24 brd 192.168.1.255 scope global enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::21e:4fff:fecd:c15f/64 scope link 
       valid_lft forever preferred_lft forever
3: wlx74da388c32c7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 74:da:38:8c:32:c7 brd ff:ff:ff:ff:ff:ff
    inet 172.16.11.107/24 brd 172.16.11.255 scope global dynamic noprefixroute wlx74da388c32c7
       valid_lft 3531sec preferred_lft 3531sec
    inet6 fe80::4e86:c190:1e45:4722/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

我想使用 连接到 Squid 代理192.168.1.212,如果我使用端口 11000 进行连接,我希望 Squid 让流量流出172.16.11.107IP

下面是我的 squid.conf 的相关部分

http_port 11000 name=port_11000
acl port_11000_acl myportname port_11000
tcp_outgoing_address 172.16.11.107 port_11000_acl

据我所知,上述配置对于 Squid 来说应该足够了,但在 Linux 机器上,我还需要使用 iptables。我从未使用过 IP 表。

我需要对 iptables 做什么才能使其工作?

答案1

您也可以使用策略路由来执行此操作。首先,在文件 /etc/iproute2/rt_tables 中添加路由表,例如:

255 local
254 main
253 default
0   unspec
2   squid

例如,以下命令将查看同一个路由表(假设您已执行上述编辑):

ip route list table squid

由于我输入了 ip route list table squid,因此输出将是一个新的命令行。表中没有任何内容可列出。用路由填充每个表。我将在您的信息中使用本地接口地址 172.16.11.0/24

/sbin/ip rule add from wlx74da388c32c7 pref 1000 table squid
/sbin/ip route add table 172.16.11.0/24 default via 172.16.11.1

这里假设你的wlx74da388c32c7接口网关是172.16.11.1 那么就可以了~

相关内容