Iptables

將所有非本地流量重定向到 socks 代理

  • December 5, 2020

是否可以將所有非本地流量重定向到 socks 代理?

所以,例如我有:

4 computers (clients A-D: 10.0.0.1-4 or dhcp)
1 computer with 2 network cards (gateway-server, eth0: 10.0.0.254, eth1: 192.168.1.1)
1 computer with 2 network cards (router, eth0: 192.168.1.254, eth1: public-ip)

我需要讓通過我的網關伺服器的所有電腦都使用安裝在網關伺服器上的 socks 代理,而無需配置每個客戶端的瀏覽器。

目的是記錄所有 url 和頻寬使用情況。

問題是..

  1. 是否可以?如果是這樣,該怎麼做?
  2. 如果不可能,還有什麼選擇?

很抱歉回答這個問題可能為時已晚。我是 stackexchange 的新手,今天看到它之前沒有可能回答。開始工作吧…

要將來自該 pc 的所有請求重定向到 socks 代理埠,您需要一些 iptables。假設您在埠 9050 上有該代理,並且您的卡的介面名稱是 eth0(我的意思是連接到最近的網際網路端的網關伺服器之一),因為您沒有提供數據……所以完成一些想像力:)

要啟用轉發並進行 NAT 偽裝,您需要先執行echo 1 > /proc/sys/net/ipv4/ip_forwardiptables 規則:

iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

並將內部網路客戶端的所有 Web 請求重定向到您需要的代理埠:

iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 9050
iptables -t nat -A PREROUTING -p tcp --destination-port 443 -j REDIRECT --to-port 9050

使用這些規則,請求會到達埠,在該埠上必須有良好配置的“某些東西”才能正常工作。祝你好運!或者如果我遲到了,也許你可以和我們分享你是如何處理這個問題的。

引用自:https://unix.stackexchange.com/questions/71429