1

I have a issue with tunneling and am having a hard time finding a solution. I have two servers, A: Host-Server being a sever with a single IP, and B: Main-Server being the server handling all our applications.

I set up the GRE tunnel fine, but for the application need the (A) server IP ( 192.168.0.1 ) to be on (B) servers Eth0 so the application can use the IP as its own (this is a must). However when I attempt to add the (A) IP to (B) i believe a routing loop is happening, and I cannot figure out how to get traffic to flow correctly. I have tried some PREROUTE and POSTROUTE on iptabels with little success. Below is the setup I get to where everything stops working.

Any help in this would be greatly appreciated!

Details:

Server A: Host:

Public IP: 192.168.0.1 Tunnel IP: 10.0.2.1 

Server B: Main:

Public IP: 192.168.1.2 Tunnel IP: 10.0.2.2 

Server A:

Add the Tunnel

sudo ip tunnel add test_tunnel mode gre local 192.168.0.1 remote 192.168.1.2 ttl 255 sudo ip addr add 10.0.2.1/30 dev test_tunnel sudo ip link set test_tunnel up sudo echo '101 test_tunnel_GRE' >> /etc/iproute2/rt_tables /sbin/ip route add default via 10.0.2.2 dev test_tunnel table test_tunnel_GRE /sbin/iptables -t nat -A POSTROUTING -s 10.0.2.0/30 ! -o gre+ -j SNAT --to-source 192.168.0.1 /sbin/iptables -A FORWARD -d 10.0.2.2 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT /sbin/iptables -A FORWARD -s 10.0.2.2 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT 

Test the Tunnel IPs to ping and see if response is given (Works).

root@A:~# ping -c4 10.0.2.2 PING 10.0.2.2 (10.0.2.2) 56(84) bytes of data. 64 bytes from 10.0.2.2: icmp_seq=1 ttl=64 time=50.6 ms 64 bytes from 10.0.2.2: icmp_seq=2 ttl=64 time=49.6 ms 64 bytes from 10.0.2.2: icmp_seq=3 ttl=64 time=49.7 ms 64 bytes from 10.0.2.2: icmp_seq=4 ttl=64 time=49.7 ms --- 10.0.2.2 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3005ms rtt min/avg/max/mdev = 49.636/49.945/50.651/0.439 ms 

Test on Server should see Tunnel Server IP: (Works)

root@A:~# curl http://www.cpanel.net/showip.cgi --interface 10.0.2.1 192.168.0.1 

Server B:

Add the Tunnel

sudo ip tunnel add test_tunnel mode gre local 192.168.1.2 remote 192.168.0.1 ttl 255 sudo ip addr add 10.0.2.2/30 dev test_tunnel sudo ip link set test_tunnel up sudo echo '101 test_tunnel_GRE' >> /etc/iproute2/rt_tables /sbin/ip rule add from 10.0.2.0/30 table test_tunnel_GRE /sbin/ip route add default via 10.0.2.1 dev test_tunnel table test_tunnel_GRE 

Test the Tunnel IPs to ping and see if response is given (Works).

[root@B~]# ping -c4 10.0.2.1 PING 10.0.2.1 (10.0.2.1) 56(84) bytes of data. 64 bytes from 10.0.2.1: icmp_seq=1 ttl=64 time=51.7 ms 64 bytes from 10.0.2.1: icmp_seq=2 ttl=64 time=50.0 ms 64 bytes from 10.0.2.1: icmp_seq=3 ttl=64 time=50.0 ms 64 bytes from 10.0.2.1: icmp_seq=4 ttl=64 time=50.0 ms --- 10.0.2.1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3054ms rtt min/avg/max/mdev = 50.023/50.458/51.721/0.746 ms 

Test on Server should see Tunnel Server IP: (Works)

[root@B~]# curl http://www.cpanel.net/showip.cgi --interface 10.0.2.2 192.168.0.1 

Here is where it breaks:

Add IP to eth0:

ip a a 192.168.0.1/32 dev eth0 /sbin/ip rule add from 192.168.0.1 table test_tunnel_GRE 

BROKEN

Now everything breaks on both ends, on both servers ping and curl both fail to respond.

I appreciate any info that can help me get this resolved!

0

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.