场景:有一条专线,然后需要在这条专线上打通国内和海外两台VM的网络,对两边VM而言,这条专线是透明的
Client A VM: 114.1.1.1
Client B VM: 16.1.1.1
专线两头的容器
专线容器国内A: 103.1.1.1 业务IP: 104.1.1.2
专线容器海外B: 154.1.1.1

专线A物理机启用
modprobe ip_gre
modprobe ip_conntrack_pptp
modprobe ip_nat_pptp
modprobe nf_conntrack_proto_gre
modprobe nf_nat_proto_gre


专线A物理机上的容器
=================
/etc/sysctl.conf
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.default.forwarding = 1

#!/bin/sh
#Delete all existing rules
iptables -F
iptables -t nat -F

#Set default chain policies
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

iptables -t nat -A PREROUTING -p gre -s 114.1.1.1 -d 104.1.1.2 -j DNAT --to-destination 16.1.1.1
iptables -t nat -A POSTROUTING -s 114.1.1.1  -j SNAT --to-source 104.1.1.2

国内侧客户端Clinet A
ip tunnel add node mode gre remote 104.1.1.2 local 192.168.16.26 ttl 255   (104.1.1.2是通过bgp宣告的,配到loopback)
ip addr add 10.10.0.1/24 dev node
ip link set node up

[root@ac70a0c51b2d sh]# more /etc/quagga/bgpd.conf 
hostname bgpd
password zebra
log stdout
!
router bgp 65501
 bgp router-id 103.1.1.1
 no bgp default ipv4-unicast
 network 104.1.1.2/32 route-map backup
 neighbor 103.1.1.254 remote-as 65001
 neighbor 103.1.1.254 activate

ip prefix-list 100 seq 5 permit 104.1.1.2/32

route-map backup permit 10
 match ip address prefix-list 100
 set as-path prepend 8888

#ip addr add 104.1.1.2/32 dev lo



Client B
ip tunnel add node mode gre local 172.31.30.127 remote 154.1.1.1 ttl 255
ip addr add 10.0.0.2/30 dev node
ip link set node up

#隧道建立完,或者重建不通时,刷新下香港Client B的iptables