需求限制外网访问 docker的某个服务 经过查找 发现 ubuntu的 ufw 防火墙是无效的
技术交流http://idea.coderyj.com/
1.查看docker的 路由
iptables --line -nvL DOCKER-USER
默认是允许所有的访问不限制
2.添加限制规则 iptables 是从上往下匹配的所以我们限制规则要在第一条
- a. 限制所有的ip访问8848这个端口
-I
代表插入第一条
iptables -I DOCKER-USER -p tcp --dport 8848 -j DRO
- b.允许某个网段访问
iptables -I DOCKER-USER -s 172.16.1.0/24 -p tcp --dport 8848 -j ACCEPT
- c 保存
iptables-save
再次查看
这样就配置成功了,但是重启服务器之后就失效了
3.永久保存
- a 下载依赖
apt install iptables-persistent
- b.永久保存
iptables-restore < /etc/iptables/rules.v4
安装过程中会出现弹框 直接敲回车就好了
4.ufw 添加ip限制命令
# 允许某个ip访问
ufw allow from 172.16.1.0/24
# 拒绝所有ip访问
ufw deny all
ufw default deny
ufw default deny incoming #默认禁止所有其它主机连接该主机ufw deny in on eth0 from 192.168.3.2
ufw deny from 192.168.3.2
ufw delete allow from 23.56.49.0/24
ufw delete deny from 23.56.49.0/24ufw deny from 23.56.49.0/24 to any port 8848
ufw deny from 172.18.6.0/24 to any port 8848
ufw deny proto tcp from 172.18.6.0/24 to any port 8848
ufw delete 2
Rule updatedsudo ufw status numbered
5.iptables命令整理
1,iptables -nL(查看iptables列表)
链路中 有
RETURN all -- 0.0.0.0/0 0.0.0.0/0 2,iptables -D DOCKER-USER 1(删除上述RETURN的规则,但是 添加完后还要加回来)3,iptables -A DOCKER-USER -s 172.16.1.136 -p tcp --dport 8848 -j ACCEPT(添加规则,允许172.17.1.1访问8082 。如果有多个需要允许的 请添加完再执行第4步,这玩意好像有先后顺序 碰到DROP就不往下走了)4,iptables -A DOCKER-USER -p tcp --dport 8848 -j DROP(拒绝不信任的所有访问,也就是拒绝没有添加的ip访问8082,有多个 也是添加完再执行第5步)5,iptables -A DOCKER-USER -j RETURN(将刚才删除的RETURN 本身就有的一条规则,这条很重要!)6,iptables-save(保存规则)一定要注意顺序!一定要注意顺序!一定要注意顺序!iptables --line -nvL DOCKER-USER
# 删除iptables
iptables -D DOCKER-USER 1
iptables -A DOCKER-USER -s 172.16.1.136 -p tcp --dport 8848 -j ACCEPT
iptables -A DOCKER-USER -p tcp --dport 8848 -j DROP
iptables -A DOCKER-USER -j RETURN
iptables-saveiptables --line -nvL DOCKER-USER#永久保存
iptables-restore < /etc/sysconfig/iptables
iptables -I DOCKER-USER -i ext_if ! -s 172.16.1.0/24 -j DROPtar -zxvf ./archives.tar.gz
mv ./archives /var/cache/apt/archives
apt update# 安装软件
apt install iptables-persistentiptables -I DOCKER-USER -p tcp --dport 8848 -j DROP
iptables -I DOCKER-USER -s 172.16.1.0/24 -p tcp --dport 8848 -j ACCEPT
iptables-save
# 永久保存
iptables-restore < /etc/iptables/rules.v4# 加载deb
sudo dpkg -i xx.debubuntu下载安装包
如果只想下载单个包
apt-get download iptables-persistent
下载包及依赖
方法1
首先安装sudo apt install apt-rdepends
apt-get download $(apt-rdepends your_package | grep -v "^ " | sed 's/debconf-2.0/debconf/g')
方法2
查看依赖
sudo apt-cache depends python
创建包目录
mkdir your_package&& cd your_package
下载依赖
$ for i in $(apt-cache depends python | grep -E 'Depends|Recommends|Suggests' | cut -d ':' -f 2,3 | sed -e s/'<'/''/ -e s/'>'/''/); do sudo apt-get download $i 2>>errors.txt; done