主页 PC知识 网管技术 黑客帝国 安全技术 开放系统 程序设计 搜索 技术论坛

 

相关联接
 
RHU本级分类

路由技术
交换技术
网管天地
网络攻防
安全资讯
OICQ攻略
无线技术
解决方案

 
RHU阅读排行
·CISCO2501,2522的详细配置与调试
·教你“玩转”路由器密码
·在低端路由器上实现双机热备份和EIGRP的路由调整实例
·路由器的IOS快速恢复
·网管必读 宽带路由器常见故障巧排除
·FreeBSD上用tftpd备份/恢复cisco路由器
·准备CCIE考试用的一些学习笔记
·Cisco路由技术基础知识详解
·ADSL上网优化全攻略
·D-Link拨号服务器的安装与使用

 
 
RHU最新文章
·企业局域网本地路由器配置五则方法
·路由协议介绍以及教你如何选择路由协议
·用透明桥接方式解决路由器IP配置问题
·如何用用路由器日志快速定位及排除故障
·路由器端口映射的原理及设置方法介绍
·双出口策略路由出问题
·Cisco环境下解决ARP欺骗问题
·路由器基础知识:网络路由器的不同分类
·路由器是怎么构成的 路由器的体系结构
·网络管理员必懂的路由器常识

 
 
RHU相关搜索









 
 
RHU广而告之

 
 
>您的位置:首页 -> 网管技术-> 路由技术
使用FreeBSD模拟路由器转发

作者:RHU-TAC编辑员 来自:RHU网络采集 时间:2005-7-25 双击滚屏 收藏本页 字体:


点击 查看RHU2004全年文章


上网,大家都用natd。不过如果遇到内网中有人使用h.232或sip之类的voip协议,就会出问题。因为上述两种协议无法穿越natd
下面详细说明使用freebsd模块路由器转发的过程,并说明freebsd4与freebsd5在应用中的不同之处。
概述:
 主要使用route命令与ipfw中的fwd命令来完成。fwd子句通常用于做透明代理,它的本质是实现下一跳的转发。
 
问题:内网中有一台机器需要有互联网真实IP地址,它使用h.232协议,只需要访问到互联网中61.1.1.1的主机。拟分配给它的ip地址是219.1.1.3
说明:无论是dnat和snat都是使用修改ip包中地址来实现与互联网互联,这与h.232协议有冲突。具体原因不赘述,总之natd不符合要求。
解决方案:
  互联网
 |
 |-----------------| 219.1.1.1 00:04:3c:ab:dd:ebxl0
 | 网关 A|
 |-----------------| 192.168.254.254 00:d0:c9:68:16:93 fxp0
 |
 |-----------------| 192.168.254.250 00:50:04:ba:98:d5 xl1
 | 网关 B|
 |-----------------| 219.1.1.2 00:10:5a:85:d5:83xl0
 |
 |-----------------| 219.1.1.3
 | 客户机器|
 |-----------------|
 客户机器需要互联网真实IP地址。网关A是原有互联网网关。网关B是为了实现此项路由转发功能,增加的服务器。
 网关A、网关B均为Freebsd。客户机器随意。
 
方案一:网关A为Freebsd5.3,网关B为Freebsd4
1.网关B的转发
ipfw add 580 fwd 192.168.254.254 ip from 219.1.1.3 to 61.1.1.1
ipfw add 582 fwd 219.1.1.3 ip from 61.1.1.1 to 219.1.1.3
2.网关A的转发
ipfw add 580 fwd 219.234.226.225 ip from 219.1.1.3 to 61.1.1.1
ipfw add 582 fwd 192.168.254.250 ip from 61.1.1.1 to 219.1.1.3
3.在网关A上为客户机器的外部IP做arp代理,代理的mac地址为本机外网网卡mac,使上级路由器将219.1.1.3的包转发到本机。
arp -S 219.1.1.3 00:04:3c:ab:dd:eb pub
 可以用netstat -rn | grep 219.1.1.3看到:
 219.1.1.300:04:3c:ab:dd:ebUHLS2 00xl0
4.在网关A上为客户机器的外部IP做主机路由
route add -host 219.1.1.3/32 192.168.254.250
 
 可以用netstat -rn | grep 219.1.1.3看到:
 219.1.1.3192.168.254.250 UGHS07 fxp0
上述做法的说明:
 使用ipfw 的fwd命令进行转发的语法,是容易看懂的。下面说明一下arp代理与主机路由
 从客户机出发的访问,通过网关B和网关A即可。
 但是从外网回来的IP地址,网关A如何才能接收呢?方法是在网关A上使用arp代理,告诉上级路由器219.1.1.3的包发到网关A上来。
 然后在网关A上检查到 route add -host 219.1.1.3/32 192.168.254.250生成的路由,即会把包转发到该机器上。
 
注意事项:
 为何必须同时使用
 ipfw add 582 fwd 192.168.254.250 ip from 61.1.1.1 to 219.1.1.3 和
 route add -host 219.1.1.3/32 192.168.254.250
 
 按道理说,在网关A上应该可以找到192.168.254.250,那么不需要特意增加路由,即能正确的把包转发到192.168.254.250上。这在freebsd4.x上是正确的。
 但是在freebsd5.3中,我发现如果不指定路由表,那么这个包最后会被网卡xl0截获(可能是因为arp代理的原因)。被截获后,网关A发出arp请求,最后无法找到219.1.1.3的mac地址(在本机上,arp代理被忽略)。
 使用tcpdump来看,结果如下:
[root@ftp1]/root # tcpdump -i xl0 host 219.1.1.3
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on xl0, link-type EN10MB (Ethernet), capture size 96 bytes
10:43:01.052683 IP 219.1.1.3 > 61.1.1.1: icmp 40: echo request seq 16384
10:43:01.059563 IP 61.1.1.1 > 219.1.1.3: icmp 40: echo reply seq 16384
10:43:01.059606 arp who-has 219.1.1.3 tell ftp1.tgegroup.com
10:43:02.279858 IP 219.1.1.3 > 61.1.1.1: icmp 40: echo request seq 16640
10:43:02.287605 IP 61.1.1.1 > 219.1.1.3: icmp 40: echo reply seq 16640
10:43:02.287635 arp who-has 219.1.1.3 tell ftp1.tgegroup.com
 所以,freebsd5的网络实现时,在通过规则检查后,需要目标IP在路由表中的位置。我认为这或许是一个小bug吧。fwd命令并没有得到完美的执行。
 
 
方案二:网关A为Freebsd4.10,网关B为Freebsd4.10
1.网关B的转发
ipfw add 580 fwd 192.168.254.254 ip from 219.1.1.3 to 61.1.1.1
ipfw add 582 fwd 219.1.1.3 ip from 61.1.1.1 to 219.1.1.3
2.网关A的转发
ipfw add 580 fwd 219.234.226.225 ip from 219.1.1.3 to 61.1.1.1
ipfw add 582 fwd 192.168.254.250 ip from 61.1.1.1 to 219.1.1.3
 不需要做任何其它的工作,转发已经完成。fwd命令在背后做了许多工作,使用时更简单。
 
可以在网关A上用
tcpdump -i xl1 host 61.1.1.1
tcpdump -i xl1 host 219.1.1.3
观察数据包的走向
可以在网关B上用
tcpdump -i xl0 host 61.1.1.1
tcpdump -i xl0 host 219.1.1.3
观察数据包的走向
 
关于Freebsd5与Freebsd4表现的推测:
 我想是因为freebsd5中改变了ipfw在tcp/ip协议栈中的位置,导致了这种结果。freebsd5中的ipfw2,应该更靠近网络接口层而不是网络层。


OVER

[1] 页 RedHyphone.Union 投稿邮箱
[特别声明]:
本站文章大多搜索转载自网络中,如果侵犯了您的权利,请告之我们。本站将立即删除。
本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
查看评论】【向上滚屏】【关闭窗口】【 打印
-相关文章
  • openSUSE 11.1 Final - 正式发布
  • [视频]Opera Mini 4.2 正式版发布
  • dll注入系统进程(开源代码)
  • 认知盲区 解惑双网卡双线路DNS解析
  • FlashFXP 简体中文版 3.7.5 Build 1303 Beta[烈火]
  • -文章评论 (关闭)
    ·还没有相关的评论!

    网上大名:
    红旋风网络技术联盟 RHUTech.Union
     
    Copyright © 2000-2007 RedHyphone.Union All Rights Reserved. 红旋风联盟版权所有.皖ICP备05011033号
    中国红旋风网络技术联盟 | www.RedHyphone.net
    Mailto:Redhyphone@gamil.com