openwrt+tinc+动态路由 让内网之间能够ping通

参考博客:

Tinc 笔记 · 某 Lolicon 的自白 (sgdylan.com)

Tinc on OpenWrt 组网 | Neo's Blog (whosneo.com)

环境介绍:

现在有两个路由器,分别为openwrtA和openwrtB,两台路由器通过WAN口连接,openwrtA的WAN口eth1的IP为192.168.18.198,LAN口br-lan的IP为192.168.1.1,并且openwrtA的内网有一台PC机,分配的IP为192.168.1.246,openwrtB的WAN口eth1的IP为192.168.18.188,LAN口br-lan的IP为10.30.10.1,openwrtB的内网也有一台PC机,分配的IP为10.30.10.175,现在我们的目的是让两台内网PC机能互相ping通

1.先在openwrt的界面上把tinc和bird安装好,两台路由器都要安装

 2.先让两台路由器之间的tinc能通

配置openwrtA的tinc

首先需要定义一个网络名称,这里使用 ELFNET(也可以是别的名字)

在 /etc/tinc/ 目录中新建文件夹,名字为网络名称,即创建 /etc/tinc/ELFNET/ 目录

在此目录下创建 tinc.conf tinc-up tinc-down 文件和 hosts 文件夹。

tinc.conf

Name = ElfA  #openwrtA的名称
AddressFamily = ipv4 
Interface = tinc
Port = 1800 #tinc走的端口
PingInterval = 10
TCPOnly = yes
Mode = switch  #使用交换机模式

tinc-up

#!/bin/sh
ip link set $INTERFACE up
ip address add 10.10.10.1/24 dev $INTERFACE
ip route add 10.10.10.0/24 dev $INTERFACE

tinc-down 

#!/bin/sh
ifconfig $INTERFACE down

hosts 文件夹中先创建好本机的文件,名称需要与上方 tinc.conf 中第一行的配置保持一致,即文件 ElfA:

Address = 192.168.18.198 #添加服务器公网IP或域名,openwrtA的WAN口IP:192.168.18.198
Port = 1800 #填写端口号

创建密钥

接下来为 ELFNET (前面我们自己定义的网络名称)创建密钥信息,在询问保存位置时直接回车使用默认位置即可:

tinc -n ELFNET generate-rsa-keys

tinc -n ELFNET generate-ed25519-keys

为脚本赋予权限

chmod +x tinc-up
chmod +x tinc-down

此时路由器 openwrtA 的 /etc/tinc/ELFNET/ 目录下的情况为: 

├── ed25519_key.priv

├── hosts/

│ └── ELFA

├── rsa_key.priv

├── tinc-down 

├── tinc-up

└── tinc.conf

编辑 /etc/config/tinc 文件:

config tinc-net ELFNET

   option enabled 1

   option Name ELFA

config tinc-host ELFA

   option enabled 1

   option net ELFNET

执行/etc/init.d/tinc start 来启用tinc 

配置openwrtB的tinc

首先需要定义一个网络名称,这里还是使用 ELFNET

按照openwrtA的步骤创建文件和目录

tinc.conf

Name=ElfB
BindToAddress = * 1800

ConnectTo = ElfA
Interface = tinc
TCPOnly = yes
Mode = switch

tinc-up

#!/bin/sh
ip link set $INTERFACE up
ip address add 10.10.10.2/24 dev $INTERFACE
ip route add 10.10.10.0/24 dev $INTERFACE

tinc-down 

#!/bin/sh
ifconfig $INTERFACE down

hosts 文件夹中先创建好本机的文件,名称需要与上方 tinc.conf 中第一行的配置保持一致,即文件 ElfB:

Address = 192.168.18.188 #添加服务器公网IP或域名,openwrtB的wan口IP:192.168.18.188
Port = 1800 #填写端口号

创建密钥

接下来为 ELFNET (前面我们自己定义的网络名称)创建密钥信息,在询问保存位置时直接回车使用默认位置即可:

tinc -n ELFNET generate-rsa-keys

tinc -n ELFNET generate-ed25519-keys

为脚本赋予权限

chmod +x tinc-up
chmod +x tinc-down

此时路由器 openwrtB 的 /etc/tinc/ELFNET/ 目录下的情况为: 

├── ed25519_key.priv

├── hosts/

│ └── ELFB

├── rsa_key.priv

├── tinc-down 

├── tinc-up

└── tinc.conf

编辑 /etc/config/tinc 文件:

config tinc-net ELFNET

   option enabled 1

   option Name ELFB

config tinc-host ELFB

   option enabled 1

   option net ELFNET

执行/etc/init.d/tinc start 来启用tinc 

交换密钥

需要将openwrtA上的/etc/tinc/ELFNET/hosts/ELFA文件复制到openwrtB的/etc/tinc/ELFNET/hosts的目录下,同理,需要吧openwrtB上的/etc/tinc/ELFNET/hosts/ELFB文件复制到openwrtA的/etc/tinc/ELFNET/hosts的目录下

我这边由于WAN口的IP都在一个局域网,所以可以把WAN口流量全部放开,然后采用scp的方式来交换

此时两个路由器的 /etc/tinc/ELFNET/目录下的情况为: 

├── ed25519_key.priv

├── hosts/

│ └── ELFA

│ └── ELFB

├── rsa_key.priv

├── tinc-down 

├── tinc-up

└── tinc.conf

接下来要去openwrtA和openwrtB的防火墙配置,让tinc的数据能送达到br-lan口

两端 openwrt 均做同样的操作:在 Network – FireWall – Zones 中,点击Add新增一个区域,在General Settings中,命名为 vpn,input、output、forward 均设置为接受,Allow forward to destination zones和 Allow forward from source zones 均勾选上 lan,在 Advanced Settings中,Covered devices(涵盖的设备 )勾选上 tinc,配置完以后长这样

两边的openwrt接下来还要做设置,让到达1800端口的数据能从wan口进来,在 Network – FireWall – Traffic Rules中,点击Add,填写信息如下

在openwrtA上ping openwrtB的tinc的IP,发现已经通了,但是我们会发现两个内网PC还是无法ping通,也就是在openwrtB的内网IP为10.30.10.175的PC机上,是无法ping通openwrtA的内网IP为192.168.1.246的PC机的

3.配置bird让内网能ping通

bird的下载如下,先看看下面这个博客,我们接下来需要修改bird的配置文件

 openwrt通过bird配置OSPF动态路由_openwrt动态路由-CSDN博客​​​​​​v

openwrtA上的bird的配置,先vim /etc/bird4.conf

 

保存并重启bird,不知道怎么重启可以看看前面的博客 

openwrtB如上配置,唯一点和openwrtA上的bird不一样的就是route id要改为自己tinc的IP也就是10.10.10.2

在openwrtA的IP为192.168.1.246的PC机上ping openwrtB的内网PC的IP地址,已经可以通了,需要注意如果PC机是windows系统需要关闭防火墙,因为防火墙会阻止ping命令,也会导致ping不通

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值