免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 9283 | 回复: 37

网段地址转换 —— NETSNAT NETDNAT target源码 [复制链接]

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2011-02-26 15:19 |显示全部楼层
本帖最后由 瀚海书香 于 2011-02-27 08:47 编辑

netfilter的target有一个SNAT实现源地址转换,但是无法实现网段的地址转换,于是就写了一个NETSNAT实现网段的地址转换。
比如:192.168.3.0/24-->192.168.2.0/24  ,当然了,有些时候也是需要进来的时候做转换的,所以就又写了一些NETDNAT的target。
iptables的规则编写:
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j NETSNAT --netsnat 192.168.3.0/24-192.168.2.0/24
相反的,如果希望外网访问192.168.2.0/24的时候,转到192.168.3.0/24,则使用如下的规则:
iptables -t nat -A PREROUTING -d 192.168.2.0/24 -j NETDNAT --netdnat 192.168.2.0/24-192.168.3.0/24
欢迎大家测试提出宝贵意见。
下面是代码:
NETDNAT.rar (2.84 KB, 下载次数: 169)

评分

参与人数 1可用积分 +24 收起 理由
Godbach + 24 感谢分享

查看全部评分

论坛徽章:
0
发表于 2011-02-26 15:28 |显示全部楼层
抢个沙发吧

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2011-02-26 19:30 |显示全部楼层
回复 1# 瀚海书香
感谢分享。改天仔细拜读一下。

论坛徽章:
0
发表于 2011-02-26 22:16 |显示全部楼层
这个模块的作用是什么呢?
没有理解它的用途……

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2011-02-27 07:02 |显示全部楼层
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j NETSNAT --netsnat 192.168.3.0/24-192.168.2.0/24

看这个规则配置,MS  是把某个网段的 IP  nat 到指定网段

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2011-02-27 08:15 |显示全部楼层
iptables的规则编写:
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j NETSNAT --netsnat 192.168.3.0/24-192.168.2.0/24

这条规则怎么理解?

相反的,如果希望外网访问192.168.2.0/24的时候,转到192.168.3.0/24,则使用如下的规则:
iptables -t nat -A PREROUTING -d 192.168.2.0/24 -j NETDNAT --netdnat 192.168.2.0/24-192.168.3.0/24

这个为什么后面  192.168.2.0/24-192.168.3.0/24 是这样的,不是就转到192.168.3.0/24 吗

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2011-02-27 08:25 |显示全部楼层
代码里的一些数值,比如 41, 37 之类的,建议用宏定义一下。
也好明白这些数值是什么意思

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2011-02-27 08:27 |显示全部楼层
这条规则怎么理解?


这个为什么后面  192.168.2.0/24-192.168.3.0/24 是这样的,不是就转到192.168. ...
Godbach 发表于 2011-02-27 08:15


POSTROUTING上的规则,是内网访问外网时进行的源地址伪装。
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j NETSNAT --netsnat 192.168.2.0/24-192.168.3.0/24
比如内网192.168.2.3访问外网时,源地址会相应的变成192.168.3.3;而192.168.2.88会变成192.168.3.88。


PREROUTING上的规则,是对外网对内网的访问进行重定向。
iptables -t nat -A PREROUTING -d 192.168.3.0/24 -j NETDNAT --netdnat 192.168.3.0/24-192.168.2.0/24
比如外网的机器访问192.168.3.2,相应的就会转到内网的192.168.2.2的机器。




如果只是实现内网向外网访问的伪装,那么只需要POSTROUTING上的NETSNAT的规则就可以了。

如果只是对外网对内网的访问重定向,那么只需要PREROUTING上的NETDNAT的规则就可以了。

如果内网既要访问外网,而且也允许外网访问内网。那么就需要两条规则了。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2011-02-27 08:33 |显示全部楼层
POSTROUTING上的规则,是内网访问外网时进行的源地址伪装。
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j NETSNAT --netsnat 192.168.2.0/24-192.168.3.0/24
比如内网192.168.2.3访问外网时,源地址会相应的变成192.168.3.3;而192.168.2.88会变成192.168.3.88。


这里有两个疑问:
(1) 按照你上面的描述,为什么规则不写成
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j NETSNAT --netsnat 192.168.3.0/24

是为了保证一一对应关系吗?
(2)你这里实现的是网段到网段的转换是吧
比如内网192.168.2.3访问外网时,源地址会相应的变成192.168.3.3

这个对应是固定的吗,能否实现将源网段转换成目标网段随机的 IP

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2011-02-27 08:35 |显示全部楼层
代码里的一些数值,比如 41, 37 之类的,建议用宏定义一下。
也好明白这些数值是什么意思
Godbach 发表于 2011-02-27 08:25


多谢提出意见,已改动。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP