Last updated on December 1, 2020 by Dan Nanni
GRE tunnels are IP-over-IP tunnels which can encapsulate IPv4/IPv6 and unicast/multicast traffic. To create a GRE tunnel on Linux, you need
ip_gre kernel module, which is GRE over IPv4 tunneling driver.
So first make sure that
ip_gre is loaded.
$ sudo modprobe ip_gre $ lsmod | grep gre
ip_gre 22432 0 gre 12989 1 ip_gre
Here, we assume that you want to create a GRE tunnel between two interfaces with the following IP addresses.
On host A, run the following command.
$ sudo ip tunnel add gre0 mode gre remote 18.104.22.168 local 192.168.233.204 ttl 255 $ sudo ip link set gre0 up $ sudo ip addr add 10.10.10.1/24 dev gre0
In the above, we create a GRE-type tunnel device called
gre0, and set its remote address to
22.214.171.124. Tunneling packets will be originating from
192.168.233.204 (local IP address), and their TTL field will be set to
255. The tunnel device is assigned IP address
10.10.10.1 with netmask
Now verify that route for the GRE tunnel is set up correctly:
$ ip route show
default via 126.96.36.199 dev eth0 proto static 10.10.10.0/24 dev gre0 proto kernel scope link src 10.10.10.1
On host B, run similar commands as follows.
$ sudo ip tunnel add gre0 mode gre remote 192.168.233.204 local 188.8.131.52 ttl 255 $ sudo ip link set gre0 up $ sudo ip addr add 10.10.10.2/24 dev gre0
At this point, a GRE tunnel should be established between host A and host B.To verify that, from one tunneling end point,
ping the other end point.
On host A, run:
$ ping 10.10.10.2
PING 10.10.10.2 (10.10.10.2) 56(84) bytes of data. 64 bytes from 10.10.10.2: icmp_req=1 ttl=64 time=0.619 ms 64 bytes from 10.10.10.2: icmp_req=2 ttl=64 time=0.496 ms 64 bytes from 10.10.10.2: icmp_req=3 ttl=64 time=0.587 ms
If you want to tear down the existing GRE tunnel, run the following command from either end.
$ sudo ip link set gre0 down $ sudo ip tunnel del gre0
Please note that this article is published by Xmodulo.com under a Creative Commons Attribution-ShareAlike 3.0 Unported License. If you would like to use the whole or any part of this article, you need to cite this web page at Xmodulo.com as the original source.