Press "Enter" to skip to content

灰黑化挥花悔黑 Posts

使用Ubuntu做网关

在搭建Ubuntu的局域网网络环境时,往往需要独立组网,并构建内外网的沟通。在尝试了海蜘蛛、pfense、爱快之后,还是根据自己的需要来使用ubuntu搭建一个小小的软路由吧。毕竟不需要那么大的功能。
tips:
1. 海蜘蛛和pfense是基于freebsd之上的软路由,但海蜘蛛不支持在虚拟机上长期使用;
2. 爱快是基于Linux 3.18内核的软路由,并且性能是最高的,支持64位x86环境,但硬件需求也是最高的;
3. 三者都免费。


环境准备

设定ens3连接外网的网卡,ens5为虚拟机专用网卡。

$ sudo hostnamectl set-hostname gateway
#安装所需服务器软件
$ sudo apt install -y ufw dnsmasq dnsmasq-utils
$ sudo apt install -y openssh-server openssh-clients

克隆而来的虚拟机如果先前装过openssh-server的话,再连接会出现被服务器端reset的情景。
则需要执行:

$ sudo dpkg-reconfigure openssh-server

搭建DNS和DHCP服务器

这里主要是使用DNSMASQ

$ sudo vi /etc/dnsmasq.conf
———————————————————————
#DNS软件配置
#开启以下配置
domain-needed
bogus-priv
#DHCP配置
#指定DHCP监听端口
interface=ens5
#指定监听IP
listen-address=192.168.1.254
#指定不广播网络接口
no-dhcp-interface=ens3
#DHCP地址池和生效时间
dhcp-range=192.168.1.100,192.168.1.200,24h
#DHCP服务器物理地址和主机名
dhcp-host=52:54:00:3a:8a:14,gateway,192.168.1.254
#指定网关
dhcp-option=option:router,192.168.1.254
#指定时间服务器
dhcp-option=option:ntp-server,192.168.1.254
#指定DNS服务器
dhcp-option=option:dns-server,192.168.1.254
#指定网络掩码
dhcp-option=option:netmask,255.255.255.0
——————————————————————
$ sudo systemctl enable dnsmasq
$ sudo systemctl start dnsmasq

使用UFW做端口转发

UFW是Ubuntu环境下的iptables前端工具,避免了要写防火墙脚本的麻烦,而且将配置文件服务化,省了很多事情。
首先,修改/etc/sysctl.conf,添加“net.ipv4.ip_forward = 1”。
然后,修改/etc/default/ufw,将

DEFAULT_FORWARD_POLICY="DROP"

修改为

DEFAULT_FORWARD_POLICY="ACCEPT"

最后,修改/etc/ufw/before.rules文件,在最末的commit下一行添加:

# Nat rules
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.1.0/24 -o ens3 -j MASQUERADE
-A ufw-before-forward -i ens5 -o ens3 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-forward -i ens5 -o ens3 -j ACCEPT
COMMIT

一定在commit之后,而且不要忘了最后的commit

最后扫尾的防火墙配置

$ sudo systemctl enable ufw
$ sudo systemctl start ufw
$ sudo ufw allow ssh
$ sudo ufw allow ftp
$ sudo ufw allow http
$ sudo ufw allow https
$ sudo ufw allow 53
$ sudo ufw allow in on ens3 to any port 80
$ sudo ufw allow in on ens5 to any port 80
$ sudo ufw enable
$ sudo ufw reload

Fix ‘libguestfs launch fail’

在小破本Thinkpad X200s升级为X201s之后,我将其重新安装了Ubuntu 16.04.3 LTS版本并将其升级到最新版本。在兴冲冲搭建完成KVM虚拟化环境之后,并成功完成Centos7和Ubuntu虚拟机的样本之后,我打算对其副本进行sysprep操作的时候,提示'export LIBGUESTFS_TRACE=1 LIBGUESTFS_DEBUG=1',无法进行操作。
进行了libguest-test-tool进行了检查操作之后,系统提示‘libguestfs launch fail’错误。在排除了网上列出的库文件错误、版本bug和supermin配置文件错误之后,我把怀疑方向转向了内核,原因是有内核风暴的错误出现。
首先,安装了linux-generic-hwe-16.04-edge这个服务器内核,然后问题依旧。
然后,把hwe内核和最后升级得来的4.13版本内核卸载并重启之后,问题解决。

$ sudo virt-sysprep -d centos7
[   0.0] Examining the guest ...
[   6.9] Performing "abrt-data" ...
[   6.9] Performing "bash-history" ...
[   7.0] Performing "blkid-tab" ...
[   7.0] Performing "crash-data" ...
[   7.0] Performing "cron-spool" ...
[   7.0] Performing "dhcp-client-state" ...
[   7.0] Performing "dhcp-server-state" ...
[   7.0] Performing "dovecot-data" ...
[   7.0] Performing "logfiles" ...
[   7.1] Performing "machine-id" ...
[   7.1] Performing "mail-spool" ...
[   7.1] Performing "net-hostname" ...
[   7.1] Performing "net-hwaddr" ...
[   7.1] Performing "pacct-log" ...
[   7.1] Performing "package-manager-cache" ...
[   7.1] Performing "pam-data" ...
[   7.1] Performing "puppet-data-log" ...
[   7.1] Performing "rh-subscription-manager" ...
[   7.1] Performing "rhn-systemid" ...
[   7.1] Performing "rpm-db" ...
[   7.1] Performing "samba-db-log" ...
[   7.1] Performing "script" ...
[   7.1] Performing "smolt-uuid" ...
[   7.1] Performing "ssh-hostkeys" ...
[   7.1] Performing "ssh-userdir" ...
[   7.1] Performing "sssd-db-log" ...
[   7.1] Performing "tmp-files" ...
[   7.1] Performing "udev-persistent-net" ...
[   7.1] Performing "utmp" ...
[   7.1] Performing "yum-uuid" ...
[   7.1] Performing "customize" ...
[   7.1] Setting a random seed
[   7.2] Performing "lvm-uuids" ...

虚拟机的mac地址也得到更新,避免了删除网卡再新重建网卡的麻烦。
macdiff
最后,使用apt-mark来保留旧内核以解决使用apt upgrade会升级内核的问题。

$ sudo apt-mark hold linux-image-4.10.0-28-generic
linux-image-4.10.0-28-generic 设置为保留。
$ sudo apt-mark hold linux-image-extra-4.10.0-28-generic
linux-image-extra-4.10.0-28-generic 设置为保留。

角磨机上手

20180130
家里面的地板砖翘起、房门铜条坏掉了,打听了一下修理价格都要上百,干脆自己动手。
(●'◡'●)

Fix “network ‘default’ is not active”

在笔记本上的Ubuntu桌面版中使用NAT模式的虚拟机时,会出现如下情况。
network_default_not_active
在Ubuntu的KVM虚拟化环境中,默认(default)NAT网络是由libvirtd虚拟化管理程序自动创建的。由于默认情况下,这个NAT网络是指向有线网卡的,如果只使用无线网卡的话,就会出现上述虚机无法启动的情况。
解决问题的方法就是重新手动启动default NAT 网络。

$ sudo virsh net-list --all
 名称               状态     自动开始  持久
----------------------------------------------------------
 default              不活跃  否           是

$ sudo virsh net-start  default

$ sudo virsh net-list --all
 名称               状态     自动开始  持久
----------------------------------------------------------
 default              活动     否           是

$ sudo virsh net-autostart default
网络default标记为自动启动

$ sudo virsh net-list --all
 名称               状态     自动开始  持久
----------------------------------------------------------
 default              活动     是           是

然后就可以启动使用default网络NAT模式的虚机了。