Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7398863
  • 博文数量: 1755
  • 博客积分: 18684
  • 博客等级: 上将
  • 技术积分: 16227
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-02 10:28
个人简介

啥也没写

文章分类

全部博文(1755)

文章存档

2024年(1)

2023年(44)

2022年(39)

2021年(46)

2020年(43)

2019年(27)

2018年(44)

2017年(50)

2016年(47)

2015年(15)

2014年(21)

2013年(43)

2012年(143)

2011年(228)

2010年(263)

2009年(384)

2008年(246)

2007年(30)

2006年(38)

2005年(2)

2004年(1)

分类: LINUX

2011-12-21 11:08:22

奇科電腦技術小秘訣 主題:GRE VPN Tunnel
相信大家在現今的企業中,需要虛擬私人網路(Virtual Private Network, VPN)的機會越來越高了,但是VPN的設備價格這麼高昂,常常會讓企業望之卻步,今天奇科電腦就讓大家用最省錢的方式,建構您專屬的虛擬私人網路(Virtual Private Network, VPN)。
在Linux環境中,其實我們可以透過很簡單的方式來建立兩端的VPN Tunnel,我們今天採用GRE Tunnel,對GRE有興趣的同學可以看一下下面的連結噢。
GRE:Generic Routing Encapsulation (GRE)
讓我們來一下GRE的header
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C|R|K|S|s|Recur| Flags | Ver | Protocol Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum (optional) | Offset (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Key (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number (optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Routing (optional)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



Read more:




我們分別來看看每個欄位在做什麼的

Flags :欄位大小2個bytes,以bit來做定義後續欄位(從bit 0 ~ bit 15)。
Protocol type:欄位大小2個bytes,定義通訊協定類型,一般來說,會定義為Ethernet protocol。
Checksum:欄位大小2個bytes,包含GRE checksum,用來檢查GRE的表頭及payload。
Offset:欄位大小2個bytes,主要是用來做來源路由(Source route)用。
Key:欄位大小4個bytes,用來認證封包是否來自信任端(4個數字)。
Sequence number:欄位大小4個bytes,包含了32個bits整數,於封裝時插入。
Routing:欄位大小4個bytes,包含要繞送(routing)時需要的資訊。

實作環境~
作業系統:Linux
核心(kernel)版本:2.6.31
目標:讓Site A與Site B可以透過GRE Tunnel以Private IP來做溝通。
網路架構如下圖(subnet mask均是255.255.255.0)


---- ---- ---- ----
| A |----|B |---網際網路---|C |-----|D |
---- ---- ---- ----
Site甲 Site乙

Site 甲
A : IP 192.168.0.1 netmask 255.255.255.0 Gateway 192.168.0.254

B : 有兩個NIC 是路由器的角色
內部NIC IP 192.168.0.254 netmask 255.255.255.0
外部NIC IP 211.72.195.1 netmask 255.255.255.0

Site 乙
C : 有兩個NIC 是路由器的角色
內部NIC IP 192.168.2.254 netmask 255.255.255.0
外部NIC IP 61.202.178.1 netmask 255.255.255.0

D:IP 192.168.2.1 netmask 255.255.255.0 Gateway 192.168.2.254



讓我們先來設定Site 甲的部分
# ip tunnel add site_a_to_site_b mode gre remote 61.202.178.1 local 211.72.195.1
新增一個Tunnel的介面叫做site_a_to_site_b,封裝模式採用GRE

#ip addr add 192.168.0.2 dev site_a_to_site_b
為這個新增的介面指定一個內部IP

#ifconfig site_a_to_site_b up
啟用這個Tunnel介面,沒有啟用的話,沒有辦法做下一步驟噢

#ip route add 192.168.2.0/24 dev site_a_to_site_b
指定要往site B內部網路的封包從site_a_to_site_b這個介面繞送出去

再來就是Site 乙啦,指令說明請比對Site 甲的部分囉

#ip tunnel add site_b_to_site_a mode gre remote 211.72.195.1 local 61.202.178.1

#ip addr add 192.168.0.2 dev site_b_to_site_a

#ifconfig site_b_to_site_a up

#ip route add 192.168.0.0/24 dev site_b_to_site_a

後記,由於GRE的表頭共有20個bytes,所以在新增的Tunnel的介面上MTU會被調整成如下

Site_a_to_site_b Link encap:UNSPEC HWaddr 3B-78-03-5F-00-00-20-00-00-00-00-00-00-00-00-00
inet addr:192.168.0.2 P-t-P:192.168.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MTU:1476 Metric:1

转:
阅读(4190) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~