利用OpenWrt为虚拟机做流量代理

安装Openwrt虚拟机

下载镜像:Index of /releases/22.03.5/targets/x86/64/ (openwrt.org)

转换镜像:

qemu-img convert -f raw -O vdi openwrt-22.03.5-x86-64-generic-ext4-combined-efi.img openwrt-22.03.5-x86-64-generic-ext4-combined-efi.img.vdi

配置虚拟机网卡:

在VirtualBox中新建HostNetwork(Host-Only网络),网段为192.168.56.0/24

在openwrt虚拟机的网络选项中设置:

1)启用网卡1,连接方式选仅主机网络,名称选上步创建的HostNetwork

2)启用网卡2,连接方式选桥接网卡,名称选本机上能访问外网的网卡

进入openwrt虚拟机,为lan口设置静态IP地址为HostNetwork中的一个IP,这里用 192.168.56.2

root@OpenWrt:~# cat /etc/config/network

config interface 'loopback'
	option device 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix 'fdd4:bccc:9ebb::/48'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'eth0'

config interface 'lan'
	option device 'br-lan'
	option proto 'static'
	option ipaddr '192.168.56.2'
	option netmask '255.255.255.0'
	option ip6assign '60'

config interface 'wan'
	option device 'eth1'
	option proto 'dhcp'

config interface 'wan6'
	option device 'eth1'
	option proto 'dhcpv6'

OPENWRT开启SFTP,实现文件下载上传

同时也能使用scp命令进行拷贝

opkg update
opkg install vsftpd openssh-sftp-server
/etc/init.d/vsftpd enable
/etc/init.d/vsftpd start

OpenClash安装与配置

#iptables
opkg update
opkg install coreutils-nohup bash iptables dnsmasq-full curl ca-certificates ipset ip-full iptables-mod-tproxy iptables-mod-extra libcap libcap-bin ruby ruby-yaml kmod-tun kmod-inet-diag unzip luci-compat luci luci-base

如果需要强制安装,可以先opkg remove,再opkg install

Releases · vernesong/OpenClash (github.com)页面,将openclash安装包下载到openwrt虚拟机中,通过 opkg install 安装。

配置手册:Home · vernesong/OpenClash Wiki (github.com)

其他虚拟机的旁路由配置

此处用的是ubuntu server,可以在安装界面时设置,也可以等安装完成后,手动修改配置。手动修改的配置如下:

$ cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
  ethernets:
    enp0s3:
      addresses:
      - 192.168.56.3/24
      nameservers:
        addresses:
        - 114.114.114.114
        search: []
      routes:
      - to: default
        via: 192.168.56.2
  version: 2

配置修改后,可以看到默认路由已变成 192.168.56.2

$ ip route
default via 192.168.56.2 dev enp0s3 proto static
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
192.168.56.0/24 dev enp0s3 proto kernel scope link src 192.168.56.3

Reference

OpenWrt/利用虚拟机安装X86之OpenWrt.md at master · peiyake/OpenWrt · GitHub

VMware Workstation安装软路由OpenWrt_林鸿风采的技术博客_51CTO博客

VirtualBox虚拟机安装openwrt供本机使用 - 知乎 (zhihu.com)

VMware安装OpenWrt让宿主机上网&旁路由(两种方案)_vmware openwrt旁路由_aglo的博客-CSDN博客

如何在vmware虚拟机中安装OpenWrt系统? - 知乎 (zhihu.com)

软路由OpenWrt X86软路由安装 (toutiao.com)

Read more

容器镜像(4):镜像的常用工具箱

容器镜像(4):镜像的常用工具箱

前几篇在讲多架构镜像时已经用过 skopeo 和 crane 做镜像复制,这篇系统整理这两个工具的完整能力,同时介绍几个日常操作镜像时同样好用的工具。 一、skopeo:不依赖 Daemon 的镜像瑞士军刀 skopeo 的核心价值是绕过 Docker daemon,直接与 Registry API 交互。上一篇用它做镜像复制和离线传输,但它的能力远不止于此。 1.1 安装 # Ubuntu / Debian sudo apt install -y skopeo skopeo --version # skopeo version 1.15.1 1.2 inspect:免拉取检查镜像元数据 docker inspect 需要先把镜像拉到本地,skopeo inspect 直接向 Registry

容器镜像(3):多架构镜像构建

容器镜像(3):多架构镜像构建

一、什么是多架构镜像 1.1 OCI Image Index 上一篇介绍了单平台镜像的结构:一个 Manifest 指向 Config 和若干 Layer blob。多架构镜像在此之上多了一层——OCI Image Index(也叫 Manifest List),是一个轻量的索引文件,把多个单平台 Manifest 组织在一起: $ docker manifest inspect golang:1.22-alpine { "schemaVersion": 2, "mediaType": "application/vnd.oci.image.index.v1+json", "manifests&

容器镜像(2):containerd 视角下的镜像

容器镜像(2):containerd 视角下的镜像

一、为什么需要了解 containerd 如果你只用 docker run 跑容器,从来不关心底层,那可以不了解 containerd。但如果你在用 Kubernetes,或者想真正理解"容器运行时"是什么,containerd 是绕不开的。 事实上,当你执行 docker run 的时候,containerd 早就在后台悄悄工作了——Docker 从 1.11 版本开始,就把核心运行时剥离出来交给 containerd 负责。 1.1 Docker 的架构演变 早期的 Docker(1.10 及之前)是一个"大一统"的单体程序:一个 dockerd