VPP结合dnsmasq制作家庭路由器(CentOS+VPP+Dnsmasq)

VPP HomeRouter

  本文主要用于测试玩耍,仅供参考,商用建议谨慎选择。如果采用ubuntu系统可参考VPP官方相关文档。本文基于centos7.6系统,本文源站链接

1.前置条件准备

  在此之前最好准备相关物理设备,或PC+物理网卡。本文选用dnsmasq作为轻量级dhcp服务,相关配置可参考Dnsmasq使用参考入门
  centos系统内相关配置如下。

 #安装dnsmasq用于dhcp以及dns服务
 yum install -y dnsmasq
 systemctl start dnsmasq.service
 systemctl enable dnsmasq
 #安装VPP过程这里不再冗述,可参考本人相关文章。
 systemctl enable vpp

 #!!!关闭防火墙,一定要检测防火墙到dhcp分配ip的影响。商用需要修改iptable
 systemctl  stop  firewalld
 #暂时关闭selinux
 setenforce 0
 #如要永久修改/etc/sysconfig/selinux配置文件, 设置   SELINUX=disabled

 #安装bind-utils用于dns解析查询,dig/nslookup等命令(可选操作)
 yum install -y bind-utils
 #安装tcpdump查包工具,用于包检查(可选操作)
 yum install -y tcpdump

2.配置vpp接管网口

  这里不具体描述vpp接管网口的过程,具体编译安装VPP及运行可以参考文章<编译安装VPP及运行>

#下面就简单描述VPP结果过程
ifconfig enp1s0 down
ifconfig enp2s0 down
ifconfig enp3s0 down
ifconfig enp4s0 down
ifconfig enp5s0 down
systemctl restart vpp

3.VPP相关配置

  这里设置WAN口为g0,代表上述enp1s0网口。LAN口g1,g2,g3,g4按照顺序如上一一对应。如下命令在vppctl中执行。

# 设置WAN口G0信息数据,MAC自行配置
set int state g0 up
set int mac address g0 00:11:22:33:44:55
set dhcp client intfc g0 hostname vppgate

# 创建loop口设置IP,并挂接网桥
loopback create
set int l2 bridge loop0 1 bvi
set int ip address loop0 192.168.10.1/24
set int state loop0 up

# LAN口配置
set int l2 bridge g1 1
set int state g1 up
set int l2 bridge g2 1
set int state g2 up
set int l2 bridge g3 1
set int state g3 up
set int l2 bridge g4 1
set int state g4 up

# 创建tap口并映射到内核
create tap id 0 host-ip4-addr 192.168.10.2/24 host-if-name lstack
set int l2 bridge tap0 1
set int state tap0 up
# 查看配置
show int addr

# 设置源nat模式
nat44 add interface address g0
set interface nat44 in loop0 out g0
show nat44 interfaces

# 如果有目的nat需求,配置如下。(可选步骤)
nat44 add static mapping local 192.168.10.1 53 external g0 53 tcp
nat44 add static mapping local 192.168.10.1 53 external g0 53 udp
show nat44 static mappings
#nat44 add identity mapping external GigabitEthernet3/0/0 udp 53053  }

4.主机配置默认路由

  随后,可以在主机内核中,查看是否创建好的lstack网口。

#查看是否存在lstack接口
ip addr show lstack
#设置默认路由走向
ip route add default dev lstack via 192.168.10.1

5.配置DHCP服务

  进行dnsmasq服务配置,配置文件/etc/dnsmasq.conf,重点几项配置如下,然后重启dnsmasq服务。

#设置监听端口为lstack
interface=lstack
#删除注释标记,使得bind-interfaces选项执行
bind-interfaces
#设置监听地址为192.168.10.2
listen-address=192.168.10.2
dhcp-range=192.168.10.10,192.168.10.150,255.255.255.0,12h
#设置默认网关为192.168.10.1
dhcp-option=3,192.168.10.1

#dnsmasq默认开启dns server,这里设置dns名
domain=TestDomain
#设置分配到LAN口的DNS服务器IP为114.114.114.114。如果该条不指定,dnsmasq将从其上级获取响应dns请求用于解析。
dhcp-option=6,114.114.114.114
#设置指定域名的IP地址,该条目可以不加
#server=/baidu.com/220.181.38.148

#重启服务
systemctl restart dnsmasq

  至此,已基本实现路由器基本功能。客户端物理连接进设备某网口,或已连接后重启客户端网卡获取ip,即可实现正常上网功能。

6.配置DNS缓存服务

  这里因为采用dnsmasq,所有可以不采用vpp中DNS缓存服务。如果配置VPP中添加DNS解析服务器IP,将覆盖部分原dnsmasq中dns配置,VPP中相关配置命令如下可以作为参考。

bin dns_name_server_add_del 8.8.8.8
bin dns_enable_disable
#显示目前可用的DNS服务器IP
show dns servers
show dns cache verbose

《VPP结合dnsmasq制作家庭路由器(CentOS+VPP+Dnsmasq)》有1个想法

  1. bin dns_name_server_add_del 8.8.8.8
    bin dns_enable_disable
    这两条命令的作用没看明白

发表评论

邮箱地址不会被公开。 必填项已用*标注