Linux下GRE隧道配置
一、拓扑图:
本实验环境为两台centos 6.0 Linux系统,由于是测试使用,这里采用配置虚拟网卡的方式来解决设备只有一个网卡的情况。为两台服务器配置GRE隧道,隧道地址使用172.16.1.0/30网段。使得两台Linux的内网卡相互通信,从而打通两个内网,使得两个内网成为一个局域网。
二、虚拟网卡接口配置:
这里只例举虚拟网配置,真实网卡配置不阐述。
1、切换目录到网卡文件目录下:
[root@sssdz ~]# cd /etc/sysconfig/network-scripts/
2、查看网卡文件,找到网卡原文件eth0,启用虚接口可命名为eth0:0
首先复制网卡文件模版(在上面这个文件目录下操作):
[root@sssdz network-scripts]# cp ifcfg-eth0ifcfg-eth0:0
使用ls命令查看,会发现多出一块网卡文件ifcfg-eth0:0。编辑该网卡文件,配置上内网卡地址(20.0.1.1/24),注意此网卡文件里不配置网关,如果配置网关需加路由才能实现外网访问,这里只配置虚接口地址,不启用网关。
[root@Linux1 ~]# vi ifcfg-eth0:0
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0:0(设备名,注意修改为0:0)
ONBOOT=yes(设置为开机启动)
HWADDR=00:0c:29:08:48:63(虚接口MAC,即网卡实际MAC)
NETMASK=255.255.255.0
IPADDR=20.0.1.1
TYPE=Ethernet
IPV6INIT=no
3、关闭网络管控服务(不关闭,虚接口起不来):
[root@sssdz network-scripts]# serviceNetworkManager stop(注意大小写)
4、设置开机不启动网络管控服务:
[root@sssdz network-scripts]# chkconfigNetworkManager off
5、重启网络服务
[root@sssdz network-scripts]# servicenetwork restart
6、查询DNS配置是否正常:
[root@sssdz network-scripts]# vi/etc/resolv.conf
7、关闭防火墙(不关闭对虚接口地址有影响),并设置为开机不启动:
[root@sssdz network-scripts]# serviceiptables stop
[root@sssdz network-scripts]# chkconfigiptables off
配置完成后ping测试虚接口地址是否配置成功,也可使用ifconfig查看配置情况。
L2配置类似,这里不追述。
三、GRE tunnel隧道配置:
1、加载内核模块
首先查看内核模块文件:[root@sssdznetwork-scripts]# modprobe -l |grep ip_gre.ko
(以前的版本的kernal中的GRE模块都是ip_gre.o,而RHEL5中叫ip_gre.ko
)
本实验环境的路径如下:
然后加载GRE模块:
[root@sssdz network-scripts]# insmod/lib/modules/2.6.32-71.el6.x86_64/kernel/net/ipv4/ip_gre.ko
注意上图命令中,前半部分为默认路径,不同版本默认路径不同。
注:内核模块加载成功后我们需要设置开机自动加载,不然重启后需手动加载。这里我们写一个.Sh的执行文件,在后面讲述文件内容。
2、配置tunnel
Linux1:
[root@sssdz ~]# ip tunnel add tunnel0 mode gre remote 192.168.31.9 local 192.168.77.137 ttl 245
[root@sssdz ~]# ip link set tunnel0 up mtu 1400
[root@sssdz ~]# ip addr add 172.16.1.1/30 dev tunnel0
[root@sssdz ~]# ip addr add 172.16.1.1/30 peer 172.16.1.2/30 dev tunnel0
[root@sssdz ~]# ip route add 20.0.2.1/32 dev tunnel0
Linux2:
[root@sssdz ~]# ip tunnel add tunnel0 mode gre remote 192.168.77.137 local192.168.31.9 ttl 245
[root@sssdz ~]# ip link set tunnel0 up mtu 1400
[root@sssdz ~]# ip addr add 172.16.1.2/30 dev tunnel0
[root@sssdz ~]# ip addr add 172.16.1.2/30 peer 172.16.1.1/30 dev tunnel0
[root@sssdz ~]# ip route add 20.0.1.1/32dev tunnel0
3、配置tunnel开机执行文件
[root@sssdz ~]# vi /etc/init.d/gre.sh (两个Linux系统中同时创建该文件)
L1中gre.sh配置内容如下:
insmod /lib/modules/2.6.32-71.el6.x86_64/kernel/net/ipv4/ip_gre.ko(开机加载内核模块)
ip tunnel add tunnel0 mode gre remote 192.168.31.9 local 192.168.77.137 ttl 245
ip link set tunnel0 up mtu 1400
ip addr add 172.16.1.1/30 dev tunnel0
ip addr del 172.16.1.1/30 peer 172.16.1.2/30 dev tunnel0
ip addr add 172.16.1.1/30 peer 172.16.1.2/30 dev tunnel0
ip route add 20.0.2.1/32 dev tunnel0
chmod +x /etc/init.d/gre.sh
echo "/etc/init.d/gre.sh">> /etc/rc.d/rc.local(将该文件加载到开机启动的系统文件中)
L2中gre.sh配置内容如下:
insmod /lib/modules/2.6.32-71.el6.x86_64/kernel/net/ipv4/ip_gre.ko(开机加载内核模块)
ip tunnel add tunnel0 mode gre remote192.168.77.137 local 192.168.31.9 ttl 245
ip link set tunnel0 up mtu 1400
ip addr add 172.16.1.2/30 dev tunnel0
ip addr del 172.16.1.2/30 peer 172.16.1.1/30 dev tunnel0
ip addr add 172.16.1.2/30 peer 172.16.1.1/30 dev tunnel0
ip route add 20.0.1.1/32dev tunnel0
chmod +x /etc/init.d/gre.sh
echo "/etc/init.d/gre.sh">> /etc/rc.d/rc.local(将该文件加载到开机启动的系统文件中)
四、验证隧道配置:
L1系统下 ip addr show 结果如下(L2中类似):
L2上面的Ifconfig查看:
转载于:https://blog.51cto.com/nicemove/1229971