概述
在使用zabbix-proxy进行网络监控时,需要使用到局域网地址。
步骤
一、创建网络
使用以下命令创建一个docker macvlan的网络
1 2 3 4 5 |
docker network create -d macvlan \ --subnet=10.137.121.0/24 \ --gateway=10.137.121.254 \ --ip-range=10.137.121.0/24 \ -o parent=enp2s0 macnet |
释义:
二、创建容器
使用以下命令创建一个zabbix-proxy的容器,和正常创建容器的区别在于,增加了—network 及 –ip 选项,—network用于指定上面创建的网络,—ip用于设置容器的ip地址。
1 2 3 4 5 6 7 8 9 10 11 12 |
docker run --name zabbix-proxy -t \ -e ZBX_HOSTNAME="zabbix-proxy-01" \ -e ZBX_TIMEOUT=30 \ -e ZBX_PROXYMODE=0 \ -e ZBX_CACHESIZE=500M \ -e ZBX_SERVER_HOST=10.137.121.250 \ -e TZ="Asia/Shanghai" \ -p 10051:10051 \ --network macnet \ --ip=10.137.121.249 \ --restart=always \ -d zabbix/zabbix-proxy-sqlite3 |
三、解决容器和宿主的通信问题
完成第二步后,已经可以和局域网内部主机进行通信了。但是和宿主机无法通信
1 2 3 4 5 6 7 8 |
# 添加一个虚拟接口桥接到物理网卡 ip link add macvlan-proxy link enp2s0 type macvlan mode bridge # 给虚拟接口配置ip ip addr add 10.137.121.248/32 dev macvlan-proxy # 启用虚拟接口 ip link set macvlan-proxy up # 添加到容器网络的静态路由规则 ip route add 10.137.121.249/32 dev macvlan-proxy |
执行完以上命令后,即可进行通信了。
可能通过以下命令查看是否执行成功。
使用 ifconfig 查看是否有 macvlan-proxy 的网卡出现。
使用 route -n 查看是否有相关路由出 10.137.121.249 0.0.0.0 255.255.255.255 UH 0 0 0 macvlan-proxy
使用 ping 直接测试
四、解决重启后,路由网卡失效问题。
目前解决方法是把命令添加至rc.local文件里面,开机自动执行。rc.local源文件需要添加执行权限。路径为/etc/rc.d/rc.local。
借鉴资料