作者 主題: 請問squid transparent  (閱讀 5057 次)

0 會員 與 1 訪客 正在閱讀本文。

seye586

  • 懷疑的國中生
  • **
  • 文章數: 35
    • 檢視個人資料
請問squid transparent
« 於: 2010-02-27 11:07 »
大家好

我將squid 設為transparent 模式
也下了iptables redirect 到port 3128的command
確實時可以運作
可是為啥米tcpdump port 3128沒封包
封包不是轉到3128了嗎

然後我試一下stop squid

client 確實會變無法上網



apage

  • 活潑的大學生
  • ***
  • 文章數: 337
    • 檢視個人資料
回覆: 請問squid transparent
« 回覆 #1 於: 2010-02-27 21:00 »
大家好

我將squid 設為transparent 模式
也下了iptables redirect 到port 3128的command
確實時可以運作
可是為啥米tcpdump port 3128沒封包
封包不是轉到3128了嗎

然後我試一下stop squid

client 確實會變無法上網




應該不會沒封包, 至少在squid那台機器上看3128應該是有封包的
我的筆記
啊,就我的筆記阿...
-----以下兩個是屍體-----
AegisHK
Aegis
eAthena屍體
eathena

seye586

  • 懷疑的國中生
  • **
  • 文章數: 35
    • 檢視個人資料
回覆: 請問squid transparent
« 回覆 #2 於: 2010-02-27 22:36 »
謝謝你的回覆

試了幾次
在squid的主機 tcpdump port 3128
真的沒有封包
 
但是我clinet 透過squid主機上網
我在squid所設的http限制都有work

iptables -t nat -L -vn

PREROUTING -A -p tcp --dport 80 -j REDIRECT ---to-port 3128 流量確實有變化

之前在做測試
都只注意我所設的http限制有沒work

突然想說tcpdump 一下port 3128
沒封包....真的讓我很納悶

請大家指教...
謝謝...

apage

  • 活潑的大學生
  • ***
  • 文章數: 337
    • 檢視個人資料
回覆: 請問squid transparent
« 回覆 #3 於: 2010-02-27 22:39 »
你的 tcpdump 指令能 po  上來看看嗎?
我的筆記
啊,就我的筆記阿...
-----以下兩個是屍體-----
AegisHK
Aegis
eAthena屍體
eathena

hongbin

  • 憂鬱的高中生
  • ***
  • 文章數: 101
    • 檢視個人資料
回覆: 請問squid transparent
« 回覆 #4 於: 2010-02-27 22:41 »
應該不會有封包吧..

實際上的情況是, cleint 主機的http request 還是走 tcp port 80
,當經過nat 主機時,才因iptable 的redirect 作用,將tcp port 80 的request 轉成往squid  發出tcp port 3128 的request
,但因nat 及 squid 是同一台,所以封包並不會繞到網路上,因此應該在網路上應該不會有tcp port 3128 的封包


client--->nat---->squid(nat 及 squid 是同一台)
        --> 80---->3128

seye586

  • 懷疑的國中生
  • **
  • 文章數: 35
    • 檢視個人資料
回覆: 請問squid transparent
« 回覆 #5 於: 2010-02-27 22:46 »
原來如此....真的是受教
感謝..... :)

apage

  • 活潑的大學生
  • ***
  • 文章數: 337
    • 檢視個人資料
回覆: 請問squid transparent
« 回覆 #6 於: 2010-02-27 22:50 »
應該不會有封包吧..

實際上的情況是, cleint 主機的http request 還是走 tcp port 80
,當經過nat 主機時,才因iptable 的redirect 作用,將tcp port 80 的request 轉成往squid  發出tcp port 3128 的request
,但因nat 及 squid 是同一台,所以封包並不會繞到網路上,因此應該在網路上應該不會有tcp port 3128 的封包


client--->nat---->squid(nat 及 squid 是同一台)
        --> 80---->3128

如果這是真實情況,還是會有封包
只是有分對內跟對外網路的封包而已

我的想法是:  squid 是監聽 3128, 要求就必須從 3128進來
所以那個監聽 3128 的 "網路介面" 必有封包.

如果是兩個是同一台,不會繞到網路上,有可能是經過 127.0.0.1
看 iptables 語法沒有指定介面
應該是 lo,eth0,eth1...etc都有可能

不知道seye586是否能詳述?

這些都只是推論而已.
我的筆記
啊,就我的筆記阿...
-----以下兩個是屍體-----
AegisHK
Aegis
eAthena屍體
eathena

seye586

  • 懷疑的國中生
  • **
  • 文章數: 35
    • 檢視個人資料
回覆: 請問squid transparent
« 回覆 #7 於: 2010-02-27 23:15 »
squid 主機  eth0 wan
              eth1 lan 192.168.1.0/24

我下的iptables
iptables -t nat -A PREROUTING  -p tcp --dport 80 -j REDIRECT --to-port 3128


tcpdump port 3128 .........dump 主機上所有port 3128的封包
就這樣

早上是在公司試的
我很想現在家裡在試一下...

但是我家裡的lab掛了......|||  才幾天沒開機...
或許有相同環境的網友...可以試試看

謝謝
« 上次編輯: 2010-02-28 01:16 由 kenduest »

kenduest

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3675
    • 檢視個人資料
    • http://kenduest.sayya.org
回覆: 請問squid transparent
« 回覆 #8 於: 2010-02-27 23:16 »

tcpdump 預設 listen eth0,請指定參數 listen eth1 才會抓到封包。
I am kenduest - 小州

my website: http://kenduest.sayya.org/

apage

  • 活潑的大學生
  • ***
  • 文章數: 337
    • 檢視個人資料
回覆: 請問squid transparent
« 回覆 #9 於: 2010-02-28 01:07 »

squid 主機  eth0 wan
              eth1 lan 192.168.1.0/24

我下的iptables
iptables -t nat -A PREROUTING  -p tcp --dport 80 -j REDIRECT --to-port 3128


tcpdump port 3128 .........dump 主機上所有port 3128的封包
就這樣

早上是在公司試的
我很想現在家裡在試一下...

但是我家裡的lab掛了......|||  才幾天沒開機...
或許有相同環境的網友...可以試試看

謝謝

tcpdump -i 可以指定網路介面
目前為止最可能的情況就是沒指定介面抓取封包.

為求觀念正確,我從一開始接觸 iptables 就有指定網段與網路介面的習慣
只要 iptables 有指定介面或者網段, 在開設服務規則時,
就必須也跟瞭解服務監聽的TCP埠是在哪個網路介面上
這樣你使用 tcpdump 時自然能自己發現這個問題.

關於你這個狀況我唯一而且最直覺的想法是
只要服務有監聽TCP,而網路介面又沒壞的話(尤其你服務又正常),就不可能"沒有封包"
所以不要放棄...每個都試一試很快就知道答案了
« 上次編輯: 2010-02-28 01:16 由 kenduest »
我的筆記
啊,就我的筆記阿...
-----以下兩個是屍體-----
AegisHK
Aegis
eAthena屍體
eathena

hongbin

  • 憂鬱的高中生
  • ***
  • 文章數: 101
    • 檢視個人資料
回覆: 請問squid transparent
« 回覆 #10 於: 2010-02-28 10:41 »

squid 主機  eth0 wan
              eth1 lan 192.168.1.0/24

我下的iptables
iptables -t nat -A PREROUTING  -p tcp --dport 80 -j REDIRECT --to-port 3128


tcpdump port 3128 .........dump 主機上所有port 3128的封包
就這樣

早上是在公司試的
我很想現在家裡在試一下...

但是我家裡的lab掛了......|||  才幾天沒開機...
或許有相同環境的網友...可以試試看

謝謝

tcpdump -i 可以指定網路介面
目前為止最可能的情況就是沒指定介面抓取封包.

為求觀念正確,我從一開始接觸 iptables 就有指定網段與網路介面的習慣
只要 iptables 有指定介面或者網段, 在開設服務規則時,
就必須也跟瞭解服務監聽的TCP埠是在哪個網路介面上
這樣你使用 tcpdump 時自然能自己發現這個問題.

關於你這個狀況我唯一而且最直覺的想法是
只要服務有監聽TCP,而網路介面又沒壞的話(尤其你服務又正常),就不可能"沒有封包"
所以不要放棄...每個都試一試很快就知道答案了

如果是在同一台主機的話,其實這個部份很容易可以試出來,
假設主機A上(interface:eth0;IP:10.1.1.1)有開啟 tcp port 3128 這個服務,
若您在主機A上,直接去存取這個服務(例如:telnet 10.1.1.1 3128)
因為 Target IP 就是自己本身,作業系統並不需將封包再往下層(Layer 2 )傳送,
這時用tcpdump 去抓eth0 的封包,是沒有tcp port 3128 的封包,
但若是抓取lo 介面的封包,就可看到真正的封包傳輸...
« 上次編輯: 2010-02-28 10:43 由 hongbin »

alva

  • 活潑的大學生
  • ***
  • 文章數: 315
    • 檢視個人資料
回覆: 請問squid transparent
« 回覆 #11 於: 2010-03-02 08:53 »

我很好奇試了一下....

1. client 直接指定至 proxy(3128)用TCPDUMP是看的到封包 tcp 3128
2. client 不指定proxy(3128), 由iptables redirect 至proxy(3128)
   在本機用TCPDUMP是看不到到封包 tcp 3128, 收的到TCP 80

至於為什麼沒有收到下列有大大討論到
http://phorum.study-area.org/index.php?topic=60287.0

seye586

  • 懷疑的國中生
  • **
  • 文章數: 35
    • 檢視個人資料
回覆: 請問squid transparent
« 回覆 #12 於: 2010-03-02 10:11 »
oh yes 終於了...
我一直在想說應該和tcpdump這支程式擷取封包的方式有關
感謝指教......