此页面的内容适用于:
Fedora Silverblue / Kinoite SLE Micro / openSUSE Leap Micro openSUSE MicroOS 但同时也适用于普通发行版,如:
Fedora Workstation openSUSE Leap / Tumbleweed CentOS Stream 1. 安装 Podman Podman 已经在一部分发行版中预装了。若你的发行版没有预装Podman,请参考具体安装步骤:
https://podman.io/getting-started/installation.html#installing-on-linux
2. 配置 你可以使用rootful模式 或者rootless模式 。
2.1. Rootful 模式 如果你想使用透明代理、路由转发等功能,则需要使用 rootful 模式。
2.1.1. 下载容器镜像 直接下载镜像:
1 2 sudo podman pull \ docker.io/mzz2017/v2raya
如果你的设备无法直接访问到 Docker Hub,可以使用现有的 HTTP 代理下载镜像:
1 2 3 4 5 sudo env \HTTP_PROXY=http://<Address>:<Port> \ HTTPS_PROXY=http://<Address>:<Port> \ podman pull \ docker.io/mzz2017/v2raya
你也可以使用 sudo podman image import
导入其它来源提供的v2rayA容器镜像。
2.1.2. 配置 iptables 自动加载 1 2 3 4 5 6 7 8 sudo mkdir /etc/modules-load.dcat << 'EOF' | sudo tee /etc/modules-load.d/ip_tables.conf >> /dev/null 2>&1ip_tables ip6_tables iptable_mangle ip6table_mangle EOF sudo modprobe ip_tables ip6_tables iptable_mangle ip6table_mangle
2.1.3. 创建 SELinux 规则 如果你的发行版不使用 SELinux,可以跳过这一节。 跳转:创建容器
SELinux 会拦截一部分 v2rayA 的行为,导致透明代理不能正常使用。
安全警告:请确保当前工作目录不会被任何 其它低权限用户程序写入。
创建规则:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 cat << 'EOF' | tee my_v2raya_container.cil >> /dev/null 2>&1(block v2raya_container (type process) (type socket) (roletype system_r process) (typeattributeset domain ( process )) (typeattributeset container_domain ( process )) (typeattributeset svirt_sandbox_domain ( process )) (typeattributeset mcs_constrained_type ( process )) (typeattributeset file_type ( socket )) (allow process socket ( sock_file ( create open getattr setattr read write rename link unlink ioctl lock append ))) (allow process proc_type ( file ( getattr open read ))) (allow process cpu_online_t ( file ( getattr open read ))) (allow container_runtime_t process ( key ( create link read search setattr view write ))) (allow process kernel_t ( system ( module_request ))) (allow process dns_port_t ( udp_socket ( name_bind ))) (allow process ephemeral_port_t ( tcp_socket ( name_connect ))) (allow process http_port_t ( tcp_socket ( name_connect ))) (allow process node_t ( tcp_socket ( node_bind ))) (allow process node_t ( udp_socket ( node_bind ))) (allow process ntp_port_t ( udp_socket ( name_bind ))) (allow process reserved_port_t ( udp_socket (name_bind ))) (allow process self ( netlink_route_socket ( nlmsg_write ))) (allow process self ( tcp_socket ( listen ))) (allow process unreserved_port_t ( tcp_socket ( name_bind name_connect ))) (allow process unreserved_port_t ( udp_socket ( name_bind ))) ) EOF
加载这个规则:
1 sudo semodule -i my_v2raya_container.cil
2.1.4. 创建容器 1 2 3 4 5 6 7 8 9 10 11 12 13 sudo mkdir -p /etc/v2rayasudo podman create -it \ --name v2raya \ --restart=always \ --label io.containers.autoupdate=registry \ --cgroup-parent=machine-v2raya.slice \ --security-opt no-new-privileges \ --security-opt label=type :v2raya_container.process \ --cap-drop all --cap-add cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw \ --network=host \ --memory=500M \ --volume /etc/v2raya:/etc/v2raya:z \ docker.io/mzz2017/v2raya
配置文件保存在 /etc/v2raya
中。
2.1.5. 创建服务 1 2 3 4 5 bash -c \ "sudo mkdir -p /etc/systemd/system \ && cd /etc/systemd/system \ && sudo podman generate systemd --new --files --name v2raya \ && sudo systemctl daemon-reload"
2.1.6. 开启容器自动更新 1 sudo systemctl enable --now podman-auto-update.timer
2.1.7. 开启 v2rayA 服务 现在你可以用systemd控制v2rayA服务了。
查看服务状态:
1 systemctl status container-v2raya.service
设置开机自启动,并且现在开始运行:
1 sudo systemctl enable --now container-v2raya.service
打开浏览器,访问http://localhost:2017 。
2.1.8. 移除容器 1 2 3 sudo systemctl disable --now container-v2raya.servicesudo rm /etc/systemd/system/container-v2raya.servicesudo systemctl daemon-reload
你也可以选择删除v2rayA的配置文件:
如果您不再想使用v2rayA,移除v2rayA镜像:
1 sudo podman image rm docker.io/mzz2017/v2raya
以及移除SELinux规则 / iptables自动加载:
1 2 sudo semodule -r my_v2raya_containersudo rm /etc/modules-load.d/ip_tables.conf
2.2. Rootless 模式 如果你只需要一个 SOCKS5/HTTP 代理端口,则可以让容器运行于普通用户权限,进一步降低风险。
2.2.1. 下载容器镜像 直接下载镜像:
1 2 podman pull \ docker.io/mzz2017/v2raya
如果你的设备无法直接访问到 Docker Hub,可以使用现有的HTTP代理下载镜像:
1 2 3 4 5 env \HTTP_PROXY=http://<Address>:<Port> \ HTTPS_PROXY=http://<Address>:<Port> \ podman pull \ docker.io/mzz2017/v2raya
你也可以使用 podman image import
导入其它来源提供的v2rayA容器镜像。
2.2.2. 创建容器 1 2 3 4 5 6 7 8 9 10 11 12 mkdir -p ~/.config/v2rayapodman create -it \ --name v2raya \ --restart=always \ --label io.containers.autoupdate=registry \ --cgroup-parent=v2raya.slice \ --security-opt no-new-privileges \ --cap-drop all \ --network host \ --memory=500M \ --volume ~/.config/v2raya:/etc/v2raya:z \ docker.io/mzz2017/v2raya
--cgroup-parent
使用 systemd slice 依赖内核启动参数 systemd.unified_cgroup_hierarchy=1
。 若出现 systemd slice received as cgroup parent when using cgroupfs
错误,请手动添加对应的启动参数。
配置文件保存在 ~/.config/v2raya
中。
2.2.3. 创建服务 1 2 3 4 5 bash -c \ "mkdir -p ~/.config/systemd/user \ && cd ~/.config/systemd/user \ && podman generate systemd --new --files --name v2raya \ && systemctl --user daemon-reload"
2.2.4. 开启容器自动更新 1 systemctl --user enable --now podman-auto-update.timer
2.2.5. 开启 v2rayA 服务 现在你可以用systemd控制v2rayA服务了。
查看服务状态:
1 systemctl --user status container-v2raya.service
设置开机自启动,并且现在开始运行:
1 systemctl --user enable --now container-v2raya.service
打开浏览器,访问http://localhost:2017 。
然后你可以在系统设置中使用代理: http://localhost:20171
。
v2rayA服务会跟随用户会话一起启动/停止。如果你想让v2rayA随系统启动,并且在用户会话结束后保持运行,使用以下命令:
2.2.6. 移除容器 1 2 3 systemctl --user disable --now container-v2raya.service rm ~/.config/systemd/user/container-v2raya.servicesystemctl --user daemon-reload
你也可以选择删除v2rayA的配置文件:
如果您不再想使用v2rayA,移除v2rayA镜像:
1 podman image rm docker.io/mzz2017/v2raya
关闭linger:
3. v2rayA 使用方法 安装并成功启动v2rayA服务后,可以使用浏览器直接访问 http://127.0.0.1:2017 v2rayA管理页面, 具体使用方法可以访问 v2rayA 基本使用方法