上网,大家都用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
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器