当前位置: 首页 > article >正文

copyq禁止访问网络(ubuntu cgroup)

from: cgroup-iptables-disable-app_copyq-net.md

#[功能] 挂载、创建 cgroup(名为disable_net) ,设置其class_id, 令iptables丢弃该class_id的网络包

function mountCreateCgroup__disable_net__my_classid__iptables_drop(){
set -e -u

[[ $# -lt 1 ]] && return 41
local my_classid="$1"
##local my_classid=123 #命令展开形式(例)

local net_cls_d="/sys/fs/cgroup/net_cls"
#挂载cgroup的net_cls
sudo mkdir -p $net_cls_d
##sudo mkdir -p /sys/fs/cgroup/net_cls #命令展开形式
sudo mount | grep  $net_cls_d ||  sudo mount -t cgroup -onet_cls net_cls $net_cls_d
##............................||  sudo mount -t cgroup -onet_cls net_cls /sys/fs/cgroup/net_cls  #命令展开形式

#查看已挂载的cgroup
sudo mount | grep  cgroup
#cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot)
#net_cls on /sys/fs/cgroup/net_cls type cgroup (rw,relatime,net_cls)

#新建cgroup (名为disable_net)
sudo cgcreate -g net_cls:/disable_net

#默认classid为0
cat  $net_cls_d/disable_net/net_cls.classid # == 0

#修改classid为123(例)
echo $my_classid | sudo tee   $net_cls_d/disable_net/net_cls.classid  # == 123(例)
##echo 123 | sudo tee   /sys/fs/cgroup/net_cls/disable_net/net_cls.classid  # == 123(例) #命令展开形式(例)


cat  $net_cls_d/disable_net/net_cls.classid  # == 123(例)

#令iptables丢弃 classid==123(例) 的 网络包裹, 从而达到禁止网络访问的效果
sudo iptables -A OUTPUT -m cgroup --cgroup $my_classid  -j DROP
##sudo iptables -A OUTPUT -m cgroup --cgroup 123  -j DROP #命令展开形式(例)
} #end_func

使用举例

#挂载、创建 cgroup(名为disable_net) ,设置其class_id, 令iptables丢弃该class_id的网络包
my_classid=123
mountCreateCgroup__disable_net__my_classid__iptables_drop $my_classid


#获得域名163.com对应的ip
site_domain="163.com"
site_ip=$(dig +short "$site_domain") # == 59.111.160.244
web_url="http://${site_ip}" # == http://59.111.160.244

#普通curl正常访问网络
curl  "${web_url}"

#实测 经过 该net_cls 的 curl命令确实不能访问网络  
sudo cgexec -g net_cls:disable_net curl --verbose  "${web_url}"
#*   Trying 59.111.160.244:80...  #停在这里

#运行copyq但不允许其访问网络
sudo  cgexec -g net_cls:disable_net /usr/bin/copyq
##sudo DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY cgexec -g net_cls:disable_net /usr/bin/copyq  #备用命令

参考:

cgroup 子系统之 net_cls 和 net_prio


http://www.kler.cn/a/382071.html

相关文章:

  • 某集团GIF动态验证码识别
  • 项目代码第6讲:UpdownController.cs;理解 工艺/工序 流程、机台信息;前端的“历史 警报/工艺 记录”
  • C#(委托)
  • Chrome 关闭自动添加https
  • 江苏计算机专转本 技能Mysql知识点总结(二)
  • stm32制作CAN适配器5--WinUsb上位机编写
  • 发不了Science?那是因为你不会画Science风格的配图
  • 静态数据区,堆,栈
  • linux动态库与静态库
  • 从底层技术到实际应用:Claude与ChatGPT谁更适合学术写作?
  • Redis学习:BitMap/HyperLogLog/GEO案例 、布隆过滤器BloomFilter、缓存预热+缓存雪崩+缓存击穿+缓存穿透
  • 20241106,LeetCode 每日一题,用 Go 实现整数回文数判断
  • Redis(2):内存模型
  • java:题目:用Java实现简单的自取取款操作
  • Leetcode 第 422 场周赛题解
  • Flutter中有趣的级联语法
  • 蓝桥杯真题——三角回文数(C语言)
  • PCL 点云配准 精度评价指标均方根误差(RMSE)
  • ASP .NET CORE 6 在项目中集成WatchDog开源项目
  • 社区养老服务小程序ssm+论文源码调试讲解
  • Mac M1 Docker创建Rocketmq集群并接入Springboot项目
  • 《Keras3 深度学习初探:开启Keras3 深度学习之旅》
  • 关注AI技术的应用前景,抓住未来科技发展的机遇!
  • 闪存学习_2:Flash-Aware Computing from Jihong Kim
  • 蓝桥杯练习笔记(二十-日期问题)
  • Docker篇(数据卷)