Go語言建立ip隧道 go語言開發(fā)環(huán)境搭建

為樹莓派添加he的ipv6隧道

這次安裝he隧道的過程真的是充滿了艱辛,來來回回折騰了好幾天,各種查資料和發(fā)郵件發(fā)帖求教,相當(dāng)心累了。

成都創(chuàng)新互聯(lián)公司是專業(yè)的鶴山網(wǎng)站建設(shè)公司,鶴山接單;提供成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營銷網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行鶴山網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

先大概說下我對he隧道的理解吧,這是一個6in4的協(xié)議,即把ipv6數(shù)據(jù)包封裝在ipv4包里進(jìn)行通信。流程簡述如下:

要完成這個過程需要以下幾個地址都是可訪問的:

至于最后客戶端的ipv6地址,用途是給外網(wǎng)的ipv6服務(wù)器做身份標(biāo)識,比如在test-ipv6點(diǎn)抗 的測試中,展示的本機(jī)ipv6地址就是這個client ipv6 address。

說完大致的原理,來看下給樹莓派創(chuàng)建he隧道的過程。

先保證自己有一個可ping通的公網(wǎng)ip,詳情可以咨詢自己的運(yùn)營商。

登錄he的官網(wǎng): tunnelbroker點(diǎn)虐 ,注冊賬號啥的就不說了,直接點(diǎn)擊創(chuàng)建隧道,這里有兩種,我們選第一個regular tunnel就可以了。然后是填公網(wǎng)ip和服務(wù)器地址,事先可以測試一下各個服務(wù)器的延遲,具體教程很多這里就不重復(fù)了。

然后是重點(diǎn):隧道創(chuàng)建完成后一定要先確認(rèn)server ipv6 address是外網(wǎng)可Ping通的,不然結(jié)局就是我們本地可以發(fā)送ipv6數(shù)據(jù)到服務(wù)器,但是收不到任何響應(yīng),因?yàn)榉?wù)器的ipv6不通就表示外網(wǎng)的服務(wù)進(jìn)不來。

推薦一個測試網(wǎng)站: 。

這里以ipv6.google點(diǎn)抗 為例,把自己的server ipv6 address輸進(jìn)去點(diǎn)擊Ping now之后就能看到結(jié)果,基本和普通的ping測試沒啥區(qū)別。

如果自己的server ipv6 address沒法ping通,要么發(fā)郵件到he的開發(fā)團(tuán)隊(duì)讓他們幫忙看,要么自己再向運(yùn)營商換個公網(wǎng)ip然后重新創(chuàng)建個tunnel,不過一般重啟下光貓就能有個新的公網(wǎng)ip了。

我的光貓只給了一個千兆口和一個百兆口,但家里的設(shè)備較多,又想讓它們都能用滿我200M寬帶的全部帶寬,就接了一個千兆路由器。但這里要注意的是,he隧道雖然可以支持nat穿透,但為了避免麻煩,最好只有一層穿透,即內(nèi)網(wǎng)都在同一個網(wǎng)關(guān)后面,這就需要把光貓出來的網(wǎng)線插到路由器的LAN口,讓路由器只充當(dāng)一個交換機(jī)的角色。

所以我的網(wǎng)絡(luò)連接就是,光貓通過光纖接外網(wǎng),把千兆LAN口接到路由器的LAN口上,其他所有的設(shè)備都接到路由器上,不管有線還是無線(有線當(dāng)然也只能接路由器的LAN口哈)。這個連接下,我所有的設(shè)備都同處一個網(wǎng)段,后期方便使用局域網(wǎng)的文件共享服務(wù)。

接著登陸光貓的管理界面,找到樹莓派,復(fù)制其mac地址。

然后找到光貓對應(yīng)的靜態(tài)ip設(shè)置界面,將該mac地址與ip綁定。

當(dāng)然設(shè)置靜態(tài)ip的事也可以通過樹莓派自身來完成,不過我覺得相比而言更麻煩一點(diǎn),就直接在光貓統(tǒng)一管理了。

補(bǔ)充一點(diǎn),如果光貓有IPV6 DHCP服務(wù),最好讓其處于默認(rèn)狀態(tài),不確定的設(shè)置前可以先重置一下光貓。我之前不小心設(shè)置了一下忘了還原,就也一直連接不上。

在局域網(wǎng)內(nèi),用其他電腦ssh登錄進(jìn)樹莓派,當(dāng)然如果你的樹莓派本身也接了顯示器鍵鼠啥的用它自己也行。

在tunnelbroker的頁面,打開剛剛創(chuàng)建的tunnel,在example configurations里選擇Debian/Ubuntu,然后復(fù)制里面的內(nèi)容。(假設(shè)里用的就是樹莓派的默認(rèn)系統(tǒng)raspbian)

編輯樹莓派的/etc/network/interfaces文件,把剛剛復(fù)制的內(nèi)容粘貼進(jìn)去,同時把local后面的地址改成內(nèi)網(wǎng)剛剛配的靜態(tài)ip。

我的配置文件如下,已隱去ipv6地址,實(shí)際中替換為自己的真實(shí)地址即可

保存文件,重啟網(wǎng)絡(luò),可以用命令 sudo system networking restart,當(dāng)然也可以直接重啟樹莓派。

重啟之后用ifconfig看看,如果有he-ipv6這個隧道就說明創(chuàng)建成功了。

最直接的方式就是用ping6這個命令看看通不通。

然后可以用第1步提到的測試網(wǎng)站看看自己的client ipv6 address能不能通,以保證在之后的訪問中其他網(wǎng)站的服務(wù)器可以識別自己的身份。

如果上面沒有ping通的話,可以再用ifconifg看看各個接口的信息,注意he-ipv6那部分,有兩個重要字段,即RX packets 和 TX packets,下面簡稱RX和TX。

一般現(xiàn)代的操作系統(tǒng)不管是樹莓派、路由器、還是光貓,它們都是支持ipv6的,包括這種6in4協(xié)議,如果發(fā)現(xiàn)自己連不通可以試試重裝系統(tǒng),恢復(fù)出廠設(shè)置等方式。

由于ipv6是公網(wǎng)地址,直接暴露在網(wǎng)上還是挺危險的,可以考慮加一些防火墻,詳情可以參考其他的文章。

【IPv6】使用tunnelbroker開啟IPv6隧道

參考:

本文以Ubuntu系統(tǒng)的騰訊云VPS為測試機(jī)。ECS 里面的系統(tǒng)配置,由于騰訊云的網(wǎng)絡(luò)不支持IPv6,所以他官方鏡像里面相關(guān)的設(shè)置都是被禁用了的,想要使用 IPv6 就要做一些修改。首先修改 /etc/sysctl.conf ,將其中兩條禁用IPv6的設(shè)置更改為0:

1、登錄 注冊,然后在郵件里認(rèn)證。

2、Create Regular Tunnel

IPv4 Endpoint (Your side):填寫你的IPV4。

一般服務(wù)器都有ping功能,路由器可能關(guān)閉了ICMP,需要開通。否則會報錯:

IP is not ICMP pingable. Please make sure ICMP is not blocked. If you are blocking ICMP, please allow 66.220.2.74 through your firewall.

3、隧道服務(wù)器,默認(rèn)選的是 Los Angeles, CA, US

4、點(diǎn)擊Create Tunnel

可以看到自己剛才輸入的IPV4,及IPV6。

5、點(diǎn)擊Example Configurations,選擇自己的OS。配置后重啟!即可使用。測試如下:

Lvs ip-tun(ip隧道)的原理和實(shí)現(xiàn)

采用Nat技術(shù)時,由于請求和響應(yīng)報文都必須經(jīng)過調(diào)度器地址重寫,當(dāng)客戶請求越來越多時,調(diào)度器的處理能力將成為瓶頸。為了解決這個問題,調(diào)度器把請求報文通過IP隧道轉(zhuǎn)發(fā)至真實(shí)服務(wù)器,而真實(shí)服務(wù)器將響應(yīng)直接返回給客戶,所以調(diào)度器只處理請求報文。由于一般網(wǎng)絡(luò)服務(wù)器應(yīng)答比請求報文大許多,采用VS/TUN技術(shù)后,集群系統(tǒng)的最大吞吐量可以提高10倍。

實(shí)驗(yàn)規(guī)劃:

(1).將物理機(jī)上的VMnet1網(wǎng)卡的ip設(shè)置為200.168.10.4,子網(wǎng)掩碼設(shè)置為255.255.255.0

(2).為Lvs服務(wù)器配置一塊網(wǎng)卡eth0,網(wǎng)絡(luò)連接設(shè)置為VMnet1,設(shè)置IP地址:ifconfig eth0 200.168.10.1

(3).為兩臺真實(shí)服務(wù)器配置一塊網(wǎng)卡,網(wǎng)絡(luò)連接設(shè)置為VMnet1,設(shè)置IP地址:ifconfig eth1 200.168.10.2和ifconfig eth1 200.168.10.3

(4).為Lvs服務(wù)器和兩臺真實(shí)服務(wù)器都配置一個tunl0網(wǎng)卡,配置為單獨(dú)的網(wǎng)段:ifconfig tunl0 200.168.10.10 netmask 255.255.255.255 up,route add -host 200.168.10.10 dev tunl0

(5).Lvs ip-tun服務(wù)器腳本:

ipvsadm -C

ipvsadm -A -t 200.168.10.10:80 -s rr(-t:采用tcp協(xié)議;-s:模式參數(shù);rr:采用輪叫算法)

ipvsadm -a -t200.168.10.10:80 -r 200.168.10.2 -i(-r:真實(shí)服務(wù)器ip;-i:ip-tun模式)

ipvsadm -a -t200.168.10.10:80 -r 200.168.10.3 -i

(6).真實(shí)服務(wù)器腳本:

echo "1" /proc/sys/net/ipv4/conf/tunl0/arp_ignore

echo "2" /proc/sys/net/ipv4/conf/tunl0/arp_announce

echo "1" /proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" /proc/sys/net/ipv4/conf/all/arp_announce

注:目前只有Unix/Linux版本的操作系統(tǒng)才具備ip-tun網(wǎng)卡

Golang 端口轉(zhuǎn)發(fā)工具

初學(xué)go,寫一個端口轉(zhuǎn)發(fā)工具。很方便的小工具,希望能對大家學(xué)習(xí)go語言有所幫助。

```Golang

package main

import(

"fmt"

"io"

"net"

"sync"

)

varlocksync.Mutex

vartrueList[]string

varipstring

varliststring

funcmain(){

ip="0.0.0.0:888"

server()

}

funcserver(){

fmt.Printf("Listening%s",ip)

lis,err:=net.Listen("tcp",ip)

iferr!=nil{

fmt.Println(err)

return

}

deferlis.Close()

for{

conn,err:=lis.Accept()

iferr!=nil{

fmt.Println("建立連接錯誤:%v\n",err)

continue

}

fmt.Println(conn.RemoteAddr(),conn.LocalAddr())

gohandle(conn)

}

}

funchandle(sconnnet.Conn){

defersconn.Close()

ip:="127.0.0.1:8888"

dconn,err:=net.Dial("tcp",ip)

iferr!=nil{

fmt.Printf("連接%v失敗:%v\n",ip,err)

return

}

ExitChan:=make(chanbool,1)

gofunc(sconnnet.Conn,dconnnet.Conn,Exitchanbool){

io.Copy(dconn,sconn)

ExitChan-true

}(sconn,dconn,ExitChan)

gofunc(sconnnet.Conn,dconnnet.Conn,Exitchanbool){

io.Copy(sconn,dconn)

ExitChan-true

}(sconn,dconn,ExitChan)

-ExitChan

dconn.Close()

}

本文題目:Go語言建立ip隧道 go語言開發(fā)環(huán)境搭建
文章位置:http://muchs.cn/article4/ddehgie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站微信公眾號、網(wǎng)站收錄App開發(fā)、關(guān)鍵詞優(yōu)化、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化