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 #
-
2 #
老榮,老榮,寫的不錯
-
3 #
希望越來越多人關注 tinc
tinc 大流量 cpu會負載均衡嗎?