由于centos7的yum不带miniupnpd,所以只能编译安装。
参考:
https://github.com/miniupnp/miniupnp/blob/master/miniupnpd/INSTALL
下载:
wget https://github.com/miniupnp/miniupnp/archive/miniupnpd_2_1.tar.gz
安装依赖包:
yum install gcc uuid-devel iptables-devel -y
编译安装:
make -f Makefile.linux config.h
make -f Makefile.linux
make -f Makefile.linux install
生成的命令在/usr/sbin/miniupnpd
配置文件在/etc/miniupnpd/miniupnpd.conf
完成!
2019年6月28日星期五
2019年6月26日星期三
Debian9 开启 FullCone NAT
上一篇是Centos 7 开启fullcone nat:
https://techshd.blogspot.com/2019/06/centos7-fullcone-nat.html
这一篇讲下Debian 9的,步骤几乎是一样的,重复的就不写的,这里提3点要attention的。
第一点是debian提供了多个版本的源码包,所以只要指定当前版本号的源码包安装就可以了,比如我的内核版本是4.9.0-9-amd64,那安装下面的包就有内核源码了。
apt install linux-headers-4.9.0-9-amd64 -y
第二点是依赖包,按下面的命令提前装上就行。
apt install build-essential autoconf libtool bison flex libnftnl-dev libmnl-dev -y
第三点切换到iptables v1.6
git checkout 54c262605c54a18a1c30cd41d47decaca5e7182e
https://techshd.blogspot.com/2019/06/centos7-fullcone-nat.html
这一篇讲下Debian 9的,步骤几乎是一样的,重复的就不写的,这里提3点要attention的。
第一点是debian提供了多个版本的源码包,所以只要指定当前版本号的源码包安装就可以了,比如我的内核版本是4.9.0-9-amd64,那安装下面的包就有内核源码了。
apt install linux-headers-4.9.0-9-amd64 -y
第二点是依赖包,按下面的命令提前装上就行。
apt install build-essential autoconf libtool bison flex libnftnl-dev libmnl-dev -y
第三点切换到iptables v1.6
git checkout 54c262605c54a18a1c30cd41d47decaca5e7182e
Centos7 开启 FullCone NAT
作者和源码:https://github.com/Chion82/netfilter-full-cone-nat
步骤简要:
1.编译fullcone nat内核模块
2.编译iptables,嵌入fullcone nat模块
编译内核模块需要内核的源码,centos7安装kernel-devel即可下载内核源码到本地,但用yum安装的kernel-devel很可能是已经update过的,也就是和目前的系统内核版本不一致,所以为了保持一致,先升级kernel,顺便安装上kernel-devel。
yum install kernel kernel-devel -y
安装完重启使新内核生效。
uname -a
编译前先安装必要的包:
yum install gcc libtool -y
开始编译fullcone nat内核模块:
cd /usr/src
git clone https://github.com/Chion82/netfilter-full-cone-nat.git
cd netfilter-full-cone-nat
make
如果没有报错,内核模块已经生成在当前目录xt_FULLCONENAT.ko
将这个模块放到modules对应位置,建立模块依赖,载入模块。
cp /usr/src/netfilter-full-cone-nat/xt_FULLCONENAT.ko /lib/modules/`uname -r`/kernel/net/netfilter/
depmod -a
modprobe xt_FULLCONENAT
查看模块
lsmod | grep xt_FULLCONENAT
接下来编译iptables,centos7的iptables版本是v1.4.21,为了减少可能出现的兼容性问题,同样以这个版本来编译。
cd /usr/src
git clone git://git.netfilter.org/iptables
cd iptables
git checkout 482c6d3731e2681cb4baae835c294840300197e6
cp /usr/src/netfilter-full-cone-nat/libipt_FULLCONENAT.c /usr/src/iptables/extensions/
./autogen.sh
./configure
make
make install
checkout就是切换至v1.4.21版本,新编译的iptables位置在/usr/local/sbin/iptables,不会和原先的冲突。
编译安装完成,重启下系统使新的iptables生效。
接下来是使用方法。
通过iptables命令来开启fullcone nat,eth0是外网网卡
iptables -t nat -A POSTROUTING -o eth0 -j FULLCONENAT
iptables -t nat -A PREROUTING -i eth0 -j FULLCONENAT
注意这里和以往用法的不同,以往MASQUERADE只需要1条-o命令,FULLCONENAT需要2条命令,需要在-i入口处多添加1条。
测试:
步骤简要:
1.编译fullcone nat内核模块
2.编译iptables,嵌入fullcone nat模块
编译内核模块需要内核的源码,centos7安装kernel-devel即可下载内核源码到本地,但用yum安装的kernel-devel很可能是已经update过的,也就是和目前的系统内核版本不一致,所以为了保持一致,先升级kernel,顺便安装上kernel-devel。
yum install kernel kernel-devel -y
安装完重启使新内核生效。
uname -a
编译前先安装必要的包:
yum install gcc libtool -y
开始编译fullcone nat内核模块:
cd /usr/src
git clone https://github.com/Chion82/netfilter-full-cone-nat.git
cd netfilter-full-cone-nat
make
如果没有报错,内核模块已经生成在当前目录xt_FULLCONENAT.ko
将这个模块放到modules对应位置,建立模块依赖,载入模块。
cp /usr/src/netfilter-full-cone-nat/xt_FULLCONENAT.ko /lib/modules/`uname -r`/kernel/net/netfilter/
depmod -a
modprobe xt_FULLCONENAT
查看模块
lsmod | grep xt_FULLCONENAT
接下来编译iptables,centos7的iptables版本是v1.4.21,为了减少可能出现的兼容性问题,同样以这个版本来编译。
cd /usr/src
git clone git://git.netfilter.org/iptables
cd iptables
git checkout 482c6d3731e2681cb4baae835c294840300197e6
cp /usr/src/netfilter-full-cone-nat/libipt_FULLCONENAT.c /usr/src/iptables/extensions/
./autogen.sh
./configure
make
make install
checkout就是切换至v1.4.21版本,新编译的iptables位置在/usr/local/sbin/iptables,不会和原先的冲突。
编译安装完成,重启下系统使新的iptables生效。
接下来是使用方法。
通过iptables命令来开启fullcone nat,eth0是外网网卡
iptables -t nat -A POSTROUTING -o eth0 -j FULLCONENAT
iptables -t nat -A PREROUTING -i eth0 -j FULLCONENAT
注意这里和以往用法的不同,以往MASQUERADE只需要1条-o命令,FULLCONENAT需要2条命令,需要在-i入口处多添加1条。
测试:
2019年6月25日星期二
NAT类型理解简版
FullCone NAT:主机从A端口发送UDP,经过NAT设备,NAT设备会用一个固定端口B把这个UDP包发送出去,此时这个B端口会接受所有外网来的UDP包,并传发给主机。
Restricted Cone NAT:主机从A端口发送UDP,经过NAT设备,NAT设备会用一个固定端口B把这个UDP包发送给目标IP,此时这个B端口只会接受目标IP用任意源端口发来的包,并转发给主机。
Port Restricted Cone NAT:主机从A端口发送UDP,经过NAT设备,NAT设备会用一个固定端口B把这个UDP包发送给目标IP,此时这个B端口只会接受目标IP用特定源端口发来的包,并转发给主机,这个特定源端口就是目标IP接受UDP包时的目的端口。
Symmetric NAT:主机从A端口发送UDP,经过NAT设备,NAT设备每次都会用不同的端口把这个UDP包发送出去。
Restricted Cone NAT:主机从A端口发送UDP,经过NAT设备,NAT设备会用一个固定端口B把这个UDP包发送给目标IP,此时这个B端口只会接受目标IP用任意源端口发来的包,并转发给主机。
Port Restricted Cone NAT:主机从A端口发送UDP,经过NAT设备,NAT设备会用一个固定端口B把这个UDP包发送给目标IP,此时这个B端口只会接受目标IP用特定源端口发来的包,并转发给主机,这个特定源端口就是目标IP接受UDP包时的目的端口。
Symmetric NAT:主机从A端口发送UDP,经过NAT设备,NAT设备每次都会用不同的端口把这个UDP包发送出去。
2019年6月15日星期六
Debian9 通过KVM安装爱快软路由3.2.1
先安装和配置好KVM和桥接,我这里br0为内网,br1为外网。
下载爱快ISO,这里以当前的最新版3.2.1为例
wget -O iKuai8_x64_3.2.1.iso https://www.ikuai8.com/download.php?n=/3.x/iso/iKuai8_x64_3.2.1_Build201906121726.iso
放置到对应位置,我这里是/opt/kvm/iso/iKuai8_x64_3.2.1.iso
创建KVM虚拟机:
# 这是最重要一步,做一些说明。
# CPU为2核,内存4G,爱快64位要求的最低内存为4G,如果小于4G,则无法安装。
# 网卡必须选e1000,不要用默认的,默认的会导致网络不通。
# 网络为桥接模式,只有一个网卡,这个会做为内网网卡,在安装完成后再添加外网网卡。
VNC连接上后就可以安装了,安装步骤很简单,这里就不详说了。
添加外网网卡,走之前配置好的br1,网卡Model同样为e1000。
virsh attach-interface ikuai --type bridge --source br1 --model e1000 --live --config
重启一次使网卡生效。
virsh reboot ikuai
重启完成后就可以配置外网拨号了。
另外如果你觉得分配的4G内存太大,在安装完成后可以将内存降低,我这里测试降低到1G也可以正常使用。
优化:上面是基本的安装方法,可以尽量避免遇到错误,在安装完成后,可以继续做进一步的优化,将网卡类型修改为virtio,驱动为vhost,这样做的好处是跳过网卡虚拟层,让虚拟机的网卡直接交给host的内核来处理,可以有效减少CPU的占用,我这里实测CPU从70%降低到了35%。
virsh edit ikuai
修改model那行,然后在下面添加一行
virsh define /etc/libvirt/qemu/ikuai.xml
重启使用虚拟机生效。
virsh reboot ikuai
完成!
下载爱快ISO,这里以当前的最新版3.2.1为例
wget -O iKuai8_x64_3.2.1.iso https://www.ikuai8.com/download.php?n=/3.x/iso/iKuai8_x64_3.2.1_Build201906121726.iso
放置到对应位置,我这里是/opt/kvm/iso/iKuai8_x64_3.2.1.iso
创建KVM虚拟机:
virt-install --name=ikuai --vcpus=2 --ram=4096 \ --os-type linux \ --cdrom=/opt/kvm/iso/iKuai8_x64_3.2.1.iso \ --disk path=/opt/kvm/iKuai.img,format=qcow2,size=10,bus=sata \ --network bridge=br0,model=e1000 \ --noautoconsole \ --graphics vnc,listen=0.0.0.0,port=5901
# 这是最重要一步,做一些说明。
# CPU为2核,内存4G,爱快64位要求的最低内存为4G,如果小于4G,则无法安装。
# 网卡必须选e1000,不要用默认的,默认的会导致网络不通。
# 网络为桥接模式,只有一个网卡,这个会做为内网网卡,在安装完成后再添加外网网卡。
VNC连接上后就可以安装了,安装步骤很简单,这里就不详说了。
添加外网网卡,走之前配置好的br1,网卡Model同样为e1000。
virsh attach-interface ikuai --type bridge --source br1 --model e1000 --live --config
重启一次使网卡生效。
virsh reboot ikuai
重启完成后就可以配置外网拨号了。
另外如果你觉得分配的4G内存太大,在安装完成后可以将内存降低,我这里测试降低到1G也可以正常使用。
优化:上面是基本的安装方法,可以尽量避免遇到错误,在安装完成后,可以继续做进一步的优化,将网卡类型修改为virtio,驱动为vhost,这样做的好处是跳过网卡虚拟层,让虚拟机的网卡直接交给host的内核来处理,可以有效减少CPU的占用,我这里实测CPU从70%降低到了35%。
virsh edit ikuai
修改model那行,然后在下面添加一行
<interface type='bridge'> <mac address='52:54:00:70:70:70'/> <source bridge='br0'/> <model type='virtio'/> <driver name='vhost'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface>define使配置文件生效:
virsh define /etc/libvirt/qemu/ikuai.xml
重启使用虚拟机生效。
virsh reboot ikuai
完成!
2019年6月12日星期三
Debian9上通过KVM安装群晖
先配置好kvm环境,桥接模式。
下载创建群晖所需要的文件:
http://down.nas2x.com/synology/dsm/6.1/
这里是以6.17为例,只需要下载这2个文件:synoboot.img和DSM_DS3617xs_15284.pat,第一个文件是群晖的启动镜像,相当于boot分区,安装和启动群晖都要靠它,第二个是群晖真正的系统。
img文件上传到debian系统里的合适位置,我这里是放在/opt/kvm/iso/synoboot.img,pat文件就放在PC本地。
创建群晖系统:
上面命令的解释和注意事项:
1.2 core cpu,1G内存,linux系统
2.创建2个img文件,也就是2块硬盘,第一个是启动盘,就是之前下载的,提前把文件放到对应的位置,第二个是群晖系统盘,20G,系统会被安装在这里,2块盘的类型都要选sata模式。
3.网络为桥接模式,另外网卡model指定为e1000,必须用这个model,如果不指定,默认会是rtl8139,导致网络不通。
4.vnc端口指定为5901
创建完成后,kvm会自动启动这个系统,此时就可以用vnc去连接5901端口,查看启动状态,判断是否启动成功,除此之外没有什么别的用处,不需要去操作什么。
然后在浏览器上打开这个网址:http://find.synology.com
会自动搜索局域网内的群晖,搜索到后,就可以开始安装了,安装模式选手动,然后选择之前下载的pat文件,等待1分钟左右,整个群晖的安装就完成了。
下载创建群晖所需要的文件:
http://down.nas2x.com/synology/dsm/6.1/
这里是以6.17为例,只需要下载这2个文件:synoboot.img和DSM_DS3617xs_15284.pat,第一个文件是群晖的启动镜像,相当于boot分区,安装和启动群晖都要靠它,第二个是群晖真正的系统。
img文件上传到debian系统里的合适位置,我这里是放在/opt/kvm/iso/synoboot.img,pat文件就放在PC本地。
创建群晖系统:
virt-install --name=syno --vcpus=2 --ram=1024 \ --os-type linux \ --disk path=/opt/kvm/iso/synoboot.img,bus=sata \ --disk path=/opt/kvm/syno.img,format=qcow2,size=20,bus=sata \ --boot menu=on \ --network bridge=br0,model=e1000 \ --noautoconsole \ --graphics vnc,listen=0.0.0.0,port=5901
上面命令的解释和注意事项:
1.2 core cpu,1G内存,linux系统
2.创建2个img文件,也就是2块硬盘,第一个是启动盘,就是之前下载的,提前把文件放到对应的位置,第二个是群晖系统盘,20G,系统会被安装在这里,2块盘的类型都要选sata模式。
3.网络为桥接模式,另外网卡model指定为e1000,必须用这个model,如果不指定,默认会是rtl8139,导致网络不通。
4.vnc端口指定为5901
创建完成后,kvm会自动启动这个系统,此时就可以用vnc去连接5901端口,查看启动状态,判断是否启动成功,除此之外没有什么别的用处,不需要去操作什么。
然后在浏览器上打开这个网址:http://find.synology.com
会自动搜索局域网内的群晖,搜索到后,就可以开始安装了,安装模式选手动,然后选择之前下载的pat文件,等待1分钟左右,整个群晖的安装就完成了。
2019年6月3日星期一
kvm host os reboot or shutdown with guest shutdown immediately
when you shutdown or reboot kvm host os ,and you hope guset os shutdown immediately without wait,you can do this:
vi /etc/default/libvirt-guests
vi /etc/default/libvirt-guestsadd in final
ON_SHUTDOWN=shutdown SHUTDOWN_TIMEOUT=1guest os will be destoryed if that can't shutdown within 1 second.
订阅:
博文 (Atom)
更换阿里云源
CentOS 7: wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo http:/...
-
由于centos7的yum不带miniupnpd,所以只能编译安装。 参考: https://github.com/miniupnp/miniupnp/blob/master/miniupnpd/INSTALL 下载: wget https://github.com/...
-
上一篇是Centos 7 开启fullcone nat: https://techshd.blogspot.com/2019/06/centos7-fullcone-nat.html 这一篇讲下Debian 9的,步骤几乎是一样的,重复的就不写的,这里提3点要attenti...
-
作者和源码:https://github.com/Chion82/netfilter-full-cone-nat 步骤简要: 1.编译fullcone nat内核模块 2.编译iptables,嵌入fullcone nat模块 编译内核模块需要内核的源码,centos...