前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iptables的nat使用记事

iptables的nat使用记事

作者头像
嘘、小点声
发布2020-02-14 16:56:30
1.5K0
发布2020-02-14 16:56:30
举报
文章被收录于专栏:嘘、小点声嘘、小点声

说明

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:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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有关设置是否在未启用列表,

设置为允许通过。

增补信息

实例参阅代码

代码语言:javascript
复制
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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-01-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
  • rinetd端口转发
  • iptablesIP转发开启
  • iptables表链
  • iptables常用操作
  • iptables做转发
  • 额外说明ping的问题
  • 增补信息
  • 实例参阅代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档