免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2556 | 回复: 7
打印 上一主题 下一主题

[网络管理] 讨论,2.6kernel多IP地址时的目的地址转换 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-30 10:32 |只看该作者 |倒序浏览
网络情况:
偶有100个公网IP,只有一个用于本机通讯,其它99个需要做目的地址转换。
2.6上面,好像只有把100个地址全部配置到网络接口上,目的地址转换才能正常工作,否则,本机无法进行其它99个IP地址的ARP应答,大家有没有什么好的方法??(配100个IP地址太累且没有必要)

查了一个资料:
说是老内核当设置了地址转换,启用代理ARP时,内核设置RTCF_DNAT 标志,就可自动进行代理的ARP应答了,不用全配IP地址,也看了一下代码:

  1.         if (addr_type == RTN_LOCAL) {
  2.                    ... ... ...
  3.         } else if (IN_DEV_FORWARD(in_dev)) {
  4.             if ((rt->rt_flags&RTCF_DNAT) ||
  5.                 (addr_type == RTN_UNICAST  && rt->u.dst.dev != dev &&
  6.                  (arp_fwd_proxy(in_dev, rt) ||
  7.                          pneigh_lookup(&arp_tbl, &tip, dev, 0)))) {
复制代码


的确是这样。但是,好像在2.6上,RTCF_DNAT标志没有再被使用了……
  1. RTCF_SNAT
  2. RTCF_DNAT
  3. RTCF_NAT
  4. 这些标志不再被IPv4使用。它们以前被FastNAT特性使用,该特性
  5. 在2.6内核中已经被删除(参见第32章“最近废弃的选项”小节)。
复制代码

大家有没有好的方法来解决这个问题呢?讨论一下。

[ 本帖最后由 独孤九贱 于 2008-4-30 10:38 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-04-30 10:40 |只看该作者
ISP 有两种方式接入
1、全部是公网 IP,下一跳也是公网地址
2、ISP 给了一个私网 IP,下一条也是私网 IP,同时给了一堆公网地址(池)
不知道九贱的是哪种
如果是第一种,那么没办法只能绑定 IP,可以用脚本来自动实现
如果是第二种,那么只需要绑定一个公网 IP 就可以了,因为这个池是远程路由器强行路由过来的,有了一个公网 IP 地址等于就有了一个落脚点,所以不再涉及前面的问题

论坛徽章:
0
3 [报告]
发表于 2008-04-30 11:36 |只看该作者

回复 #2 platinum 的帖子

第一种……好像是内核不提供这样的功能,偶用华为、思科路由器是有这个功能的。
不过我想有两种方式可以解决:
1、把内核的ARP代理稍改一下,只是担心有什么副作用。
2、做一个ARP请求监听程序,自己构造ARP应答也是一个解决办法。

论坛徽章:
0
4 [报告]
发表于 2008-04-30 12:08 |只看该作者
arpd( iprouter2 自带的arpd 不会自动reply arp 请求,arpd 会自动回应),

http://www.citi.umich.edu/u/provos/honeyd/

什么时候用arpd?

当对端(接入方),没有明确在route table中指定分配给你的ip段的所使用的路由ip时,即你与对端在同一广播段时使用,否则不用.

[ 本帖最后由 wysilly 于 2008-4-30 12:13 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2008-04-30 13:42 |只看该作者
原帖由 wysilly 于 2008-4-30 12:08 发表
arpd( iprouter2 自带的arpd 不会自动reply arp 请求,arpd 会自动回应),

http://www.citi.umich.edu/u/provos/honeyd/

什么时候用arpd?

当对端(接入方),没有明确在route table中指定分配给你的ip段的所 ...

能否说详细点?

论坛徽章:
0
6 [报告]
发表于 2008-04-30 13:58 |只看该作者
举例说时使用方法: 比如你有10.0.0.0/25的网段,你的接入方使用(10.0.0.1/25),你使用(eth1-10.0.0.2/25做为nat的对外接口),对内部192.168.0.0/24的网络nat
arp -i  eht1 10.0.0.0/25

这时假如192.168.0.1在数据传输,数据流为.
192.168.0.1->nat(转为 10.0.0.3)->10.0.0.1->internet

回包为
internet ->10.0.0.1(此设备与10.0.0.3在同一网段,这时它就会询问arp信息)->nat(arpd回答10.0.0.3在这,mac地址与10.0.0.2相同)->192.168.0.1

同时如果在10.0.0.0/25段中有不用nat的对外机器,这时arpd通过侦听网络中的arp广播信息来,自动更新它所维护的arp表.

论坛徽章:
0
7 [报告]
发表于 2008-04-30 14:17 |只看该作者
是的,我看了其代码实现,也就是我3楼中说的第二种方式,不过这个软件真的不容易编译呀,configure文件做得有点奇怪,源码中也使用了低版本gcc的宏,呵呵,不过不论如何,我已经安装好它了,它也能正常工作了。
谢谢楼上的!!

论坛徽章:
0
8 [报告]
发表于 2008-04-30 16:23 |只看该作者
原帖由 独孤九贱 于 2008-4-30 14:17 发表
是的,我看了其代码实现,也就是我3楼中说的第二种方式,不过这个软件真的不容易编译呀,configure文件做得有点奇怪,源码中也使用了低版本gcc的宏,呵呵,不过不论如何,我已经安装好它了,它也能正常工作了。 ...

也就是说,arpd 解决了你的问题吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP