免费注册 查看新帖 |

Chinaunix

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

内网重定向问题解答(更新) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-05-23 14:25 |只看该作者 |倒序浏览
  1.                 ipfilter 重定向时
  2. 服务器在内网时,内网客户机用域名访问服务器带来的问题以及解决方法

  3. Aborigen Yin 阿土
  4. 2003.05.23
  5. v3.0


  6. 网络拓扑:
  7. (所有地址均为假设)

  8.                |  
  9.                | wan 互联网接口
  10.                |
  11.              router  上级路由器 (172.16.100.254/24)由ISP管理
  12.                |
  13.                |      (网卡0/fxp0)172.16.100.80/24 网关 172.16.100.254
  14.             gateway   我们自己的ipfilter网关   gateway_enable="YES"
  15.                |      (网卡1/fxp1)192.168.200.254/24
  16.                |
  17.             switch    内部中心交换机
  18.               /|\
  19.              / | \
  20.             /  |  \
  21.            /   |   \----- web server / ftp server 192.168.200.250/24 网关 192.168.200.254
  22.           /    |
  23.          /     |
  24.     client1  client2 192.168.200.100/24 网关 192.168.200.254

  25. 设置dns服务器 www.oss.cn ->; 172.16.100.80 ftp.oss.cn ->; 172.16.100.80

  26. 要求无论内外网,都能访问 http://www.oss.cn ftp://ftp.oss.cn (主动/被动 模式)。

  27. #nat规则
  28. #针对fxp0(网卡0的规则。
  29. #以下两条规则是为外部网络访问内网的服务器。
  30. #for webserver
  31. rdr fxp0 172.16.100.80/32 port 80 ->; 192.168.200.250 port 80 tcp
  32. #for ftp server
  33. rdr fxp0 172.16.100.80/32 port 21 ->; 192.168.200.250 proxy port 21 ftp/tcp

  34. #以下6条map规则是为让内网机器访问外部网络而提供地址/端口转换服务的。
  35. map fxp0 192.168.200.0/24 ->; 172.16.100.80/32 proxy port ftp ftp/tcp
  36. map fxp0 192.168.200.0/24 ->; 172.16.100.80/32 proxy port isakmp ipsec/udp
  37. map fxp0 192.168.200.0/24 ->; 172.16.100.80/32 proxy port 7070 raudio/tcp
  38. map fxp0 192.168.200.0/24 ->; 172.16.100.80/32 proxy port 1720 h323/tcp
  39. map fxp0 192.168.200.0/24 ->; 172.16.100.80/32 portmap tcp/udp 40000:60000
  40. map fxp0 192.168.200.0/24 ->; 172.16.100.80/32
  41. #针对fxp0(网卡0)的规则结束。

  42. #针对fxp1(网卡1)的规则。
  43. #由于server跟内网客户机在同一个子网,不能用类似:
  44. #rdr fxp1 172.16.100.80/32 port 80 ->; 192.168.200.250 port 80 tcp
  45. #rdr fxp0 172.16.100.80/32 port 21 ->; 192.168.200.250 proxy port 21 ftp/tcp
  46. #这样的规则.
  47. #当客户机访问http://www.osscn时,
  48. #重定向规则生效,192.168.200.100:1025 ->; 172.16.100.80:80 -rdr->;>; 192.168.200.100:1025 ->; 192.168.200.250:80
  49. #webserver收到192.168.200.100:1025 ->; 192.168.200.250:80 的请求,这里,192.168.200.100与192.168.200.250属于同一网段,所以
  50. #自然产生192.168.200.250:80 ->; 192.168.200.100:1025的回应。
  51. #返回的数据是直接经交换机回到客户机.
  52. #没有经过网关的fxp1,从192.168.200.100来看,192.168.200.250:80 ->; 192.168.200.100:1025的回应是非法的;
  53. #所以直接返回的数据被客户机drop掉;
  54. #同时客户机在等待请求从172.16.100.80:80的返回;
  55. #由于webserver返回的数据是直接回到客户机,没有经过网关的fxp1,所以
  56. #网关不会有数据返回给客户机;
  57. #做以下NAT规则:
  58. #假设ipfilter网关上开放22tcp端口用于远程管理;
  59. #这个重定向是为了防止网关本身的22端口被下面的map规则覆盖(map循环);如果你的网关上有别的服务需要从内网访问,依次类推。
  60. #是因为在ipfilter的处理流程中rdr规则比map规则优先,rdr的返回数据通过查找状态表而直接返回,不经过map规则。
  61. rdr fxp1 192.168.200.254 port 22 ->; 127.0.0.1 port 22 tcp
  62. #以下两个rdr作用同上,只是这是为了内网访问做的。
  63. #for webserver
  64. rdr fxp1 172.16.100.80/32 port 80 ->; 192.168.200.250 port 80 tcp
  65. #for ftp server
  66. rdr fxp1 172.16.100.80/32 port 21 ->; 192.168.200.250 proxy port 21 ftp/tcp

  67. #以下map规则是为让内网机器访问内网服务器而设置的,对发往server的ip进行map。
  68. #有ftp 服务器,所以需要ftp map proxy.
  69. map fxp1 192.168.200.0/24 ->; 192.168.200.254/32 proxy port ftp ftp/tcp
  70. map fxp1 192.168.200.0/24 ->; 192.168.200.254/32 portmap tcp/udp 40000:60000
  71. #map fxp1 192.168.200.0/24 ->; 192.168.200.254/32
  72. #以下map规则是对从server的主动返回的ip进行map,比如ftp主动模式下的data数据发送。
  73. #此时不需要ftp map proxy.
  74. map fxp1 192.168.200.250/32 ->; 172.16.100.80/32  portmap tcp/udp 40000:60000
  75. #map fxp1 192.168.200.250/32 ->; 172.16.100.80/32

  76. #######

  77. #通过这些设置,内网客户机访问的ip流程变为:
  78. #请求:
  79. 192.168.200.100:1026 ->; 172.16.100.80:80
  80.            rdr | (网关内部)
  81. 192.168.200.100:1026 ->; 192.168.200.250:80
  82.            map | (网关内部)
  83. 192.168.200.254:4321 ->; 192.168.200.250:80
  84. #返回
  85. 192.168.200.250:80 ->; 192.168.200.254:4321
  86.            map 状态表 | (网关内部)
  87. 192.168.200.250:80 ->; 192.168.200.100:1026
  88.            rdr 状态表 | (网关内部)
  89. 172.16.100.80:80 ->; 192.168.200.100:1026
  90. #请求完成

  91. #ftp 访问比web访问复杂些:
  92. #请求:(假设PORT/主动模式)
  93. 192.168.200.100:1028 ->; 172.16.100.80:21
  94.   rdr proxy ftp/tcp | (网关内部)
  95. 192.168.200.100:1028 ->; 192.168.200.250:21
  96.   map proxy ftp/tcp | (网关内部)
  97. 192.168.200.254:4322 ->; 192.168.200.250:21
  98. #这是控制通道,跟web一样的过程;
  99. #返回
  100. 192.168.200.250:21 ->; 192.168.200.254:4322
  101.   map proxy ftp/tcp | (网关内部) 状态表
  102. 192.168.200.250:21 ->; 192.168.200.100:1028
  103.   rdr proxy ftp/tcp | (网关内部) 状态表
  104. 172.16.100.80:21 ->; 192.168.200.100:1028
  105. #这是控制通道,跟web一样的过程;
  106. #请求完成
  107. #登陆完成后执行ls -l指令,此时需要data通道进行文件列表的传输。
  108. 客户端创建一个监听等待接受数据;
  109. 192.168.200.100:4567 LISTEN
  110. 通过21传递(port) 192.168.200.100:4567 ->;172.16.100.80
  111.     rdr proxy ftp/tcp | (网关内部)
  112. 通过21传递(port) 192.168.200.100:4567 ->;192.168.200.250
  113.     map proxy ftp/tcp | (网关内部)
  114. 通过21传递(port) 192.168.200.254:66666 ->;192.168.200.250
  115. (同时创建)rdr 192.168.200.254:66666 ->; 192.168.200.100:4567
  116. #数据返回:
  117. 192.168.200.250:20 ->; 192.168.200.254:66666 (注意,这是ftp server主动发起的连接)
  118.     map proxy ftp/tcp | (网关内部)产生的rdr
  119. 192.168.200.250:20 ->; 192.168.200.100:4567(注意,这是ftp server主动发起的连接)
  120. map规则处理(map fxp1 192.168.200.250/32 ->; 172.16.100.80/32  portmap tcp/udp 40000:60000) |
  121. 172.16.100.80:20 ->; 192.168.200.100:4567
  122. #请求完成,ls -l 指令完成;

  123. #请求:(假设PASV/被动模式)
  124. 192.168.200.100:1028 ->; 172.16.100.80:21
  125.   rdr proxy ftp/tcp | (网关内部)
  126. 192.168.200.100:1028 ->; 192.168.200.250:21
  127.   map proxy ftp/tcp | (网关内部)
  128. 192.168.200.254:4322 ->; 192.168.200.250:21
  129. #这是控制通道,跟web一样的过程;
  130. #返回
  131. 192.168.200.250:21 ->; 192.168.200.254:4322
  132.   map proxy ftp/tcp | (网关内部) 状态表
  133. 192.168.200.250:21 ->; 192.168.200.100:1028
  134.   rdr proxy ftp/tcp | (网关内部) 状态表
  135. 172.16.100.80:21 ->; 192.168.200.100:1028
  136. #这是控制通道,跟web一样的过程;
  137. #ftp client设置为使用被动模式。
  138. #请求完成
  139. ftp client发出PASV 指令,请求服务器使用被动模式(通过21通道进行)
  140. ftp server 创建监听,等待连接
  141. 192.168.200.250:9999 LISTEN
  142. 通过21传递(port) 192.168.200.250:9999 ->;192.168.200.254
  143.     map | (网关内部) 状态表
  144. 通过21传递(port) 192.168.200.250:9999 ->;192.168.200.100
  145.     rdr proxy ftp/tcp | (网关内部)
  146. 通过21传递(port) 172.16.100.80:9999 ->;192.168.200.100
  147. (同时创建)rdr 172.16.100.80:66666 ->; 192.168.200.250:9999
  148. #数据返回:收到pasv指令的回应后
  149. #ftp client发出ls -l指令然后ftp client 主动连接pasv指令中返回的地址和端口(172.16.100.80:9999):
  150. #请求连接
  151. 192.168.200.100:7896 ->; 172.16.100.80:9999 (注意,这是ftp client主动发起的连接)
  152.     rdr proxy ftp/tcp | (网关内部) (临时rdr)
  153. 192.168.200.100:7896 ->; 192.168.200.250:9999
  154.   map proxy ftp/tcp | (网关内部)
  155. 192.168.200.254:7896 ->; 192.168.200.250:9999
  156. #数据返回;
  157. 192.168.200.250:9999 ->; 192.168.200.254:7896
  158.   map proxy ftp/tcp | (网关内部) 状态表
  159. 192.168.200.250:9999 ->; 192.168.200.100:7896  
  160.   rdr proxy ftp/tcp | (网关内部) 状态表
  161. 172.16.100.80:9999 ->; 192.168.200.100:7896  
  162. #返回完成,ls -l 指令完成;

  163. #从ftp的过程看,相对与使用单一连接的web请求来说,ftp复杂一些。
  164. #其他类似ftp的协议重定向如果没有相应的proxy rdr/map就不行了。

  165. 罗嗦一句,有没有人愿意在pf/netfilter上试试?  
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP