博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Centos7中使用iptables,docker容器中实例,外网端口无法访问
阅读量:7115 次
发布时间:2019-06-28

本文共 3719 字,大约阅读时间需要 12 分钟。

hot3.png

因微信小程序需要https的域名访问方式,阿里云无法通过IP和端口绑定域名,只能通过IP进行绑定,故如果不想直接使用443端口,就只能进行端口映射了。这里我使用iptables。

由于centos7默认是使用firewall作为防火墙,下面介绍如何将系统的防火墙设置为iptables。

#停止firewall 

systemctl stop firewall.service

#禁止firewall开机启动 

systemctl disable firewall.service

#安装iptables 

yum install iptables-services

#设置iptables防火墙为开机启动项 

systemctl enable iptables.service

#启动防火墙使配置文件生效 

systemctl start iptables.service

#停止防火墙 

systemctl stop iptables.service

#重启防火墙使配置文件生效  

systemctl restart iptables.service

修改/etc/sysconfig/iptables文件,注意备份!!!

# Completed on Wed Jul 11 16:11:57 2018# Generated by iptables-save v1.4.21 on Wed Jul 11 16:11:57 2018*nat:PREROUTING ACCEPT [901:54060]:INPUT ACCEPT [3:180]:OUTPUT ACCEPT [10:760]:POSTROUTING ACCEPT [14:1000]:DOCKER - [0:0]#端口映射-A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 10443-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER-A POSTROUTING -s 192.168.0.0/20 ! -o docker0 -j MASQUERADE-A POSTROUTING -s 192.168.0.2/32 -d 192.168.0.2/32 -p tcp -m tcp --dport 6379 -j MASQUERADE-A POSTROUTING -s 192.168.0.3/32 -d 192.168.0.3/32 -p tcp -m tcp --dport 9000 -j MASQUERADE-A DOCKER -i docker0 -j RETURN-A DOCKER ! -i docker0 -p tcp -m tcp --dport 6379 -j DNAT --to-destination 192.168.0.2:6379-A DOCKER ! -i docker0 -p tcp -m tcp --dport 9000 -j DNAT --to-destination 192.168.0.3:9000-A DOCKER -p tcp -m tcp --dport 9000 -j DNAT --to-destination 192.168.0.2:9000-A DOCKER -p tcp -m tcp --dport 6379 -j DNAT --to-destination 192.168.0.3:6379COMMIT# Completed on Wed Jul 11 16:11:57 2018# Generated by iptables-save v1.4.21 on Wed Jul 11 16:11:57 2018*filter:INPUT ACCEPT [0:0]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [17672:2225892]:DOCKER - [0:0]:DOCKER-ISOLATION-STAGE-1 - [0:0]:DOCKER-ISOLATION-STAGE-2 - [0:0]:DOCKER-USER - [0:0]-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT-A INPUT -p icmp -j ACCEPT-A INPUT -i lo -j ACCEPT#端口映射-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT-A INPUT -p tcp -m state --state NEW -m tcp --dport 23 -j ACCEPT-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT-A INPUT -p tcp -m state --state NEW -m tcp --dport 10443 -j ACCEPT-A INPUT -p tcp -m state --state NEW -m tcp --dport 9080 -j ACCEPT-A INPUT -j REJECT --reject-with icmp-host-prohibited-A FORWARD -j DOCKER-USER-A FORWARD -j DOCKER-ISOLATION-STAGE-1-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT-A FORWARD -o docker0 -j DOCKER-A FORWARD -i docker0 ! -o docker0 -j ACCEPT-A FORWARD -i docker0 -o docker0 -j ACCEPT-A FORWARD -j REJECT --reject-with icmp-host-prohibited-A DOCKER -d 192.168.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 6379 -j ACCEPT-A DOCKER -d 192.168.0.3/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 9000 -j ACCEPT-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2-A DOCKER-ISOLATION-STAGE-1 -j RETURN-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP-A DOCKER-ISOLATION-STAGE-2 -j RETURN-A DOCKER-USER -j RETURNCOMMIT

端口映射 将443映射10443:

在*nat中增加

-A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 10443

在*filter中增加

-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 10443 -j ACCEPT

docker配置比较复杂,我的方法是iptables可能在安装重启后,自动一些配置,但终于无法正常访问。

我将iptables文件所有关于docker的配置,都删除干净,回想起来,就点不破不立的感觉:)

然后将docker服务重启,容器启动起来。

a, 获取容器ip 

    docker inspect $container_name | grep IPAddress
b. 添加转发规则(192.168.0.2为容器中实例的真实IP) 
iptables -t nat -A DOCKER -p tcp --dport 9000 -j DNAT --to-destination 192.168.0.2:9000

这样,外网就可以正常访问容器的实例了。

但,还没有算完,需要将修改的配置保存。

service iptables save

~~~~~~~~~~~~~~~

do one thing, do it better 

 

转载于:https://my.oschina.net/yunnet/blog/1844459

你可能感兴趣的文章
用格式工厂将mts文件转换成其它格式flv,mpg失败
查看>>
I/O复用的应用场合
查看>>
Windows Phone 的控件倾斜效果
查看>>
发现SQL Server惊天大秘密!!
查看>>
基于libnids的TCP数据流的还原(多线程实现) .
查看>>
Building the Testing Pipeline
查看>>
linux下配置NFS服务器
查看>>
linux cut 命令
查看>>
设计模式之美:Prototype(原型)
查看>>
oracle dump event
查看>>
使用mysqladmin ext了解MySQL运行状态【转】
查看>>
使用Bootstrap3和Ladda UI实现的多种按钮“加载中”效果体验
查看>>
[译]MVC网站教程(三):动态布局和站点管理
查看>>
CSS侧边栏宽度不动(更改页面宽度时),内容区宽度自适应
查看>>
lua -- debug
查看>>
传统媒体:广告都去哪儿了?
查看>>
Eclipse使用教程之精华篇
查看>>
排列生成算法注意事项
查看>>
Java核心知识点学习----多线程 倒计时记数器CountDownLatch和数据交换的Exchanger
查看>>
那些最好的轮子 - PHP篇
查看>>