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

為樹莓派添加he的ipv6隧道

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

【IPv6】使用tunnelbroker開啟IPv6隧道

參考:

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

1、登錄 注冊,然后在郵件里認證。

2、Create Regular Tunnel

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

一般服務器都有ping功能,路由器可能關閉了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、隧道服務器,默認選的是 Los Angeles, CA, US

4、點擊Create Tunnel

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

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

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

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

實驗規(guī)劃:

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

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

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

(4).為Lvs服務器和兩臺真實服務器都配置一個tunl0網(wǎng)卡,配置為單獨的網(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服務器腳本:

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:真實服務器ip;-i:ip-tun模式)

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

(6).真實服務器腳本:

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 端口轉發(fā)工具

初學go,寫一個端口轉發(fā)工具。很方便的小工具,希望能對大家學習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://bm7419.com/article4/ddehgie.html

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

廣告

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

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