iptables 笔记

工作使用到iptables的NAT地址转换功能;目前找到最好的帮助理解的图:

要实现的功能是,PC1通过Server访问内网PC2的8180端口提供的服务:

一、开启Server的ip_forward功能

sudo vim /etc/sysctl.conf

开启 net.ipv4.ip_forward=1 配置项

启用配置 sysctl -p

验证之 cat /proc/sys/net/ipv4/ip_forward (1为启用,0为关闭)

二、规则

iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp -m tcp --dport 81 -j DNAT --to-destination 192.168.0.2:8180

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.2 -p tcp -m tcp --dport 8180 -j SNAT --to-source 192.168.0.1

三、规则解释

PC1的IP地址为6.7.8.9,它使用本机的1080端口连接Server 1.2.3.4的81端口;发出的IP包源地址为6.7.8.9,源端口为1080,目的地址为1.2.3.4,目的端口为81;

Server 1.2.3.4接收到这个包后,根据NAT表的第一条规则,将该IP包的目的地址更该为192.168.0.2,目的端口更该为8180,同时在“连接跟踪表”(/proc/net/ip_conntrack)中创建一个条目,然后发送到路由模块,通过查路由表,确定该IP包应发送到eth1接口;在向eth1接口发送该IP包之前,根据NAT表的第二条规则,如果该IP包来自同一子网,则将该IP包的源地址更该为 192.168.0.1,同时更新该“连接跟踪表”中的相应条目,然后送到eth1接口发出到PC2;

此时“连接跟踪表”中有:

连接进入: src=6.7.8.9 dst=1.2.3.4 sport=1080 dport=81

连接返回: src=192.168.0.2 dst=6.7.8.9 sport=8180 dport=1080

是否使用: use=1

从PC2 192.168.0.2发回的IP包,源端口为8180,目的地址为6.7.8.9,目的端口为1080,主机1.2.3.4的TCP/IP协议栈接收到该IP包后,查找“连接跟踪表”中的连接返回栏目中是否有同样源和目的地址和端口的匹配项,找到后,根据条目中的记录将IP包的源地址由192.168.0.2更该为1.2.3.4, 源端口由8180更该为81,保持目的端口号1080不变;这样服务器的返回包就可以正确的返回发起连接的客户机,至此通信建立。

时间: 2025-01-02 03:47:10

iptables 笔记的相关文章

iptables笔记

一.内核转发 *永久开启转发 sysctl -w net.ipv4.ip_forward=1 *查看当前 cat /proc/sys/net/ipv4/ip_forward * 暂时开启 echo 1 > /proc/sys/net/ipv4/ip_forward 二.规则相关 所谓规则是由 “匹配条件” + “执行动作” 组成,匹配条件主要是用于选择需要进行处理的数据包, 当一个数据包满足“匹配条件”时,linux会对该数据包“执行动作”. 常使用的表:nat.filter,顾名思义,nat表

CentOS 7安装配置iptables笔记

1.关闭firewall #停止firewall systemctl stop firewall.service #禁止firewall开机启动 systemctl disable firewall.service 2.安装iptables #安装iptables yum install iptables-services -y #编辑防火墙文件 vi /etc/sysconfig/iptables 添加80和3306端口 -A INPUT -m state –state NEW -m tcp

【linux工具之iptables】

iptables 原理 iptables官网 iptables 配置手册1 iptables 配置手册2 iptables 笔记 netfilter/iptables全攻略 <--推荐

iptables防火墙使用笔记

一.背景 每次WEB项目上线时总是要安装环境,其中免不了配置防火墙来允许外网访问.之前都是网上找教程比葫芦画瓢把开启80端口命令敲一下就不管了.本着学习的精神,今天打算好好研究一下iptables配置,并作笔记以便之后查看.只求明白即可,具体深入原理啥的就算了. 注:centos7默认防火墙改为firewall而非iptables. 二.快速搞定  iptables -I INPUT -p tcp --dport 80 -j ACCEPT 如果不想往下看的话,基本上只需记下这条命令就可以开启80

【整理笔记-防火墙】实现iptables防火墙搭建

搭建防火墙,配置防火墙. - - 系统centos7 . centos7自带firewalld,由于看firewalld命令行没有接触过,所以安装iptables防火墙. 1:禁用firewalld firewall-cmd --state 查看系统自带防火墙状态. 用systemctl stop firewalld.service   禁止立即生效, systemctl disable firewalld.service  永久关闭firewalld.执行完再看一下防火墙状态, 显示为not

iptables基础笔记

1.iptables是什么 iptables是Linux上的一支防火墙服务程序,且由内核直接提供 2.iptables的基本工作方式 iptables通过"表"的形式管理进出主机网卡的数据流 默认的"表"有3张,分别为Filter(默认使用),Nat,Manager.我们的需求使用Filter表的情况居多,通过对比数据包头部信息与每张表中的规则,来决定处理数据流是放行还是丢弃. 3.1Filter"表"介绍 Filter是过滤器表,主要与想要进出

Linux学习笔记——iptables浅析

最近总结一些知识点越发吃力了,看来还是知识储备不足,用的不熟啊,还是硬着头皮来吧,争取多写点,毕竟好记性不如烂笔头不是么. 防火墙,就是用于实现Linux下访问控制的功能,它分为硬件的或者软件的防火墙两种.对于TCP/IP的模型来讲,第三层是网络层,三层的防火墙会在这层对源地址和目标地址进行检测.但是对于七层的防火墙,不管你源端口或者目标端口,源地址或者目标地址是什么,都将对你所有的东西进行检查.所以,对于设计原理来讲,七层防火墙更加安全,但是这却带来了效率更低.市面上通常的防火墙方案,都是两者

iptables学习笔记

1. 压力测试 ab host1 ab -n 100000 -c 40 http://192.168.1.112/ host2 netstat -an|grep 80|grep 192.168.1.114 |grep EST -c w 2. netfilter linux核心层内部的一个数据包处理模块 3. hook point(INPUT OUTPUT FORWARD PREROUTING POSTROUTING) 数据包在netfilter的挂载点 4. iptables 四张表(filte

iptables学习笔记之编译内核和iptables及安装l7proto

            编译内核和iptables及安装l7proto 一.环境介绍 操作系统:Redhat5.8_64bit 需要软件包: linux-2.6.28.10.tar.gz netfilter-layer7-v2.22.tar.gz l7-protocols-2009-05-28.tar.gz iptables-1.4.6.tar.bz2 安装步骤: 1).给内核打补丁,并重新编译内核 2).给iptables源码打补丁,并重新编译iptables 3).安装l7proto 1.给