Hello,

I want to use OpenVPN to link together some remote sites and their
networks, but I'm getting "MULTI: bad source address from client"
messages in the logs and I think I've done everything necessary to
prevent it. In addition, clients behind one site are not successfully
able to ping interface addresses on the other server.

My thinking for linking these sites was that each OpenVPN server would
both serve a set of clients and link to each other in a mesh, pushing
routes as appropriate, so that there is no dependency on a single
central server in case any of the sites go down.

To this end, I've allocated myself a /16 in private address space and
apportioned them out as shown in the diagram (right now, trying to
just get two sites working). Viewable correctly in fixed-width font:

           Local VPN Clients
            10.88.8.0/20
                 |
                 |
      --------------------------
      |         tun0           |
      |                        |
      |                        |
      |      Ingress A         |----Local LAN clients
      |                        |      10.88.0.0/28
      |                        |
      |      tun1       tun2   |
      | 10.88.0.16/28          |
      --------------------------
           in           out
            |            |
            |            |
            |            |
            |            |
            |            |
            |            |
           out           in
      --------------------------
      |   tun1       tun2      |
      |          10.88.0.48/28 |
      |                        |
      |                        |
      |      Ingress B         |----Local LAN clients
      |                        |      10.88.0.32/28
      |                        |
      |         tun0           |
      --------------------------
                 |
                 |
           Local VPN Clients
            10.88.16.0/20


So ideally what would happen is that Ingress A and Ingress B connect
to each other; Ingress A pushes routes for 10.88.0.0/28,
10.88.0.16/28, and 10.88.8.0/20 to Ingress B, while Ingress B pushes
routes for 10.88.0.32/28, 10.88.0.48/28, and 10.88.16.0/20 to Ingress
A.

This actually seems to work fine between the servers -- connections
are established both ways and from both servers I can ping all
relevant IPs. However, I'm getting a lot of "MULTI: bad source address
from client" in the logs. In addition, although routes seem to be
getting pushed appropriately, I am not able to ping end-to-end.
Although Ingress A and Ingress B can ping all of each other's
addresses, a client behind Ingress A can ping only one of Ingress B's
addresses (the one on the other end of the tunnel for which Ingress B
is the server and Ingress A is the client), and vice versa, and cannot
ping end-to-end with other clients or other interfaces on the remote
server. I have tried 'echo 1 > /proc/sys/net/ipv4/ip_forward' and
'echo 1 > /proc/sys/net/ipv4/conf/all/forwarding' to ensure forwarding
is enabled, with no luck.

Below are my configuration files and various bits of output...I'd
appreciate any help understanding what the issue is. I think by now
the config files are a bit more complicated than they need but
searching around said I needed to add all routes + iroute statements
to fix this problem.

Thanks!

--Jeff

=================== Ingress A, tun0 =======================
port 443
proto udp
dev tun0
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
tls-server
topology subnet
server 10.88.8.0 255.255.248.0
push "route 10.88.0.0 255.255.0.0"
push "dhcp-option DNS 10.88.0.1"
client-to-client
keepalive 10 60
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0
comp-lzo
duplicate-cn
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
mute 20
verb 4

=================== Ingress A, tun1 =======================
port 1194
proto udp
dev tun1
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
tls-server
topology subnet
server 10.88.0.16 255.255.255.240
push "route 10.88.0.0 255.255.255.240"
push "route 10.88.0.16 255.255.255.240"
push "route 10.88.8.0 255.255.248.0"
route 10.88.0.48 255.255.255.240
push "route 10.88.0.48 255.255.255.240"
route 10.88.0.32 255.255.255.240
push "route 10.88.0.32 255.255.255.240"
route 10.88.16.0 255.255.248.0
push "route 10.88.16.0 255.255.248.0"
client-to-client
client-config-dir /etc/openvpn/ccd
keepalive 10 60
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0
comp-lzo
duplicate-cn
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
mute 20
verb 4

=================== Ingress A, ingressb CCD entry =======================
iroute 10.88.0.32 255.255.255.240
iroute 10.88.0.48 255.255.255.240
iroute 10.88.16.0 255.255.248.0

=================== Ingress A, client for Ingress B =======================
client
dev tun2
proto udp
remote 172.27.102.193 1194
float
resolv-retry 10
nobind
persist-key
persist-tun
mute-replay-warnings
ca ca.crt
cert ingressa.crt
key ingressa.key
pull
keepalive 10 60
auth-retry interact
ns-cert-type server
tls-auth ta.key 1
comp-lzo
verb 4
mute 20

=================== Ingress B, interfaces and routes =======================

3: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state
UNKNOWN group default
    link/ether 26:ce:e0:d1:2c:f4 brd ff:ff:ff:ff:ff:ff
    inet 10.88.0.1/28 brd 10.88.0.15 scope global dummy0
       valid_lft forever preferred_lft forever
4: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc
pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.88.0.17/28 brd 10.88.0.31 scope global tun1
       valid_lft forever preferred_lft forever
5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc
pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.88.8.1/21 brd 10.88.15.255 scope global tun0
       valid_lft forever preferred_lft forever
6: tun2: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc
pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.88.0.50/28 brd 10.88.0.63 scope global tun2
       valid_lft forever preferred_lft forever

default via 172.27.102.1 dev eth0
10.88.0.0/28 dev dummy0  proto kernel  scope link  src 10.88.0.1
10.88.0.16/28 dev tun1  proto kernel  scope link  src 10.88.0.17
10.88.0.32/28 via 10.88.0.49 dev tun2
10.88.0.48/28 dev tun2  proto kernel  scope link  src 10.88.0.50
10.88.8.0/21 dev tun0  proto kernel  scope link  src 10.88.8.1
10.88.16.0/21 via 10.88.0.49 dev tun2
172.27.102.0/24 dev eth0  proto kernel  scope link  src 172.27.102.194

=================== Ingress B, tun0 =======================
port 443
proto udp
dev tun0
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
tls-server
topology subnet
server 10.88.16.0 255.255.248.0
push "route 10.88.0.0 255.255.0.0"
push "dhcp-option DNS 10.88.0.33"
client-to-client
keepalive 10 60
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0
comp-lzo
duplicate-cn
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
mute 20
verb 4

=================== Ingress A, tun1 =======================
port 1194
proto udp
dev tun1
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
tls-server
topology subnet
server 10.88.0.48 255.255.255.240
push "route 10.88.0.32 255.255.255.240"
push "route 10.88.0.48 255.255.255.240"
push "route 10.88.16.0 255.255.248.0"
route 10.88.0.16 255.255.255.240
push "route 10.88.0.16 255.255.255.240"
route 10.88.0.0 255.255.255.240
push "route 10.88.0.0 255.255.255.240"
route 10.88.8.0 255.255.248.0
push "route 10.88.8.0 255.255.248.0"client-to-client
client-config-dir /etc/openvpn/ccd
keepalive 10 60
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0
comp-lzo
duplicate-cn
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
mute 20
verb 4

=================== Ingress A, ingressa CCD entry =======================
iroute 10.88.0.0 255.255.255.240
iroute 10.88.0.16 255.255.255.240
iroute 10.88.8.0 255.255.248.0

=================== Ingress A, client for Ingress B =======================
client
dev tun2
proto udp
remote 172.27.102.194 1194
float
resolv-retry 10
nobind
persist-key
persist-tun
mute-replay-warnings
ca ca.crt
cert ingressb.crt
key ingressb.key
pull
keepalive 10 60
auth-retry interact
ns-cert-type server
tls-auth ta.key 1
comp-lzo
verb 4
mute 20

=================== Ingress B, interfaces and routes =======================

3: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state
UNKNOWN group default
    link/ether 92:cc:95:55:17:4b brd ff:ff:ff:ff:ff:ff
    inet 10.88.0.33/28 brd 10.88.0.47 scope global dummy0
       valid_lft forever preferred_lft forever
4: tun2: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc
pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.88.0.49/28 brd 10.88.0.63 scope global tun2
       valid_lft forever preferred_lft forever
5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc
pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.88.16.1/21 brd 10.88.23.255 scope global tun0
       valid_lft forever preferred_lft forever
6: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc
pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.88.0.18/28 brd 10.88.0.31 scope global tun1
       valid_lft forever preferred_lft forever

default via 172.27.102.1 dev eth0
10.88.0.0/28 via 10.88.0.17 dev tun1
10.88.0.16/28 dev tun1  proto kernel  scope link  src 10.88.0.18
10.88.0.32/28 dev dummy0  proto kernel  scope link  src 10.88.0.33
10.88.0.48/28 dev tun2  proto kernel  scope link  src 10.88.0.49
10.88.8.0/21 via 10.88.0.17 dev tun1
10.88.16.0/21 dev tun0  proto kernel  scope link  src 10.88.16.1
172.27.102.0/24 dev eth0  proto kernel  scope link  src 172.27.102.193


=================== VPN Client behind Ingress A =======================
client
dev tun
proto udp
remote 172.27.102.194 443
float
resolv-retry 10
nobind
persist-key
persist-tun
mute-replay-warnings
ca ca.crt
cert vpnuser.crt
key vpnuser.key
pull
keepalive 10 60
auth-retry interact
ns-cert-type server
tls-auth ta.key 1
comp-lzo
up-restart
up "/etc/rc.local vpnup"
down-pre
down "/etc/rc.local vpndown"
verb 4
mute 20

9: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc
pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.88.8.3/21 brd 10.88.15.255 scope global tun0
       valid_lft forever preferred_lft forever

default via 172.28.118.1 dev p4p1
10.88.0.0/16 via 10.88.8.1 dev tun0
10.88.8.0/21 dev tun0  proto kernel  scope link  src 10.88.8.3
127.0.0.0/8 dev p4p1  proto kernel  scope link  src 127.88.0.1
169.254.0.0/16 dev p4p1  scope link  metric 1000
172.28.118.0/23 dev p4p1  proto kernel  scope link  src 172.28.119.71

Pings to Ingress B's interfaces:

$ ping 10.88.0.33
PING 10.88.0.33 (10.88.0.33) 56(84) bytes of data.
^C
--- 10.88.0.33 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3022ms

$ ping 10.88.0.49
PING 10.88.0.49 (10.88.0.49) 56(84) bytes of data.
^C
--- 10.88.0.49 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3023ms

$ ping 10.88.16.1
PING 10.88.16.1 (10.88.16.1) 56(84) bytes of data.
^C
--- 10.88.16.1 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3024ms

$ ping 10.88.0.18
PING 10.88.0.18 (10.88.0.18) 56(84) bytes of data.
64 bytes from 10.88.0.18: icmp_seq=1 ttl=63 time=1.39 ms
64 bytes from 10.88.0.18: icmp_seq=2 ttl=63 time=1.54 ms
64 bytes from 10.88.0.18: icmp_seq=3 ttl=63 time=1.54 ms
64 bytes from 10.88.0.18: icmp_seq=4 ttl=63 time=1.53 ms
^C
--- 10.88.0.18 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 1.394/1.505/1.549/0.070 ms

=================== VPN Client behind Ingress B =======================
client
dev tun
proto udp
remote 172.27.102.193 443
float
resolv-retry 10
nobind
persist-key
persist-tun
mute-replay-warnings
ca ca.crt
cert vpnuser.crt
key vpnuser.key
pull
keepalive 10 60
auth-retry interact
ns-cert-type server
tls-auth ta.key 1
comp-lzo
up-restart
up "/etc/rc.local vpnup"
down-pre
down "/etc/rc.local vpndown"
verb 4
mute 20

5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc
pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.88.16.2/21 brd 10.88.23.255 scope global tun0
       valid_lft forever preferred_lft forever

default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0  proto kernel  scope link  src 10.0.2.15
10.88.0.0/16 via 10.88.16.1 dev tun0
10.88.16.0/21 dev tun0  proto kernel  scope link  src 10.88.16.2
127.0.0.0/8 dev eth0  proto kernel  scope link  src 127.88.0.1
169.254.0.0/16 dev eth0  scope link  metric 1000

Pings to Ingress A's interfaces:

$ ping 10.88.0.1
PING 10.88.0.1 (10.88.0.1) 56(84) bytes of data.
^C
--- 10.88.0.1 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2015ms

$ ping 10.88.0.17
PING 10.88.0.17 (10.88.0.17) 56(84) bytes of data.
^C
--- 10.88.0.17 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3025ms

$ ping 10.88.8.1
PING 10.88.8.1 (10.88.8.1) 56(84) bytes of data.
^C
--- 10.88.8.1 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3022ms

$ ping 10.88.0.50
PING 10.88.0.50 (10.88.0.50) 56(84) bytes of data.
64 bytes from 10.88.0.50: icmp_seq=1 ttl=63 time=148 ms
64 bytes from 10.88.0.50: icmp_seq=2 ttl=63 time=209 ms
64 bytes from 10.88.0.50: icmp_seq=3 ttl=63 time=190 ms
64 bytes from 10.88.0.50: icmp_seq=4 ttl=63 time=57.0 ms
^C
--- 10.88.0.50 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 57.080/151.398/209.812/58.752 ms

------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
_______________________________________________
Openvpn-users mailing list
Openvpn-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-users

Reply via email to