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的nat使用记事_第1张图片

 

 

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

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

 

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有关设置是否在未启用列表,

设置为允许通过。

 

增补信息

iptables的nat使用记事_第2张图片

 

 iptables的nat使用记事_第3张图片iptables的nat使用记事_第4张图片

 

 iptables的nat使用记事_第5张图片iptables的nat使用记事_第6张图片

 

 iptables的nat使用记事_第7张图片iptables的nat使用记事_第8张图片

 

 iptables的nat使用记事_第9张图片

 

 iptables的nat使用记事_第10张图片iptables的nat使用记事_第11张图片

 

 iptables的nat使用记事_第12张图片iptables的nat使用记事_第13张图片

 

 iptables的nat使用记事_第14张图片

 

 iptables的nat使用记事_第15张图片

 

 iptables的nat使用记事_第16张图片

 

 iptables的nat使用记事_第17张图片

 

 iptables的nat使用记事_第18张图片

 

实例参阅代码

iptables -F
iptables -X
iptables -A INPUT -p tcp -dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 1194 -j ACCEPT
iptables -P FORWARD DROP

iptables -P OUTPUT DROP

  

你可能感兴趣的:(iptables的nat使用记事)