tinc ***简单配置示例扩展(一)——跨越三层网络


        在tinc ***简单配置示例(http://watertoeast.blog.51cto.com/8489855/1711649)一文中,构建tinc ×××的两台机器同属一个局域网(如图一),这样的场景基本与实际应用情况不符。今天对简单示例进行扩展,使构建***的两台主机跨越三层网络边界(如图二)。

wKioL1ZIKVfRLCdRAAAhvbF9Mec733.png

图一 tinc *** in lan

wKiom1ZIKVSAthIWAAAz6jveGH0699.png

图二 tinc ×××跨越三层网络边界

        如图二所示,PC02的IP地址变成了172.16.1.6,与PC01分属不同的网络,中间跨越了三层网络边界。根据图二的要求,可以给出如图三的实验环境:

wKioL1ZIKdPBoUZ2AABTnJKTjb4756.png

图三 跨网tinc ×××示意图

    PC01所在网络为192.168.1.0/24,网关为192.168.1.254;PC02所在网络为172.16.1.0/24,网关为172.16.1.254;两个网络通过路由器R1、R2进行互联。


    在这个环境基础上,我们的目标是:在PC01和PC02搭建tinc ×××,其××× IP分别为10.0.2.1、10.0.1.1。当192.168.1.6与172.16.1.6通信,走正常的IP路由;当10.0.1.1与10.0.2.1通信时,走PC01与PC02构建的×××隧道,如图三下方的蓝色管道。


    PC01与PC02的配置可参考http://watertoeast.blog.51cto.com/8489855/1711649,R1和R2的模拟可参考http://watertoeast.blog.51cto.com/8489855/1701333。假设R1、R3在PC03模拟,下面直接给出具体的配置过程:


一、配置PC01

1、创建所需文件夹以及文件

cd /etc/tinc

mkdir twwh

mkdir twwh/hosts

touch twwh/tinc.conf

touch twwh/tinc-up

touch twwh/tinc-down


2、创建公私钥

tincd -n twwh -K

公私钥文件路径使用默认的,无须修改。


3、修改tinc.conf文件

# beg tinc.conf

ConnectTo=twwhserver

Device=/dev/net/tun

Mode=switch

Name=twwhclient

PrivateKeyFile=/etc/tinc/twwh/rsa_key.priv

# end

4、修改twwhclient文件

twwhclient在创建密钥的时候生成,在其头部添加

Compression=9

Subnet=10.0.2.0/24

Address=192.168.1.6


5、修改tinc-up和tinc-down

tinc-up内容如下:

#!/bin/sh

ifconfig $INTERFACE 10.0.2.1 netmask 255.255.255.0

route add -host 10.0.1.1 dev $INTERFACE

route add -net 10.0.1.0 netmask 255.255.255.0 gw 10.0.1.1

tinc-down内容如下:

ifconfig $INTERFACE down

二、配置PC02

①创建所需文件夹以及文件

cd /etc/tinc

mkdir twwh

mkdir twwh/hosts

touch twwh/tinc.conf

touch twwh/tinc-up

touch twwh/tinc-down


②创建公私钥

tincd -n twwh -K

公私钥文件路径使用默认的,无须修改。


③修改tinc.conf文件

# beg tinc.conf

ConnectTo=twwhclient

Device=/dev/net/tun

Mode=switch

Name=twwhclient

PrivateKeyFile=/etc/tinc/twwh/rsa_key.priv

# end

④修改twwhserver文件

twwhserver在创建密钥的时候生成,在其头部添加

Compression=9

Subnet=10.0.1.0/24

Address=172.16.1.6


⑤修改tinc-up和tinc-down

tinc-up内容如下:

#!/bin/sh

ifconfig $INTERFACE 10.0.1.1 netmask 255.255.255.0

route add -host 10.0.2.1 dev $INTERFACE

route add -net 10.0.2.0 netmask 255.255.255.0 gw 10.0.2.1

tinc-down内容如下:

ifconfig $INTERFACE down


三、配置PC03


1、配置网桥和虚拟网卡

brctl addbr br0

brctl addbr br1

brctl addbr br2

(说明:添加br0、br1、br2三个网桥)


ip l s dev br0 up

ip l s dev br1 up

ip l s dev br2 up

(说明:启动网桥)


tunctl -t tap0 -u root

tunctl -t tap1 -u root

tunctl -t tap2 -u root

tunctl -t tap3 -u root

(说明:添加虚拟网卡)


ip l s dev tap0 up

ip l s dev tap1 up

ip l s dev tap2 up

ip l s dev tap3 up

(说明:启动虚拟网卡)


brctl addif br0 tap0

brctl addif br0 eth0


brctl addif br1 tap1

brctl addif br1 tap3

brctl addif br1 eth1


brctl addif br2 tap2

brctl addif br2 eth2

(说明:把网卡和虚拟网卡添加到对应的网桥)


ifconfig eth0 0.0.0.0 promisc

ifconfig eth1 0.0.0.0 promisc

ifconfig eth2 0.0.0.0 promisc

(说明:把网卡设置成混杂模式)


2、模拟路由器R1R2

dynamips -P 2691 -s 0:0:tap:tap0 -s 0:1:tap:tap1 ../c2691-adventerprisek9-mz.124-25d.bin

dynamips -P 2691 -s 0:0:tap:tap2 -s 0:1:tap:tap3 ../c2691-adventerprisek9-mz.124-25d.bin

R1配置如下:

R1(config)#int fa0/0

R1(config-if)#ip add 192.168.1.254 255.255.255.0

R1(config-if)#no sh

R1(config-if)#exit

R1(config)#int fa0/1

R1(config-if)#ip add 1.1.1.1 255.255.255.0

R1(config-if)#no sh

R1(config-if)#exit

R1(config)#ip route 0.0.0.0 0.0.0.0 1.1.1.2

R1(config)#end

对R2配置如下:

R2(config)#int fa0/0

R2(config-if)#ip add 172.16.1.254 255.255.255.0

R2(config-if)#no sh

R2(config-if)#exit

R2(config)#int fa0/1

R2(config-if)#ip add 1.1.1.2 255.255.255.0

R2(config-if)#no sh

R2(config-if)#exit

R2(config)#ip route 0.0.0.0 0.0.0.0 1.1.1.1

R2(config)#end



        在PC01上ping 10.0.1.1,在PC02上用wireshark嗅探172.16.1.6网络接口的数据,如图二所示。由图可以看出,这些数据都是tinc的×××密数据。


wKiom1ZIKd-RtwWrAAE5tVLhmtY509.png

图四 PC02 172.16.1.6接口的通信数据


wKioL1ZIKliQvoBNAAFfU43TrgY198.png


图五 PC02 10.0.1.1接口的通信数据


    到此为止,一个简单跨越三层网络边界的tinc ***实验环境已构建完毕。