Iptables

僅用於傳出流量的 Squid 透明代理

  • May 28, 2012

我有一個 API 有點重的 Rails 伺服器,所以我想在所有埠 80 活動和現實世界之間執行一個 Squid 記憶體透明代理。但是,我不需要傳入流量通過該 Squid 代理。例如

Rails -> Squid -> Internet
Internet -> Rails

我無法想像這是一個不尋常的設置,但我似乎無法在網上找到任何範例。遵循透明的 Squid 教程剛剛結束,所有進入 Squid 代理的傳入流量和傳出流量似乎直接經過它(儘管我對此不太確定)。

這是ifconfig的輸出。我想這將與任何答案有關。

eth0      Link encap:Ethernet  HWaddr f2:3c:91:ae:33:6b  
     inet addr:176.58.105.173  Bcast:176.58.105.255  Mask:255.255.255.0
     inet6 addr: fe80::f03c:91ff:feae:336b/64 Scope:Link
     UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
     RX packets:330029 errors:0 dropped:0 overruns:0 frame:0
     TX packets:185242 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:1000 
     RX bytes:333723993 (333.7 MB)  TX bytes:34410551 (34.4 MB)
     Interrupt:44 

lo        Link encap:Local Loopback  
     inet addr:127.0.0.1  Mask:255.0.0.0
     inet6 addr: ::1/128 Scope:Host
     UP LOOPBACK RUNNING  MTU:16436  Metric:1
     RX packets:684735 errors:0 dropped:0 overruns:0 frame:0
     TX packets:684735 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:0 
     RX bytes:54837497 (54.8 MB)  TX bytes:54837497 (54.8 MB)

我不會費心設置透明代理。相反,只需在 127.0.0.1:3128 上執行 Squid,然後使用 Net::HTTP::Proxy 進行 API 呼叫。文件在這裡。我不建議通過代理啟動所有內容,而是轉移特定呼叫,直到您對設置感到滿意為止。

關於調整 Squid 記憶體的大小,如果分配 128MB 的記憶體,Squid 總共將使用大約 196MB,包括記憶體和成本。如果您認為您將接近機器的最大記憶體,我會設置一些交換空間監控,這通常是您超額訂閱記憶體的最佳指標。

引用自:https://serverfault.com/questions/393366