工作中有时需要用到其他城市的IP地址,此时我们可以选择用代理的方式实现访问出口为其他城市出口IP。

部署前准备: 保证两台服务器之间能相互ping通

A服务器(上海):内网IP:172.16.1.12

B服务器(广州):内网IP:10.13.101.83

一、配置IP隧道

1、上海服务器上配置(其中a2b只是一个接口名称,当然也可以换成其他的)

# 其中 192.168.2.1 只是一个虚拟IP,与实验的两个网段IP不一致即可
# ip tunnel add a2b mode ipip remote 10.13.101.83 local 172.16.1.12
# ifconfig a2b 192.168.2.1 netmask 255.255.255.0
# iptunnel show
tunl0: unknown/ip  remote any  local any  ttl inherit  nopmtudisc
a2b: ip/ip  remote 10.13.101.83  local 172.16.1.12  ttl inherit

2、广州服务器上配置

# ip tunnel add a2b mode ipip remote 172.16.1.12 local 10.13.101.83
# ifconfig a2b 192.168.2.2 netmask 255.255.255.0
# iptunnel show
tunl0: unknown/ip  remote any  local any  ttl inherit  nopmtudisc
a2b: ip/ip  remote 172.16.1.12  local 10.13.101.83  ttl inherit

3、隧道效果测试,在广州服务器上操作

# ip addr|grep 192.168.2.2
    inet 192.168.2.2/24 scope global a2b
# ping 192.168.2.1
PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
64 bytes from 192.168.2.1: icmp_seq=1 ttl=64 time=8.35 ms
64 bytes from 192.168.2.1: icmp_seq=2 ttl=64 time=7.91 ms

二、上海服务器配置路由规则

说明:上海服务器配置路由规则是为了上海服务器访问内地网络的话就走隧道发给广州服务器

1、内地网络IP段文件下载

2、下载文件后修改文件使其符合当前规则并在香港服务器上执行,添加路由

# -net 后面的IP端代表想通过内地服务器访问的IP端,当前我们是把所有内地网段都添加了
# route add -net 1.12.0.0/14 gw 192.168.2.2
# route add -net 1.24.0.0/13 gw 192.168.2.2
......

三、服务器配置NAT

1、广州服务器上配置NAT

# sysctl -w net.ipv4.ip_forward=1
# sed -i '/net.ipv4.ip_forward/ s/0/1/'  /etc/sysctl.conf

# 把上面下载的内网IP段全部添加上
# iptables -t nat -A POSTROUTING -s 192.168.2.1 -d 1.0.1.0/24 -j MASQUERADE
# iptables -t nat -A POSTROUTING -s 192.168.2.1 -d 1.0.2.0/23 -j MASQUERADE
# iptables -t nat -A POSTROUTING -s 192.168.2.1 -d 1.0.8.0/21 -j MASQUERADE
......

2、上海服务器配置NAT规则

# sysctl -w net.ipv4.ip_forward=1
# sed -i '/net.ipv4.ip_forward/ s/0/1/'  /etc/sysctl.conf

# 把上面下载的内网IP段全部添加上
# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 1.0.1.0/24 -j MASQUERADE
# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 1.0.2.0/23 -j MASQUERADE
# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 1.0.8.0/21 -j MASQUERADE

# 10.8.0.0/24 是到时候VPN客户端获取到的IP,这个网段比较固定,所以我先写上,后期发现不对的话,修改即可。

四、上海OpenVPN服务部署

说明:在上海部署VPN是为了上海用户可以通过VPN客户端连接上海服务器

1、安装部署

# wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh

# 根据提示,一直点击回车。直到提示输入Name [client]: vpncy   (这个名称比较随意)

2、安装好后会在/root 目录下生成一个vpncy.ovpn文件,该文件为客户端导入配置文件

# ls /root/
vpncy.ovpn

3、客户端下载地址,下载后并安装

五、客户端使用测试

1、打开 openvpn 客户端,导入上面 root 目录下的 vpncy.ovpn 配置文件,然后连接

2、连接成功后,openvpn客户端会变成绿色,如图

centos7多ip设置多出口_IP

3、访问百度查看IP地址,当前IP已经是广州云机器的IP了

centos7多ip设置多出口_tcp/ip_02

六、问题排查

1、如果我们本地连接不上上海服务器,可能是我们当前网段添加进了上海主机的路由规则中,去掉我们当前公网IP网段规则就好了。
2、如果上海测试发现访问内地访问没有走广州机器出口,那么可能是访问的网站IP并不在路由规则中,添加路由规则以及广州云主机的NAT规则即可。
3、如果是其他的问题,可以通过抓包解决。
上海抓隧道包:

# tcpdump -i a2b

广州抓访问出口IP地址包:

# tcpdump -i eth0 host 150.109.64.105

总结:

      本次实验相当于连接到上海机器VPN的用户出口网络以广州机器网络出口。实际情况还得看业务场景,是否能满足需求。