VPP HomeRouter
本文主要用于测试玩耍,仅供参考,商用建议谨慎选择。如果采用ubuntu系统可参考VPP官方相关文档。本文基于centos7.6系统,本文源站链接。
1.前置条件准备
在此之前最好准备相关物理设备,或PC+物理网卡。本文选用dnsmasq作为轻量级dhcp服务,相关配置可参考Dnsmasq使用参考入门。
centos系统内相关配置如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#安装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及运行>
1 2 3 4 5 6 7 |
#下面就简单描述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中执行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# 设置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网口。
1 2 3 4 |
#查看是否存在lstack接口 ip addr show lstack #设置默认路由走向 ip route add default dev lstack via 192.168.10.1 |
5.配置DHCP服务
进行dnsmasq服务配置,配置文件/etc/dnsmasq.conf,重点几项配置如下,然后重启dnsmasq服务。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#设置监听端口为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中相关配置命令如下可以作为参考。
1 2 3 4 5 |
bin dns_name_server_add_del 8.8.8.8 bin dns_enable_disable #显示目前可用的DNS服务器IP show dns servers show dns cache verbose |
微信赞赏
支付宝赞赏
bin dns_name_server_add_del 8.8.8.8
bin dns_enable_disable
这两条命令的作用没看明白