基于KVM虚拟化的软路由DIY(二):系统创建与配置(完结)

上一篇:基于KVM的软路由DIY(一):编译OpenWrt
下一篇:无

准备工作

这里我通过VNC远程连接到服务器使用VirtManager图形化创建,具体的安装方法这里就略过了,网上教程很多。

准备固件

经过上篇文章的步骤编译后,得到了x86的OpenWrt固件,文件路径在/bin/targets/x86/x86_64/
这个路径下文件很多,以下是上一篇文章使用x86预设配置生成的文件

config.buildinfo                                  openwrt-x86-64-generic-squashfs-combined-efi.vmdk  sha256sums
feeds.buildinfo                                   openwrt-x86-64-generic-squashfs-rootfs.img         version.buildinfo
openwrt-x86-64-generic-kernel.bin                 openwrt-x86-64-generic.manifest
openwrt-x86-64-generic-squashfs-combined-efi.img  packages

其中openwrt-x86-64-generic-squashfs-combined-efi.vmdk这个以vmdk结尾的文件直接就是虚拟机硬盘文件了,可以直接装载到VMware,QEMU等虚拟机软件中,比较方便。
复制这个文件到你喜欢的位置,将作为虚拟机使用的硬盘。

创建虚拟机实例

通过导入现有磁盘映像的方式x86_64架构的虚拟机,如图

随后下一步选择现有的存储路径(也就是vmdk文件),操作系统类型默认或Generic即可。
其他步骤和创建一般的虚拟机步骤差不多,内存需求也不大,一般情况给个几百M就可以了,我的给了512M(实际运行时闲余内存能有300多M),CPU我也只给了1个逻辑核心,x86架构性能还是很强的,对于小型网络而言这些配置足够了。

基本配置完成后,先不要立即启动虚拟机,我们还需要配置两张虚拟网卡

在本篇文章中,OpenWrt虚拟机将以旁路由的方式在局域网中运作。

配置网卡

在虚拟机详情配置页中,添加两张网卡,设备型号均选e1000(千兆网卡型号),网络源一张选择NAT(用于使用宿主机内部虚拟网络控制,用于调试),一张选择桥接(接入宿主机物理网络,为外部网络提供服务)。

记住NAT和桥接网卡对应的MAC地址(比如我这里f2结尾的是NAT,66结尾的是桥接)

至此,虚拟机硬件配置已完成,可以开机了

系统配置

启动虚拟机

启动虚拟机后,打开控制窗口,等待个大概30s,敲几下回车,就能看到OpenWrt的命令行界面了,如图。

配置网络

虚拟机此时有两张网卡,openwrt会自动配置一张为静态地址,一张为DHCP。然后因为防火墙策略和网络结构等原因,可能会暂时无法进入luci web界面,这时候就需要手动配置网络。

检查接口名称与网卡的对应关系

使用命令:

ifconfig | grep HWaddr

即可输出接口名称与网卡IP,输出示例如下:

eth0      Link encap:Ethernet  HWaddr 52:54:00:F5:D4:F2
eth1      Link encap:Ethernet  HWaddr 52:54:00:16:9B:66

可得知eth0就是接入了宿主机内部虚拟机网络的接口,而eth1是通过桥接接入了外部网络的。

调整网络接口配置

结合前面配置虚拟机网卡信息时的参数,手动调整接口类型。

编辑/etc/config/network文件

vi /etc/config/network

将eth0加入lan,eh1加入wan,lan和wan均设置为DHCP模式,示例如下,只配置ifname和proto即可:

config interface 'lan'
        option ifname 'eth0'
        option proto 'dhcp'

config interface 'wan'
        option ifname 'eth1'
        option proto 'dhcp'

保存文件,使用命令reboot重启路由器

Luci

检查IP地址

先检查OpenWrt路由器IP地址,可以使用命令

ifconfig | grep inet

示例输出如下:

          inet addr:192.168.122.8  Bcast:192.168.122.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:ff:fef5:d4f2/64 Scope:Link
          inet addr:192.168.5.117  Bcast:255.255.255.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:ff:fe16:9b66/64 Scope:Link
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host

这里有两个ip分别是192.168.122.8和192.168.5.117,其中前者是宿主虚拟机网络内部IP,后者是外部网络IP。

宿主机可以通过浏览器访问192.168.122.8即可进入Luci登录界面,默认用户名root,密码password

修改防火墙规则

luci界面的网络 -> 防火墙中,入站数据,出站数据,转发均设为允许,IP动态伪装和MSS钳制均关闭,保存

修改接口IP

在luci界面的网络 -> 接口中,把接入外部网络的那个接口设置为静态地址(本文章例子中为接入了防火墙区域WAN的接口eh1),填写好固定的静态IP,且在高级设置中勾选默认路由,保存。

检查域名解析和网络是否正常

命令行下执行nslookup www.baidu.comping www.baidu.com即可

若不通,则需要检查路由表和配合traceroute命令进行网络路由问题的排查,确保网络通过外部接口的网关进行互联网访问(即在本文章例子中,应当会存在0.0.0.0/0 到 192.168.5.1的路由表规则),同时也检查外部接口的网络是否正常。

网络设备配置

修改网关地址

这一步很简单,直接将网卡的网关一栏设置为192.168.5.117即可(即本例中,软路由接入外部网络的网卡的IP)

检查网络和路由

在客户机上(以Windows为例)使用tracert命令追踪路由
查看第一个出口IP是否为本例中的192.168.5.117,如果是则表示成功
另外如果不出意外的话,第二条也应该为192.168.5.1
效果如图:

至此,网络中的设备已经可以通过虚拟化软路由作为网关来进行互联网的访问了,软路由上的各种功能(如去广告,流量统计或其他你能想到的功能)也会对设置了软路由为网关的设备生效。

配置主路由DHCP服务

目前我们需要手动配置网卡静态地址才能使用软路由,有个好处是可以让网络中的设备按需配置,软路由配置出错的时候也不至于整个网络中所有设备出问题。
而如果有默认让网络中所有设备都使用软路由作为网关的需求的话,就可以在主路由(本例中的192.168.5.1)中配置DHCP服务器的参数,设置网关为192.168.5.117即可,这样一来,所有接入到网络中的设备通过DHCP获取网络配置的时候,都能享受到软路由的功能了。