[Openswan Users] Success with broadcast through GRE

Michael Jurney mikej at datasynapse.com
Fri Oct 7 13:02:04 CEST 2005


This is a quick summary of the changes I ended up making in order to get 
broadcast traffic moving properly between my two openswan gateways.  I 
was originally going to rebroadcast netbios traffic from one subnet to 
the other with a udp proxy, but I ended up not needing to.

The problem:  Samba machines on two networks connected with an openswan 
tunnel needed to be able to send broadcast traffic to each others' 
segments, but the ipsec tunnel wouldn't pass broadcast traffic.

The solution:  Instead of using a net-to-net ipsec configuration, 
connect the networks with GRE, then establish an ipsec tunnel between 
the public interfaces of the openswan gateways.

These configurations are from my testbed configuration.  The 10/8 
networks act as the public segments, and the 172.16/16 networks act as 
the private segments:

Network 1: 172.16.8.0/24
Network 2: 172.16.32.0/24

The gateways:

openswan1:
  eth0: 10.1.1.100
  eth1: 172.16.8.1
  default route via 10.1.1.1

openswan2:
  eth0: 10.2.2.100
  eth1: 172.16.32.1
  default route via 10.2.2.1

The original configuration:
-------------------------------------------------------------------------

Connection description on openswan1:

conn network2
        authby=secret
        rightid=network2
        auth=esp
        left=10.1.1.100
        leftsubnet=172.16.8.0/24
        leftnexthop=10.1.1.1
        right=10.2.2.100
        rightsubnet=172.16.32.0/24
        rightnexthop=10.2.2.1

Connection description on openswan2:

conn network1
        authby=secret
        rightid=network1
        auth=esp
        left=10.2.2.100
        leftsubnet=172.16.32.0/24
        leftnexthop=10.2.2.1
        right=10.1.1.100
        rightsubnet=172.16.8.0/24
        rightnexthop=10.1.1.1

Routes:

openswan properly managed the routes, adding a route for the target 
network via eth0 (I'm not using KLIPS).
-------------------------------------------------------------------------


The new configuration:
-------------------------------------------------------------------------

Create a pair of GRE tunnels between the two gateways and route private 
network traffic over them:

On openswan1:

Create the tunnel:
    ip tunnel add tunnel0 mode gre local 10.1.1.100 remote 10.2.2.100
Bring the tunnel up:
    ip link set tunnel0 up
Give the tunnel an address:
    ip addr add 10.1.1.100 dev tunnel0
Make sure rp_filtering on the interface is off, or broadcasts won't 
traverse it:
    echo 0 > /proc/sys/net/ipv4/conf/tunnel0/rp_filter
Route the target network through the tunnel:
    ip route add 172.16.32.0/24 dev tunnel0

On openswan2 (The same procedure, just reversing IPs and network routes):

ip tunnel add tunnel0 mode gre local 10.2.2.100 remote 10.1.1.100
ip link set tunnel0 up
ip addr add 10.2.2.100 dev tunnel0
echo 0 > /proc/sys/net/ipv4/conf/tunnel0/rp_filter
ip route add 172.16.8.0/24 dev tunnel0

At this point, traffic (including broadcast packets) pass between the 
networks with no problems, but it will NOT be encrypted!

In order to get the 'private' into 'virtual private network', we need to 
encrypt traffic between the gateways.  Because we're already tunneling 
the traffic between the two, we can just encrypt everything that moves 
between them by changing the ipsec config on each:

conn network2
        authby=secret
        rightid=network2
        auth=esp
        left=10.1.1.100
        leftsubnet=10.1.1.100/32
        leftnexthop=10.1.1.1
        right=10.2.2.100
        rightsubnet=10.2.2.100/32
        rightnexthop=10.2.2.1

Connection description on openswan2:

conn network1
        authby=secret
        rightid=network1
        auth=esp
        left=10.2.2.100
        leftsubnet=10.2.2.100/32
        leftnexthop=10.2.2.1
        right=10.1.1.100
        rightsubnet=10.1.1.100/32
        rightnexthop=10.1.1.1

-------------------------------------------------------------------------


This new configuration has one extremely important difference vs. the 
old config:  If openswan dies for any reason, packets will continue to 
move over the internet totally in the clear.  GRE packets are easily 
inspected with tools like tcpdump and ethereal, so care must be taken to 
make sure that you watch for openswan failures and react appropriately.

Thanks everyone for your help over the last few days - I hope this 
summary is informative and useful.

-- 
Michael D. Jurney
Sysadmin, DataSynapse
mikej at datasynapse.com
p: 212.842.8860

View the DataSynapse email disclaimer here:
<http://www.datasynapse.com/legal/emailprivacy.jsp>



More information about the Users mailing list