iptables 添加,删除,查看,修改,及docker运行时修改端口

这篇具有很好参考价值的文章主要介绍了iptables 添加,删除,查看,修改,及docker运行时修改端口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一,安装并启动防火墙

  1. [root@linux ~]# /etc/init.d/iptables start  

当我们用iptables添加规则,保存后,这些规则以文件的形势存在磁盘上的,以centos为例,文件地址是/etc/sysconfig/iptables,我们可以通过命令的方式去添加,修改,删除规则,也可以直接修改/etc/sysconfig/iptables这个文件就行了。

二,添加防火墙规则

1,添加filter表

  1. [root@linux ~]# iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT  //开放21端口  

出口我都是开放的iptables -P OUTPUT ACCEPT,所以出口就没必要在去开放端口了。

2,添加nat表

  1. [root@linux ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE  

将源地址是 192.168.10.0/24 的数据包进行地址伪装

3,-A默认是插入到尾部的,可以-I来插入到指定位置

  1. [root@linux ~]# iptables -I INPUT 3 -p tcp -m tcp --dport 20 -j ACCEPT  
  2.   
  3. [root@linux ~]# iptables -L -n --line-number  
  4. Chain INPUT (policy DROP)  
  5. num  target     prot opt source               destination  
  6. 1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0  
  7. 2    DROP       icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 8  
  8. 3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:20                //-I指定位置插的  
  9. 4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22  
  10. 5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80  
  11. 6    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED  
  12. 7    DROP       all  --  0.0.0.0/0            0.0.0.0/0           state INVALID,NEW  
  13. 8    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:21                //-A默认插到最后  
  14.   
  15. Chain FORWARD (policy ACCEPT)  
  16. num  target     prot opt source               destination           
  17.   
  18. Chain OUTPUT (policy ACCEPT)  
  19. num  target     prot opt source               destination  

三,查下iptable规则

1,查看filter表

  1. [root@linux ~]# iptables -L -n --line-number |grep 21 //--line-number可以显示规则序号,在删除的时候比较方便  
  2. 5    ACCEPT     tcp  --  192.168.1.0/24       0.0.0.0/0           tcp dpt:21  

如果不加-t的话,默认就是filter表,查看,添加,删除都是的

2,查看nat表

  1. [root@linux ~]# iptables -t nat -vnL POSTROUTING --line-number  
  2. Chain POSTROUTING (policy ACCEPT 38 packets, 2297 bytes)  
  3. num   pkts bytes target     prot opt in     out     source               destination  
  4. 1        0     0 MASQUERADE  all  --  *      *       192.168.10.0/24      0.0.0.0/0  

四,修改规则

  1. [root@linux ~]# iptables -R INPUT 3 -j DROP    //将规则3改成DROP  

五,删除iptables规则

  1. [root@linux ~]# iptables -D INPUT 3  //删除input的第3条规则  
  2.   
  3. [root@linux ~]# iptables -t nat -D POSTROUTING 1  //删除nat表中postrouting的第一条规则  
  4.   
  5. [root@linux ~]# iptables -F INPUT   //清空 filter表INPUT所有规则  
  6.   
  7. [root@linux ~]# iptables -F    //清空所有规则  
  8.   
  9. [root@linux ~]# iptables -t nat -F POSTROUTING   //清空nat表POSTROUTING所有规则  

六,设置默认规则

  1. [root@linux ~]# iptables -P INPUT DROP  //设置filter表INPUT默认规则是 DROP  

所有添加,删除,修改后都要保存起来,/etc/init.d/iptables save.上面只是一些最基本的操作,要想灵活运用,还要一定时间的实际操作。

应用:

修改主机iptables端口映射docker的端口映射并不是在docker技术中实现的,而是通过宿主机的iptables来实现。通过控制网桥来做端口映射,类似路由器中设置路由端口映射。

如果我们有一个容器的8000端口映射到主机的9000端口,先查看iptabes设置了什么规则:

sudo iptables -t nat -vnL

结果中有一条:

Chain DOCKER (2 references)

pkts bytes target prot opt in out source destination

98 5872 RETURN all -- docker0 * 0.0.0.0/0 0.0.0.0/0

237 14316 DNAT tcp -- !docker0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:9000 to:172.17.0.3:8000

我们可以看到docker创建了一个名为DOKCER的自定义的链条Chain。而我开放8000端口的容器的ip是172.17.0.3。

也可以通过inspect命令查看容器ip

docker inspect [containerId] |grep IPAddress

我们想再增加一个端口映射,比如8081->81,就在这个链条是再加一条规则:

sudo iptables -t nat -A DOCKER -p tcp --dport 8081 -j DNAT --to-destination 172.17.0.3:81

加错了或者想修改:先显示行号查看

sudo iptables -t nat -vnL DOCKER --line-number

删除规则3

sudo iptables -t nat -D DOCKER 3
 

修改iptables添加映射端口
在宿主机执行以下命令,即可达到目的

iptables -A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 1521 -j ACCEPT
1
iptables -t nat -A DOCKER ! -i br0 -p tcp -m tcp --dport 11522 -j DNAT --to-destination 172.17.0.2:1521
1
重要参数说明:

172.17.0.2: docker容器在docker中的ip,可通过"docker inspect `container_name` | grep IPAddress"获取
1521: 容器内部应用对外暴露的端口
11522: 容器内部应用端口映射到宿主机的端口
 

  保存持久化 iptables:

After of the write the commands iptables, do:文章来源地址https://www.toymoban.com/news/detail-617158.html

 1. sudo su
 2. iptables-save > /etc/iptables.rules
 3. In /etc/network/if-pre-up.d/iptables,put:

 #!/bin/sh
 iptables-restore < /etc/iptables.rules
 exit 0

 4. After, in /etc/network/if-post-down.d/iptables,put:
 #!/bin/sh
 iptables-save -c > /etc/iptables.rules
 if [ -f /etc/iptables.rules ]; then
 iptables-restore < /etc/iptables.rules
 fi
 exit 0
 5. After, give permission to the scripts:
 sudo chmod +x /etc/network/if-post-down.d/iptables
 sudo chmod +x /etc/network/if-pre-up.d/iptables

到了这里,关于iptables 添加,删除,查看,修改,及docker运行时修改端口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker给运行中的容器添加端口映射

    docker上面运行容器,run -p 的时候只映射了一个端口,后面对该nginx做扩展,需要开放其他端口。当然重新再启一个容器在docker启动参数里多配置几个-p端口映射是能解决的,但是如果自己不想重新启一个容器,试试下面两种方式 1.获取容器ip 2.利用iptable转发,将容器的端口8

    2024年02月02日
    浏览(44)
  • Docker概念|容器|镜像|命令详细(创建,删除,修改,添加)

    Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源 是在Linux容器里运行应用的开源工具 是一种轻量级的”虚拟机“ Docker的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的,可移植的,自给自足的容器。 docker本质就是宿主机的一个进程,

    2023年04月19日
    浏览(42)
  • 查看linux 所有运行的应用和端口命令

    要查看 Linux 中所有运行的应用程序及其对应的端口,可以使用以下命令: 1. 使用 `netstat` 命令(已被弃用,建议使用 `ss` 命令): netstat -tuln 这会显示当前系统上所有打开的网络连接和监听的端口。其中,`-t` 表示显示 TCP 连接,`-u` 表示显示 UDP 连接,`-l` 表示显示监听状态

    2024年02月14日
    浏览(37)
  • iptables修改目的IP和端口

    iptables NAT表的OUTPUT链用于对由本机发起的数据包进行目标IP地址和端口号的修改。DNAT指令可以用于将数据包的目标IP地址和端口号替换为指定的IP地址和端口号。在OUTPUT链中使用DNAT指令可以实现对本机发送的数据包进行目标地址的转换,将数据包发送至指定的目标地址。用法

    2024年02月05日
    浏览(43)
  • 修改运行中的docker容器的端口映射(简单、高效)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 在docker run创建并运行容器的时候,可以通过-p指定端口映射规则。但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改。当docker start运行容器后并没有提供一个-p选项或设置,让你修改

    2024年02月08日
    浏览(36)
  • Linux centos 安装开源emqx 添加用户、密码,以及修改端口

    安装与启动 1、创建emqx目录   2、进入目录        cd /home 3、创建目录        mkdir emqx 4、进入目录        cd /home/emqx 下载安装包 1、下载        wget https://www.emqx.com/zh/downloads/broker/4.4.4/emqx-4.4.4-otp24.1.5-3-el7-amd64.zip 2、解压        unzip emqx-4.4.4-otp24.1.5-3-el7-amd

    2023年04月20日
    浏览(46)
  • Docker中对已存在运行的容器修改端口映射和容器卷映射

    一、初次创建容器,指定宿主机和容器端口的映射,如下示例: 二、对已存在运行容器,更改端口 方式一:(删了原来的,根据image重做) 1、停止容器 2、将容器打包成镜像 3、用“一”中的命令,通过新镜像开启新容器 方式二:(直接修改现有容器) 1、停止容器 2、查找

    2024年02月16日
    浏览(49)
  • 杂记 | Linux中修改docker默认访问端口(2375)

    2375端口是docker的默认访问端口,使用该端口可实现远程访问和操作docker,但在服务器上直接开启该端口有安全风险(笔者本人今天就应该端口导致服务器被入侵),可以修改该默认端口以在一定程度上减少系统被入侵的风险。 本文基于CentOS设置,其他Linux操作系统大同小异。

    2024年02月11日
    浏览(37)
  • iptables实现docker容器动态端口映射实操

    之前在《Docker 动态修改容器端口映射的方法》一文中,说明了如何使用修改配置和加防火墙规则实现动态端口映射。但是没有具体分享加防火墙实现动态端口映射的实际案例。今天就分享一下实际操作案例,供大家参考。 动态端口映射的用途 容器端口的动态映射,是用于实

    2024年04月25日
    浏览(42)
  • Linux iptables配置开启80端口

    在Linux服务器上,我们可以使用iptables工具来配置和管理网络防火墙规则。如果你想要开启80端口,以便在服务器上运行Web服务(如HTTP),你可以按照以下步骤进行配置。 首先,你需要通过终端以root权限登录到服务器。然后,执行以下命令以开启80端口: 这个命令将在INPUT链

    2024年02月04日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包