Rootop 服务器运维与web架构

2022-10-18
发表者 Venus
通过单个配置文件实现腾讯云双网卡配置多ip已关闭评论

通过单个配置文件实现腾讯云双网卡配置多ip

之前都是用子配置文件方式,比如 ifcfg-eth0:0 ifcfg-eth0:1这种,需要创建多个配置文件。
现在通过单个配置文件实现多ip配置。

# 第一块网卡

[root@VM-0-3-centos network-scripts]# cat ifcfg-eth0
BOOTPROTO=static
DEVICE=eth0
HWADDR=52:54:00:4f:c4:e4
ONBOOT=yes
PERSISTENT_DHCLIENT=yes
TYPE=Ethernet
USERCTL=no
IPADDR=172.17.0.3
NETMASK=255.255.240.0
GATEWAY=172.17.0.1

IPADDR1=172.17.0.13
NETMASK1=255.255.240.0

IPADDR2=172.17.0.14
NETMASK2=255.255.240.0

IPADDR3=172.17.0.15
NETMASK3=255.255.240.0

IPADDR4=172.17.0.2
NETMASK4=255.255.240.0

IPADDR5=172.17.0.8
NETMASK5=255.255.240.0

# 第二块网卡配置

[root@VM-0-3-centos network-scripts]# cat ifcfg-eth1
BOOTPROTO=static
DEVICE=eth1
ONBOOT=yes
PERSISTENT_DHCLIENT=yes
TYPE=Ethernet
USERCTL=no
IPADDR=172.17.0.6
NETMASK=255.255.240.0

IPADDR1=172.17.0.11
NETMASK1=255.255.240.0

IPADDR2=172.17.0.12
NETMASK2=255.255.240.0

IPADDR3=172.17.0.16
NETMASK3=255.255.240.0

IPADDR4=172.17.0.4
NETMASK4=255.255.240.0

IPADDR5=172.17.0.5
NETMASK5=255.255.240.0

# 配置策略路由

echo "10 t1" >> /etc/iproute2/rt_tables
echo "20 t2" >> /etc/iproute2/rt_tables
ip route add default dev eth0 via 172.17.0.1 table 10
ip route add default dev eth1 via 172.17.0.1 table 20
ip rule add from 172.17.0.13 table 10
ip rule add from 172.17.0.14 table 10
ip rule add from 172.17.0.15 table 10
ip rule add from 172.17.0.2 table 10
ip rule add from 172.17.0.3 table 10
ip rule add from 172.17.0.8 table 10

ip rule add from 172.17.0.11 table 20
ip rule add from 172.17.0.12 table 20
ip rule add from 172.17.0.16 table 20
ip rule add from 172.17.0.4 table 20
ip rule add from 172.17.0.5 table 20
ip rule add from 172.17.0.6 table 20

# 测试ip连通性

#!/bin/bash
ip a | grep -o -e 'inet [0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}'|grep -v "127.0.0"|awk '{print $2}' > ip

while read line || [[ -n ${line} ]]
do
        line=`curl -s --interface $line -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.62" https://ipv4.icanhazip.com/`
        echo "ip地址 " $line
done < ip

2022-10-09
发表者 Venus
vmdk转阿里云raw已关闭评论

vmdk转阿里云raw

本地vmware虚拟机的vmdk转成阿里云的raw格式镜像

根据官方文档:https://help.aliyun.com/document_detail/57187.html

D:\>qemu-img convert -f vmdk -O raw 1.vmdk 2.raw
qemu-img: error while writing at byte 0: Input/output error

报如上的错误,发工单以后可以通过下面参数转换

qemu-img.exe convert 1.vmdk -O vpc -o subformat=dynamic 2.raw

在等待工单回复过程中找到如下参数转换完成,同样可以导入到镜像。

D:\>qemu-img convert 1.vmdk -f vmdk -O qcow2 2.qcow2

2022-08-23
发表者 Venus
xargs占位符已关闭评论

xargs占位符

比如在log目录下有3个文件,文件名为a、b、c,现在需要改名,加上.bak。

[root@iZj6c5o8z3bqyepm9pw4xsZ log]# ll
总用量 0
-rw-r--r-- 1 root root 0 8月  23 09:46 a
-rw-r--r-- 1 root root 0 8月  23 09:46 b
-rw-r--r-- 1 root root 0 8月  23 09:46 c

通过-I参数指定一个占位符

[root@iZj6c5o8z3bqyepm9pw4xsZ log]# ls | xargs -I filename sh -c "mv filename filename.bak" 
[root@iZj6c5o8z3bqyepm9pw4xsZ log]# ll
总用量 0
-rw-r--r-- 1 root root 0 8月  23 09:46 a.bak
-rw-r--r-- 1 root root 0 8月  23 09:46 b.bak
-rw-r--r-- 1 root root 0 8月  23 09:46 c.bak

2022-08-10
发表者 Venus
系统日志时间和实际时间相差12小时已关闭评论

系统日志时间和实际时间相差12小时

# 问题:2个日志里的时间都是和实际差12小时
/var/log/messages
/var/log/secure

# 系统时区已经设置过

[root@instance-20220524-1844 ~]# date
2022年 08月 09日 星期二 22:26:56 CST

# 从当前系统时间设置硬件时钟

[root@instance-20220524-1844 ~]# hwclock -w

发现还是错误

最后通过重启日志服务解决

[root@instance-20220524-1844 ~]# systemctl restart rsyslog

2022-07-20
发表者 Venus
RouterOS开启container(容器)已关闭评论

RouterOS开启container(容器)

# 官方文档
https://help.mikrotik.com/docs/display/ROS/Container

提示:
容器功能只支持arm64和x86架构
需要RouterOS v7.4beta版本以上,这里用的版本为7.4rc2 Testing
根据官网文档来说,启用容器功能需要将软路由连上显示器,通过本地操作启用,不能通过winbox或者ssh之类的远程连接方式开启。
启用容器会产生安全问题
根据容器运行情况,可能需要较大内存和硬盘。

# 启用container 本地控制台操作,非远程
/system/device-mode/update container=yes
会提示强制断电,重新启动生效。

# 安装container package 也就是在 Extra packages 包里的 container-7.4rc2.npk
下载页面:https://mikrotik.com/download
下载地址:https://download.mikrotik.com/routeros/7.4rc2/all_packages-x86-7.4rc2.zip

把此包通过Files菜单里的Upload功能上传到ros里,然后重启ros。
在System菜单里的Packages功能查看安装结果。只要显示出来,就是安装成功。

执行
/container/print
没有任何错误提示的话,则安装完成。

# 为容器创建一个veth设备(Virtual Ethernet 虚拟以太网接口)
/interface/veth/add name=veth1 address=172.17.0.2/16 gateway=172.17.0.1

# 为容器创建一个桥接网络,并将veth加入。
/interface/bridge/add name=dockers
/ip/address/add address=172.17.0.1/16 interface=dockers
/interface/bridge/port add bridge=dockers interface=veth1

# 配置nat,让容器可以联网
/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.17.0.0/16


################################ 非必须 ###############################################
# 为容器创建环境变量
/container/envs/add name=pihole_envs key=TZ value="Europe/Riga"
/container/envs/add name=pihole_envs key=WEBPASSWORD value="mysecurepassword"
/container/envs/add name=pihole_envs key=DNSMASQ_USER value="root"
这个东西就是linux下的docker创建容器时的 -e 参数,为容器设置环境变量用的。

#定义目录挂载
/container/mounts/add name=etc_pihole src=disk1/etc dst=/etc/pihole
/container/mounts/add name=dnsmasq_pihole src=disk1/etc-dnsmasq.d dst=/etc/dnsmasq.d
这个东西就是linux下的docker创建容器时的 -v 参数,为容器映射宿主机目录用的。
################################ 非必须 ###############################################


############################################################以下部分暂不成功,跳过,实际用不上###################################################
# 设置仓库地址
/container/config/set registry-url=https://0hl2tn76.mirror.aliyuncs.com

# 拉取镜像
/container/add remote-image=redsocks2 interface=veth1
[admin@MikroTik] > /container/print
 0 name="ff5c9259-8bfc-42fc-8e3b-78157d0eb268" tag="library/redsocks2:latest" os="" arch="" interface=veth1 mounts="" dns="" status=error

可以看到status状态是error,错误。

# 删除这个容器
 /container/remove numbers=0
############################################################以上部分暂不成功,跳过,实际用不上##################################################

 # 从本地电脑导入镜像,(自己制作的镜像)
 amd64
    docker pull sk5
    docker save sk5 > sk5.tar
将 sk5.tar 上传到ros

# 从tar文件创建容器
/container/add file=sk5.tar interface=veth1 hostname=sk5
/container/print
0 name="3658640f-0333-4468-ab81-19c1db430dd4" tag="" os="linux" arch="amd64" interface=veth1 mounts="" dns="" hostname="sk5" status=stopped

# 启动容器
/container/start number=0

/container/print
 0 name="3658640f-0333-4468-ab81-19c1db430dd4" tag="" os="linux" arch="amd64" interface=veth1 mounts="" dns="" hostname="sk5" status=running

# 进入容器的shell
 /container/shell number=0

 内网直接互通,如果容器里跑一个nginx,可以直接用172.17.0.2访问了。

 # ros重启跟随启动容器
 /system/scheduler/add name=start-container start-time=startup on-event={:delay 3s;/container/start number=0}
 

任务计划参考:https://www.youtube.com/watch?v=mjLEMexz6_0&t=1s