iptables的nat使用记事

说明

iptables来源:《Linux网络技术》王波(第一版)。中关于iptables的命令介绍。见增补信息。

在使用过程中,并不是一定要按照书中所规定的代码实现需求。而是应该按照好wireshark等能够抓包的软件,然后通过iptables调试和观察,实现最后的调通。

rinetd端口转发

端口转发,比iptables好用的多的工具是rinetd。但是其源码没有找到,无法做重新编译和嵌入式移植。

rinetd的使用方法在https://www.cnblogs.com/llhl/p/9648614.html中有详细的说明。该软件可以自动处理一些跨网段的问题。

假如用户网段10.8.0.0/24,该用户要访问的网段192.168.1.0/24中的192.168.1.111设备。

两个网段之间的网关设备直接写入一条命令,让网关1(如10.8.0.2)导入到192.168.1.111即可(不用写入192.168.1.105(网关2))。

软件自动处理为192.168.1.105去访问192.168.1.111。看不懂也没得关系,反正软件很方便就行了。配合wireshark使用,抓包,观察,排错,调试。

iptablesIP转发开启

首先试一下sysctl -p是不是能使用。

然后修改(创建文件)/etc/sysctl.conf,取消或者写入net.ipv4.ip_forward=1。重新执行sysctl -p。

按道理说,这时候查看/proc/sys/net/ipv4/ip_forward中的值为1,则打开了IP转发功能。

iptables表链

三张表,每张表对应了几条链,还有可以自行创建链。数据进入到网关中,走的是哪一条链路,是否进入到该网关内部,都是应该理解的。

理解需要很多的实际代码操作,这里不再说明。书中有很详细的案例。

iptables常用操作

-A添加 -I插入 -j 动作 -F 清空 -t 选表 -p 策略 等等。详细见增补信息。

iptables做转发

外网段用户访问内网中网段某一个指定机器的数据,需要知道的是,不同网段是无法访问数据的。

代码1:

iptables -t nat -A PREROUTING -p tcp -d 10.8.0.88 --dport 1020 -j DNAT --to 192.168.15.103:1020

该代码存在网关机器上,该网关机器有双网卡。其网卡1为10.8.0.88,网卡2为192.168.15.11。

当外部机器10.8.0.22访问内部网络机器192.168.15.103对应的1020端口时候,发送给网卡机器的数据包的源地址为10.8.0.22,目的地址为10.8.0.88

在网卡机器上,该代码将外部机器访问该网关的数据包数据的目的地址10.8.0.88转变为了192.168.15.103与端口等(此时数据包的源地址为10.8.0.22).

不同网段之间无法访问,所以这里虽然目的地址转变了,但是源地址不合法。10.8.0.22-->192.168.15.103

代码2:

iptables -t nat -A POSTROUTING -p tcp -s 10.8.0.0/24 -o eth1 -j SNAT --to-source 192.168.15.11

该代码位于POSTROUTING上,就是将之前处理过的数据包,源地址为10.8.0.0/24网络段的数据包,转变为192.168.15.11。此时,数据包为:

192.168.15.11-->192.168.15.103,即可完成正向的传递。可以访问数据了。

做转发过程中,需要配合抓包的问题,注意数据包在iptables中的流向表链,确定iptables的代码书写。

额外说明ping的问题

比如a能ping通b,b不能ping通a,可能是a的防火墙问题。(这里指的是redirect host问题)

注意是a的防火墙。尝试关闭防火墙。另外可以检查a的防火墙设置中,入栈出栈规则中,所有禁用或未启用项中,通用里面的,打印机之类的icmp有关设置是否在未启用列表,

设置为允许通过。

增补信息

原文地址:https://www.cnblogs.com/bai2018/p/12210010.html

时间: 2024-10-31 18:18:52

iptables的nat使用记事的相关文章

iptables配置——NAT地址转换

iptables nat 原理同filter表一样,nat表也有三条缺省的"链"(chains): PREROUTING:目的DNAT规则 把从外来的访问重定向到其他的机子上,比如内部SERVER,或者DMZ.           因为路由时只检查数据包的目的ip地址,所以必须在路由之前就进行目的PREROUTING DNAT;          系统先PREROUTING DNAT翻译——>再过滤(FORWARD)——>最后路由.           路由和过滤(FORW

IPtables(5)NAT

nat:NetworkAddress Translation,安全性,网络层+传输层 SNAT(只修改请求报文的原地址;),DNAT(只修改请求报文的目标地址,端口映射,任何做一个DNAT需要对应一个SNAT) proxy:代理,应用层 DNAT\SNAT 核心转发.路由,不修改头部报文 修改源地址,NAT,修改头部报文,最初设计目标是为了安全性 nat表 PREROUTING(DNAT) OUTPUT POSTROUTING(SNAT) 源地址转换:iptables -t nat -A POS

Linux服务--iptables之nat转发和构建简单的DMZ防火墙

iptables之nat转发和构建简单的DMZ防火墙 一.NAT iptables 中的nat表: nat:Network Address Translation:NAT不仅完美地解决了IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机. nat有三种实现方式:SNAT,DNAT和端口多路复用OverLoad 在了解Nat工作原理之前先了解一下私网IP和公网IP.私网IP地址是指局域网内部网络或主机的IP地址,公网地址是指在因特尔网上全球唯一的IP地址. 私有

linyux iptables SNAt NAT 【原创】

rpm -ql iptables 查看安装的模块 iptables -t filter -L –n iptables -L –n这两个命令的效果是一样的 iptables -t nat -L –n查nat表 iptables -t mangle -L –n查mangle表 ============================================== [[email protected] ~]# iptables -help Usage: iptables -[AD] chain 

Linux主机上通过iptables实现NAT功能

实验:如下模型,node1为内网主机,IP地址为192.168.10.2:node3为外网主机,IP地址为10.72.37.177(假设此地址为公网地址),node3上提供web server和FTP Server的功能:内网主机node2主机有2块网卡,地址分别为eth0:192.168.10.1和eth2:10.72.37.91(假设此地址为公网地址): 现要求在node2上通过iptables配置实现SNAT功能,并做如下限制: 1.node1可以访问node3提供的web服务和ftp服务

iptables之nat

网络结构如下: NAT,即网络地址转换.如上图中三台机器,C服务器配置内网IP,B服务器可以正常上网同时打开了核心转发功能,B.C之间可以互相通信.但C无法访问外网,原因是当192.168.2.10访问192.168.1.10时(即内网访问外网),C的数据包可以正常发送给A,但是C是内网地址,服务器A的响应包是无法发送C的,所以需要进行地址转换.步骤如下: 1.服务器B打开核心转发功能(略): 2.在服务器B的防火墙上配置NAT,我们要让C可以正常访问外网,防火墙配置如下: # iptables

iptables 的NAT使用实验

+----------------------+                  +--------------------------+                +------------------+|  192.168.1.12 |   <-------->    |  192.168.1.11   |   <-------->  |  10.1.1.2    ||                         |                  |    10.

iptables之nat转发

主要分为路由前转发PREROUTING,和路由后转发POSTROUTING. 何为路由前?也就是从外部传入数据,在到达主机网卡,还未进入网卡的瞬间. 何为路由后?也就是从外部传入数据,进入并经过主机某个网卡后,向外传出数据的瞬间. 一个简单的模型如下: 外部数据------>主机网卡(如eth0.eth1等)------>目的地 路由前                           路由后 首先把转发策略打开 [[email protected]~]# vi /etc/sysctl.co

can&#39;t initialize iptables table `nat&#39;: Table does not exist

第一种 如果说nat名字是大写的NAT 试试iptables -tnat -L 原因是如果使用命令iptables -tNAT -L 是没有NAT表的也会出现这个错误 第二种:该错误完整应该是这样的: can't initialize iptables table `nat': Table does not exist (do you need to insmod?) Perhaps iptables or your kernel needs to be upgraded. 首先 [[email