首頁>技術>

inc是一個P2P的隧道軟體,可以在客戶端節點間使用UDP打洞,讓流量不再像傳統VPN那樣經過中轉伺服器轉發,支援多個公網節點互聯。這些特性決定它可以更小的佔用公網節點頻寬,速度更快,滿足大流量多節點資料轉發。

它是開源軟體,支援眾多系統,pfsense 、opnsense、openwrt、 linux、 windows 、bsd等,配合動態路由協議,我們可以很方便的構建完全屬於自己的SDWAN網路。下面,我將以OPENWRT為例一步一步構建一個完整的SDWAN系統。

SD-WAN定義

SD-WAN能夠提供與軟體定義網路(SDN)相關的優勢,但在廣域網中,通過自動化網路部署和管理,SDN和SD-WAN虛擬化資源,以提高效能、加速服務交付並提高可用性,同時降低總體擁有成本。

SD-WAN通過測量基本網路流量指標,如延遲、丟包、抖動和可用性來執行。通過這些資料,SD-WAN能夠主動響應實時網路條件,為每個資料包選擇最佳路徑。

先決條件:至少有一端是公網地址,此處可以使用動態域名,要想實現打洞兩端必須都是公網地址,IPV4 IPV6都可以。

1 安裝openwrt,在openwrt中安裝quagga 及tinc

opkg update

opkg tinc

opkg install quagga quagga-zebra quagga-watchquagga quagga-vtysh quagga-ospfd quagga-bgpd

2 配置tinc

(1)公網節點

定義網路名稱,如NETNAME=yunmisdwan

cd /etc/tinc/yunmisdwan/

ls -la

目錄:hosts

tinc.conf

tinc-down

tinc-up

tinc.conf為tinc的配置檔案,tinc-down,tinc-up為啟動tinc時執行的指令碼,一般用作啟動網路,hosts資料夾中存的是各個結點的連線交換資訊。

nano/etc/tinc/yunmisdwan/tinc.conf

Name = Yunmisdwan_Pulbic_Node

Interface = tun0

Mode = switch

nano /etc/tinc/yunmisdwan/tinc-up

#!/bin/sh

ip link set $INTERFACE up

ip addr add 10.1.252.1/24 dev $INTERFACE

nano /etc/tinc/yunmisdwan/tinc-down

#!/bin/sh

ip addr del 10.1.252.1/24 dev $INTERFACE

ip link set $INTERFACE downAddress = 3bd102c8e9b7.sn.mynetname.net

Subnet = 10.1.252.1/32

Port = 655

mkdir hosts

cd hosts

建立節點資訊,此處使用tincd -n yummisdwan -K 生成公鑰時會自動在節點檔案尾部加入公鑰。

nano Yunmisdwan_Public_Node

Address = Address = 3bd102c8e9b7.sn.mynetname.net

Subnet = 10.1.252.1/32

Port = 655

openwrt中要注意兩點,(1)一個安裝ip-full軟體包,否則不能使用ip add新增IP,會使介面UP失敗。

opkg install ip-full

(2)啟動引數要在/etc/config/tinc中修改

nano /etc/config/tinc

config tinc-net yunmisdwan

option enabled 1

## Daemon Configuration (cmd arguments)

#option generate_keys 0

#option key_size 2048

#option logfile /tmp/log/tinc.NETNAME.log

#option debug 3

## Server Configuration (tinc.conf)

#option AddressFamily any

#option BindToAddress 127.0.0.1

#option BindToInterface lo

#list ConnectTo peer1

#option DirectOnly 0

#option Forwarding internal

#option GraphDumpFile /tmp/log/tinc.NETNAME.dot

#option Hostnames 0

#option IffOneQueue 0

#option Interface NETNAME

#option KeyExpire 3600

#option MACExpire 600

#option MaxTimeout 900

#option Mode router

option Name Yunmisdwan_Public_Node

#option PingInterval 60

#option PingTimeout 5

#option PriorityInheritance 0

#option PrivateKeyFile /etc/tinc/NETNAME/rsa_key.priv

#option ProcessPriority normal

#option ReplayWindow 16

#option StrictSubnets 0

#option TunnelServer 0

#option UDPRcvBuf x

#option UDPSndBuf x

config tinc-host Yunmisdwan_Public_Node

option enabled 1

option net yunmisdwan

#list Address example.com

#option Cipher blowfish

#option ClampMSS yes

#option Compression 0

#option Digest sha1

#option IndirectData 0

#option MACLength 4

#option PMTU 1514

#option PMTUDiscovery yes

option Port 655

option Subnet 10.1.252.0/24

到此公網節點配置完成

客戶端節點與公網節點基本一樣

仍要注意以下幾個檔案

tinc.conf

nano/etc/tinc/yunmisdwan/tinc.conf

Name = openwrt_node

Interface = tun0

Mode = switch

ConnectTo = Yunmisdwan_Public_Node(如果有多活公網節點,在此處加入多個)

tinc-up tinc-donw指令碼中的IP地址要根據情況修改

nano /etc/config/tinc

config tinc-net yunmisdwan

option enabled 1

## Daemon Configuration (cmd arguments)

#option generate_keys 0

#option key_size 2048

#option logfile /tmp/log/tinc.NETNAME.log

#option debug 3

## Server Configuration (tinc.conf)

#option AddressFamily any

#option BindToAddress 127.0.0.1

#option BindToInterface lo

#list ConnectTo peer1

#option DirectOnly 0

#option Forwarding internal

#option GraphDumpFile /tmp/log/tinc.NETNAME.dot

#option Hostnames 0

#option IffOneQueue 0

#option Interface NETNAME

#option KeyExpire 3600

#option MACExpire 600

#option MaxTimeout 900

#option Mode router

option Name opewrt_node

#option PingInterval 60

#option PingTimeout 5

#option PriorityInheritance 0

#option PrivateKeyFile /etc/tinc/NETNAME/rsa_key.priv

#option ProcessPriority normal

#option ReplayWindow 16

#option StrictSubnets 0

#option TunnelServer 0

#option UDPRcvBuf x

#option UDPSndBuf x

config tinc-host Yunmisdwan_Public_Node

option enabled 1

option net yunmisdwan

#list Address example.com

#option Cipher blowfish

#option ClampMSS yes

#option Compression 0

#option Digest sha1

#option IndirectData 0

#option MACLength 4

#option PMTU 1514

#option PMTUDiscovery yes

option Port 655

option Subnet 10.1.252.0/24

nano/etc/tinc/yunmisdwan/hosts/openwrt_node

Subnet = 10.1.252.2/32

Port = 655

同樣,在執行tincd -n yunmisdwan -K後會在節點檔案後加入公鑰。

最後使用scp程式將hosts目錄同步,使各節點能相互使用公鑰私鑰。

執行/etc/init.d/tinc start

或者使用tincd -n yunmisdwan -D --debug=3排錯。

我測試時發現有不能正常啟動的情況,如果不能正常啟動,則在/etc/rc.local檔案中加入自動啟動命令

nano /etc/rc.local

# Put your custom commands here that should be executed once

# the system init finished. By default this file does nothing.

/etc/init.d/tinc stop

tincd -n yunmisdwan

exit 0

至此tinc配置完成。

3. 配置介面及firewall

在這就 不詳細介紹了,在openwrtWEB頁面中配置非常簡單,主要是新增interface,放行進入的資料

配置完成介面與firewall後,可以互PING一下測試tinc是否正常。

4.配置OSPF

ospf也非常簡單,注意介面就可以了。

nano /etc/quagga/ospfd.conf

password zebra

!

#access-list vty permit 127.0.0.0/8

#access-list vty deny any

!

line vty

access-class vty

interface yunmisdwan(注意此處要用新增的介面而不是tinc生成的TUN介面)

ip ospf priority 0

!

router ospf

ospf router-id 4.4.4.4

network 10.1.252.0/24 area 0.0.0.1

network 10.1.254.0/24 area 0.0.0.1

配置完成後使用/etc/init.d/quagga restart啟動動態路由協議。

也可使用nc 127.0.0.1 2604進入quagga控制檯,檢視及修改配置

sdwan配置全部完成。

最新評論
  • 1 #

    tinc 大流量 cpu會負載均衡嗎?

  • 2 #

    老榮,老榮,寫的不錯

  • 3 #

    希望越來越多人關注 tinc

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Egg伺服器基礎功能