使用如下的配置拓扑:
|----------------| |----------------|
| | ens33 ens33 | |
| Client1 |---------------------------------------| Server |
| gre:20.0.0.2 | 192.168.2.25 | 192.168.2.34 | gre:20.0.0.1 |
| | | | |
|----------------| | |----------------|
|
|
|----------------| |
| | ens33 |
| Client2 |---------------------|
| gre:20.0.0.3 | 192.168.2.26
| |
|----------------|
先看一下服务端的配置,mgre0为新创建的gre隧道设备,这里没有指定远端remote地址,表示可接受多个远端地址的连接。key值用于连接的合法性鉴别,但不是必须项:
# ip addr add 192.168.2.34/24 dev ens33
#
# ip tunnel add mgre0 mode gre local 192.168.2.34 key 123456
# ip link set dev mgre0 up
# ip address add 20.0.0.1/24 dev mgre0
由于没有配置隧道的远端地址,需要手动添加邻居项,根据以上拓扑,添加两个邻居表项,注意这里的链路地址为GRE端点IP地址:
# ip neigh add 20.0.0.2 lladdr 192.168.2.25 dev mgre0
# ip neigh add 20.0.0.3 lladdr 192.168.2.26 dev mgre0
查看server主机的路由和邻居表项配置:
# ip route
20.0.0.0/24 dev mgre0 proto kernel scope link src 20.0.0.1
192.168.2.0/24 dev ens33 proto kernel scope link src 192.168.2.34
#
# ip neigh
20.0.0.3 dev mgre0 lladdr 192.168.2.26 PERMANENT
20.0.0.2 dev mgre0 lladdr 192.168.2.25 PERMANENT
再看一下客户端1的配置,配置和server注意相同的key值,并且添加server主机的地址到邻居表中:
# ip addr add 192.168.2.25/24 dev ens33
#
# ip tunnel add gre1 mode gre local 192.168.2.25 key 123456
# ip link set dev gre1 up
# ip address add 20.0.0.2/24 dev gre1
#
# ip neighbor add 20.0.0.1 lladdr 192.168.2.34 dev gre1
客户端2配置:
# ip addr add 192.168.2.26/24 dev ens33
#
# ip tunnel add gre1 mode gre local 192.168.2.26 key 123456
# ip link set dev gre1 up
# ip address add 20.0.0.3/24 dev gre1
#
# ip neighbor add 20.0.0.1 lladdr 192.168.2.34 dev gre1
如果在客户端1和2上分别配置彼此的IP地址到邻居表中,以上三个主机都是可通过GRE隧道互通的。
ICMP请求报文: