※ 引述《[email protected] (ccy.twbbs.org)》之銘言:
> 目前有兩部電腦A,B如下:
> Client -> A -> B
> 問題是這樣
> 假設 A IP為 210.59.229.19,而
> B IP為 122.252.32.134
> 假設本人管理的電腦為A,Client端為一般使用者,B電腦為跑Apache的服務。
> 因 A電腦 並無架設Apache,故希望讓使用者能連到A IP (port為80)後,
> 將封包重新導向至B IP (port 80)。
> 之前我有用過socket將連至 A IP (80)的連線,導向至 B IP (80),
> 但由B主機中發現,連入網頁的記錄都是記錄成 A的IP。
> 所以後來便又將socket關掉。
> 我用的OS為 FreeBSD-7.0,請問有啥較簡單方法,可以讓使用者在連線到A電腦,
> 重新導向至B電腦時,可以使B電腦的記錄為使用者的IP,而不是A電腦的IP?
> 謝謝。
deer 上的沒轉出來,到 bs2 上再貼一次,順便補充一些東西。
==
你要在 A 的伺服氣上架 haproxy 之類的軟體,在 HTTP header 裡加上
X-Forwarded-For 這個欄位。
然後在 B 主機的 apache2 上裝 mod_rpaf2,或是 mod_extract_forwarded2,
認定 A 送過來的 X-Forwarded-For 是合法的位置。
如果 B 主機上是 lighttpd 或 nginx,都有對應的設定可以將
X-Forwarded-For 轉換掉。
==
# mod_extract_forwarded2 example
AddAcceptForwarder 10.1.1.1
AddAcceptForwarder 10.1.1.2
AddAcceptForwarder 10.1.1.3
AddAcceptForwarder 10.1.1.4
AddAcceptForwarder 10.1.1.5
# mod_rpaf2 example
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 10.1.1.1 10.1.1.2 10.1.1.3 10.1.1.4 10.1.1.5
RPAFheader X-Forwarded-For
兩個都用過很長一段時間,應該沒什麼問題。
--
※ Origin: 交大次世代(bs2.to)
◆ From: bsd2.cs.nctu.edu.tw