专栏名称: 运维帮
互联网技术分享平台,分享的力量。帮主一直坚信技术可以改变世界,从毕业到现在干了15年运维,有许多话要和你说。
目录
相关文章推荐
运维  ·  再见,CDN 巨头:Akamai 宣布 ... ·  3 天前  
51好读  ›  专栏  ›  运维帮

使用tinc构建full mesh结构的VPN

运维帮  · 公众号  · 运维  · 2018-12-01 21:01

正文

转自:http://blog.sina.com.cn/s/blog_704836f40102wlmk.html


以前做VPN都是用openvpn来做,当点数多于两个时,需要做星型结构才能让所有点互通。这会产生一个问题,例如同一省的两个城市分公司之间通信,需要绕道核心点,例如北京的VPN服务器,无端增加了非常大的延时。


为了解决这种需求,发现TINC这个VPN软件可以做到。

TINC是开源软件,官网: https://www.tinc-vpn.org


下边举个例子,说明一下full mesh结构的tinc VPN如何配置。

三个点,北京,柏林,拉斯维加斯,后边分别带本地的一个局域网络,要求3个点组成Full mesh结构。


TINC在Centos的EPEL源中有,yum安装即可。netname是给VPN配置起的名字,随需求自己定义。


1.[北京]

Beijing]# yum install tinc

Beijing]# mkdir -p /etc/tinc/netname/hosts

Beijing]# vi /etc/tinc/netname/tinc.conf

==> Name = Beijing

==> AddressFamily = ipv4

==> Interface = tun0

==> ConnectTo = Lasvegas

==> ConnectTo = Berlin

Beijing]# vi /etc/tinc/netname/hosts/Beijing

==> Address = Beijing_public_IP

==> Subnet = 172.16.3.0/24

Beijing]# tincd -n netname -K4096

Beijing]# vi /etc/tinc/netname/tinc-up

==> #!/bin/sh

==> ip link set $INTERFACE up

==> ip addr add 10.0.0.1/24 dev $INTERFACE

==> ip route add 192.168.133.0/24 dev $INTERFACE

==> ip route add 192.168.184.0/24 dev $INTERFACE

Beijing]# vi /etc/tinc/netname/tinc-down

==> #!/bin/sh

==> ip link set $INTERFACE down

Beijing]# chmod 755 /etc/tinc/netname/tinc-*


2.[拉斯维加斯]

Lasvegas]# yum install tinc

Lasvegas]# mkdir -p /etc/tinc/netname/hosts

Lasvegas]# vi /etc/tinc/netname/tinc.conf

==> Name = Lasvegas

==> AddressFamily = ipv4

==> Interface = tun0

==> ConnectTo = Beijing

==> ConnectTo = Berlin

Lasvegas]# vi /etc/tinc/netname/hosts/Lasvegas

==> Address = Lasvegas_public_IP

==> Subnet = 192.168.184.0/24

Lasvegas]# tincd -n netname -K4096

Lasvegas]# vi /etc/tinc/netname/tinc-up

==> #!/bin/sh

==> ip link set $INTERFACE up

==> ip addr add 10.0.0.2/24 dev $INTERFACE

==> ip route add 172.16.3.0/24 dev $INTERFACE

==> ip route add 192.168.184.0/24 dev $INTERFACE

Lasvegas]# vi /etc/tinc/netname/tinc-down

==> #!/bin/sh

==> ip link set $INTERFACE down

Lasvegas]# chmod 755 /etc/tinc/netname/tinc-*


3.[柏林]

# yum install tinc

# mkdir -p /etc/tinc/netname/hosts

# vi /etc/tinc/netname/tinc.conf

==> Name = Berlin

==> AddressFamily = ipv4

==> Interface = tun0

==> ConnectTo = Beijing

==> ConnectTo = Lasvegas


# vi /etc/tinc/netname/hosts/Berlin

==> Address = Berlin_public_IP

==> Subnet = 192.168.133.0/24

# tincd -n netname -K4096

# vi /etc/tinc/netname/tinc-up

==> #!/bin/sh

==> ip link set $INTERFACE up

==> ip addr add 10.0.0.3/24 dev $INTERFACE

==> ip route add 172.16.3.0/24 dev $INTERFACE

==> ip route add 192.168.133.0/24 dev $INTERFACE


# vi /etc/tinc/netname/tinc-down

==> #!/bin/sh

==> ip link set $INTERFACE down

Berlin]# chmod 755 /etc/tinc/netname/tinc-*


4.复制hosts文件到各台服务器

不管你用什么方法,scp也好,sftp也好,最终每台机器的/etc/tinc/netname/hosts目录下都要有所有vpn节点的配置文件,如下所示:

--/etc

--tinc

--netname

--hosts

--Beijing

--Berlin

--Lasvegas

5.在每个vpn节点启动tinc,带有debug参数,可以排除故障

# tincd -n netname -D -d3


6.设为开机自动启动

# systemctl enable tinc@netname

# systemctl start tinc@netname

备注1: 更改监听的端口

如果网络防火墙有低位端口限制,可以让tinc监听在任意你指定的端口上,只需要在hosts文件里Address位置写上指定的端口号即可。







请到「今天看啥」查看全文