除了上面 kenduest 大所提的
iptables -t mangle -PREROUTING -A -s 192.168.1.0/24 -j MARK --set-mark 1
還有這行 , 其實您想用 , 但也無法用到
若 squid 需出去抓 ... 這 client 封包已經不是內部來的 , 沒 mark 了
您的需求應該無法 "只用" iptables + routing table 達成
另外
iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -j SNAT --to <WAN2_eth1_IP>
因為妳的系統有兩個身分
routing table 允許兩者 , 所以會有在 eth0 出現 wan1 的機會
有了這行 , 仍會強制將準備丟出 eth0 的封包改成 wan2 ip
(但 postrouting 已經過了 routing table , 所以無法改變丟的介面)
iptables 是 routing 前後動作的工具 (pre , post)
所以可以想成 routing table 根本不知道 iptables 的存在
至於您設定 squid bind 某 ip , 會不會在另一個介面出現
那就要收封包看看了
您做了不少 lab 呢 ...
若您的架構允許 , 有個多此一舉的無聊 lab
1. 在前端多加一台 linux
2. 將 squid 的程式 chmod suid 給 uid=123
3. mangle OUTPUT 找出 uid=123 的封包做 set-tos xx (在 tos 欄位做 mark)
4. 前端那台 linux 便可在 PREROUTING 應用這個 mark 了
因為不確定 mangle 的 mark 到下一台能不能看到
印象中 tos 只有 5 種等級 , 確有 8 bit ... 仍有未用到的
不過到這裡 , 不用 lab 應該知道 iptables 怎麼搭配使用了吧 ...