docker 限制ip访问端口

需求限制外网访问 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

安装过程中会出现弹框 直接敲回车就好了

docker 限制ip访问端口_第1张图片

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/24

ufw 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 updated

sudo 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-save

iptables --line -nvL DOCKER-USER

#永久保存
iptables-restore < /etc/sysconfig/iptables
iptables -I DOCKER-USER -i ext_if ! -s 172.16.1.0/24 -j DROP

tar -zxvf ./archives.tar.gz
mv ./archives /var/cache/apt/archives
apt update

# 安装软件
apt install iptables-persistent

iptables -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.deb

ubuntu下载安装包
如果只想下载单个包
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

你可能感兴趣的:(docker,tcp/ip,容器)