为什么我需要那个
我在运行新版本詹金斯的大型公司网络上有一台服务器。我已将所有作业 (>600) 迁移到新服务器。这些作业通过我们的网络连接到不同的服务器。启动 jenkins 后,一些作业将运行覆盖工件,将 docker 图像推送到内部注册表等等。为了防止这种情况发生而无需进入所有 600 个作业并随后禁用,我希望禁用来自服务器的本地网络访问。网络管理员表示,他们不想破坏防火墙规则,因为他们担心会禁用对某些重要服务器的访问。所以我要使用 iptables 在服务器端实现。
我需要什么
我想要做的是禁用除一个 ip 之外的 LAN 访问,并启用 Internet 访问。更详细地说,它是这样的。
允许ssh 在端口 22 上访问服务器,jenkins 在端口 8080 上访问(我位于与服务器不同的子网中)
允许访问 Internet 以进行插件安装和外部构建依赖项。
删除从服务器到本地网络 10.0.0.0/8 的任何内容。服务器位于 10.xxx/24 上,它可以通过 10.xx1 上的路由器访问不同的子网
我试过什么
放弃前的最后尝试。什么都没做。
#my ip
iptables -j ACCEPT -s 10.x.x.x -i ens160 -A IN_public
iptables -j ACCEPT -d 10.x.x.x -o ens160 -A OUTPUT_direct
#subnet
iptables -j DROP -d 10.0.0.0/8 -o ens160 -A OUTPUT_direct
在我提供规则集之前的一些重要说明:
避免通过脚本修改防火墙。最佳流量:
iptables-save > fwrules.v4
iptables-restore -t fwrules.v4
iptables-apply -t <timeout> fwrules.v4
。<timeout>
以秒为单位的确认超时在哪里。如果您不确认新规则集,它将回滚到之前的规则集。我猜服务器有单个网络接口。