近期发现Ubuntu基于ip rule add fwmark … lookup …所做的策略路由无法正常使用,而Debian正常。抓包的特征就是,出网数据包能应用到策略路由,也能抓到回应的数据包,但回应的数据包被内核丢弃,不会送达user space。 而ip rule add from … lookup …则正常。 查找资料得知是rp_filter的影响(见此:https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt),继而发现Ubuntu的/etc/sysctl.d是有 […]
Category: 操作系统
Linux Policy-based site-to-site IPsec VPN动态IP的配置及内网穿透的应用(StrongSwan)
上一篇文章提到了一点StrongSwan的配置。 本文继续使用StrongSwan。 StrongSwan的left和right是支持使用域名的,利用此可以实现动态IP的支持;上一篇文章用了type=transport模式转发UDP端口构建L2TPv3,如果没有L2组网的需求,其实可以直接利用type=tunnel模式实现L3转发。 网络拓扑: 上图中的路由器lan-router1和lan-router2都是通过pppoe接入互联网的,域名lan-router1.router和lan-router2.router通过ddns分别解析到了各自pppoe0的IP地址上;server1和server […]
Linux L2TPv3以及ip-xfrm的配置
L2TPv3:http://man7.org/linux/man-pages/man8/ip-l2tp.8.html ip-xfrm:http://man7.org/linux/man-pages/man8/ip-xfrm.8.html 这两个都是kernel内置的功能,通过这两个可以直接构建加密的VPN。 本文尝试使用ip-xfrm创建加密的隧道,并基于此隧道构建L2TPv3 VPN。 1. 生成密钥与ID 不使用StrongSwan,手动配置ip-xfrm时需要用到:
1 2 3 4 |
HASH_KEY=0x`dd if=/dev/urandom count=32 bs=1 2> /dev/null | xxd -p -c 64` ENCRYPT_KEY=0x`dd if=/dev/urandom count=32 bs=1 2> /dev/null | xxd -p -c 64` ID=0x`dd if=/dev/urandom count=4 bs=1 2> /dev/null | xxd -p -c 8` echo -e "HASH_KEY=${HASH_KEY}\nENCRYPT_KEY=${ENCRYPT_KEY}\nID=${ID}" |
复制上面四行命令后输出的内容,粘贴到left和right […]
[Updated] libvirt & qemu change VNC password without restart
文章【libvirt & qemu无需重启(在线)更改VNC密码】已于2019-02-17更新。 有两个方法,一个是通过libvirt的virDomainUpdateDeviceFlags接口,另一个是通过qemu-monitor。 以下把“DOMAIN_NAME”替换为虚拟机的名称,“YOU_NEW_VNC_PASSWORD”替换为你的新密码。 通过virDomainUpdateDeviceFlags接口 使用libvirt管理虚拟机的情况下,这个方法是首选,libvirt官方是不推荐使用了libvirt的情况下操纵qemu-monitor的。 首先编写VNC graphic的XML […]
qemu with pool/volume storage: Could not open ‘xxxxxxx’: Permission denied
volume信息:
1 2 3 4 |
# virsh vol-list test Name Path ------------------------------------------------------------------------------ test.qcow2 /virt/test.qcow2 |
虚拟机disk配置:
1 2 3 4 5 6 7 8 9 |
# virsh dumpxml Test ... <disk type='volume' device='disk'> <driver name='qemu' type='qcow2'/> <source pool='test' volume='test.qcow2'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </disk> ... |
启动虚拟机:
1 2 3 |
# virsh start Test error: Failed to start domain Test error: internal error: process exited while connecting to monitor: 2019-02-06T12:54:47.722297Z qemu-system-x86_64: -drive file=/virt/test.qcow2,format=qcow2,if=none,id=drive-virtio-disk0: Could not open '/virt/test.qcow2': Permission denied |
查看syslog:
1 2 3 4 |
# cat /var/log/syslog ... kernel: [ 6551.331932] audit: type=1400 audit(1549457961.800:209): apparmor="DENIED" operation="open" profile="libvirt-5831a051-78ee-43b4-a15d-6e520b1b3ab7" name="/virt/test.qcow2" pid=27204 comm="qemu-system-x86" requested_mask="r" denied_mask="r" fsuid=0 ouid=0 ... |
似乎没找比较好的方法解决此问题。 一个选择是弃用type=’volume’,改成type=’file’。 另一种选择是关闭apparmor:
1 2 3 4 5 |
# vim /etc/libvirt/qemu.conf ... security_driver = "none" ... # systemctl restart libvirtd |
&n […]