關(guān)于透明ip代理的理論知識
如今的ip代理已經(jīng)和我們在網(wǎng)絡(luò)上面的生活分不開了,畢竟大量的人群上網(wǎng)的時(shí)間覆蓋了我們所有,科技時(shí)代的發(fā)展只會越來越重視網(wǎng)絡(luò),而且這個(gè)環(huán)境也會更加有規(guī)則,更加健康!
透明代理怎么實(shí)現(xiàn)換IP?
假設(shè)A為內(nèi)部網(wǎng)絡(luò)客戶機(jī),B為外部網(wǎng)絡(luò)服務(wù)器,C為防火墻。當(dāng)A對B有連接請求時(shí),TCP連接請求被防火墻截取并加以監(jiān)控。截取后當(dāng)發(fā)現(xiàn)連接需要使用代理服務(wù)器時(shí),A和C之間首先建立連接,然后防火墻建立相應(yīng)的代理服務(wù)通道與目標(biāo)B建立連接,由此通過代理服務(wù)器建立A和目標(biāo)地址B的數(shù)據(jù)傳輸途徑。從用戶的角度看,A和B的連接是直接的,而實(shí)際上A是通過代理服務(wù)器C和B建立連接的。反之,當(dāng)B對A有連接請求時(shí)原理相同。由于這些連接過程是自動(dòng)的,不需要客戶端手工配置代理服務(wù)器,甚至用戶根本不知道代理服務(wù)器的存在,因而對用戶來說是透明的。
以上為百度百科的解釋,此處防火墻也可以為路由器,路由器可以截獲通過的網(wǎng)絡(luò)數(shù)據(jù),而將其轉(zhuǎn)發(fā)到代理服務(wù)
對于網(wǎng)絡(luò)數(shù)據(jù)的轉(zhuǎn)發(fā)可以使用Linux的iptables命令進(jìn)行設(shè)置
在路由器上使用iptables設(shè)置過轉(zhuǎn)發(fā)規(guī)則后,路由器可以將收到的client程序的tcp數(shù)據(jù)轉(zhuǎn)發(fā)給特定端口號,代理程序可在該端口號上使用tcp socket進(jìn)行監(jiān)聽,獲取連接后即可像普通socket程序一樣進(jìn)行與client端進(jìn)行通訊;
代理程序與server端連接時(shí),需要獲取到server端的ip地址與端口號,該信息可以通過getsockopt的方式獲取
getsockopt(clifd,SOL_IP,SO_ORIGINAL_DST,&orig_addr,&sin_size);
SO_ORIGINAL_DST是一個(gè)socket參數(shù)(SOL_IP層的),使用時(shí)需要包含#include頭文件。
如果成功orig_addr將是客戶真正需要去的方向
之后代理程序可以將client的tcp轉(zhuǎn)發(fā)server端,然后再將server端的數(shù)據(jù)轉(zhuǎn)發(fā)給client端,即可實(shí)現(xiàn)透明代理。相信你通過了解透明ip代理對這個(gè)軟件有了一定的認(rèn)識,對后期根據(jù)自己的需求判斷屬于自己的換ip地址軟件更加容易選擇的多。
版權(quán)聲明:本文為ipadsl.cn所屬公司原創(chuàng)作品,未經(jīng)許可,禁止轉(zhuǎn)載!