免费注册 查看新帖 |

Chinaunix

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

[网络管理] 多个外网IP的NAT问题 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2007-10-18 21:11 |只看该作者
假设:
你的公网IP是 xxx.xxx.xxx.n1-n2 (一共30个连续的IP)
外网卡是eth0
150个内网用户的IP是192.168.0.1-192.168.0.150

  1. for((i=n1;i<=n2;i++))
  2. do
  3.    ip addr add xxx.xxx.xxx.${i} dev eth0
  4. done
  5. #第一个循环,添加IP([color=Magenta]需要iproute2这个软件包[/color]),如果已经使用其他的方式,比如系统的网卡配置工具设置过那30个IP,就可以不要这个循环了

  6. iptables -t nat -F POSTEROUTING  #清空原来POSTROUTING链中的所有规则,(这个需要视情况而定)


  7. for((i=1;i<=150;i++))
  8. do
  9.    ((j=(i-1)/5+n1))
  10.    iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.${i} -j SNAT --to xxx.xxx.xxx.${j}
  11. done
  12. #第二个循环,按照顺序,每5个IP,映射到一个外网IP上
  13. ((  )) 这是一个计算标志,表示内部是进行算术运算
  14. j=(i-1)/5+n1       (i-1)/5 能够保证每5个IP获取到不同的j值,bash中的计算是取整的, +n1 就是映射到实际的那个IP上([color=Magenta]原来的程序部分有错误,在此修正[/color])
  15. iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to xxx.xxx.xxx.${j}  此处${j} 会使用j实际的值进行替换,然后再执行iptables命令
复制代码


不知是否可行?


修改原因:添加说明和修正部分错误

[ 本帖最后由 springwind426 于 2007-10-19 09:03 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-10-18 23:39 |只看该作者
我是新手
烦请老大告诉我这些代码怎么用。呵呵

论坛徽章:
0
3 [报告]
发表于 2007-10-18 23:55 |只看该作者
原帖由 xeonpc 于 2007-10-18 23:39 发表
我是新手
烦请老大告诉我这些代码怎么用。呵呵


建議你學 shell script 與一些 shell 變量使用,還有 ip, iptables 命令使用語法,這樣該片段 code 就可以看得懂。

--

论坛徽章:
0
4 [报告]
发表于 2007-10-19 00:49 |只看该作者
这个可以实现我所说的功能么?

论坛徽章:
0
5 [报告]
发表于 2007-10-19 01:13 |只看该作者
执行完这段代码是这样的

  1. [root@localhost ~]# cat /etc/sysconfig/iptables
  2. # Generated by iptables-save v1.2.11 on Fri Oct 19 01:10:58 2007
  3. *filter
  4. :INPUT ACCEPT [762966:80569415]
  5. :FORWARD ACCEPT [0:0]
  6. :OUTPUT ACCEPT [796979:478510599]
  7. -A FORWARD -j ACCEPT
  8. COMMIT
  9. # Completed on Fri Oct 19 01:10:58 2007
  10. # Generated by iptables-save v1.2.11 on Fri Oct 19 01:10:58 2007
  11. *nat
  12. :PREROUTING ACCEPT [19429:1276005]
  13. :POSTROUTING ACCEPT [47:5250]
  14. :OUTPUT ACCEPT [26:3039]
  15. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.2-210.*.77.4
  16. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.0
  17. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.0
  18. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.0
  19. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.0
  20. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.0
  21. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.1
  22. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.1
  23. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.1
  24. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.1
  25. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.1
  26. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.2
  27. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.2
  28. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.2
  29. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.2
  30. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.2
  31. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.3
  32. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.3
  33. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.3
  34. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.3
  35. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.3
  36. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.4
  37. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.4
  38. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.4
  39. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.4
  40. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.4
  41. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.5
  42. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.5
  43. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.5
  44. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.5
  45. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.5
  46. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.6
  47. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.6
  48. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.6
  49. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.6
  50. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.6
  51. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.7
  52. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.7
  53. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.7
  54. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.7
  55. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.7
  56. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.8
  57. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.8
  58. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.8
  59. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.8
  60. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.8
  61. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.9
  62. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.9
  63. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.9
  64. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.9
  65. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.9
  66. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.10
  67. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.10
  68. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.10
  69. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.10
  70. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.10
  71. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.11
  72. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.11
  73. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.11
  74. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.11
  75. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.11
  76. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.12
  77. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.12
  78. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.12
  79. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.12
  80. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.12
  81. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.13
  82. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.13
  83. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.13
  84. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.13
  85. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.13
  86. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.14
  87. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.14
  88. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.14
  89. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.14
  90. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.14
  91. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.15
  92. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.15
  93. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.15
  94. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.15
  95. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.15
  96. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.16
  97. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.16
  98. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.16
  99. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.16
  100. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.16
  101. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.17
  102. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.17
  103. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.17
  104. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.17
  105. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.17
  106. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.18
  107. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.18
  108. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.18
  109. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.18
  110. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.18
  111. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.19
  112. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.19
  113. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.19
  114. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.19
  115. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.19
  116. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.20
  117. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.20
  118. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.20
  119. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.20
  120. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.20
  121. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.21
  122. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.21
  123. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.21
  124. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.21
  125. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.21
  126. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.22
  127. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.22
  128. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.22
  129. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.22
  130. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.22
  131. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.23
  132. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.23
  133. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.23
  134. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.23
  135. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.23
  136. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.24
  137. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.24
  138. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.24
  139. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.24
  140. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.24
  141. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.25
  142. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.25
  143. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.25
  144. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.25
  145. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.25
  146. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.26
  147. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.26
  148. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.26
  149. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.26
  150. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.26
  151. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.27
  152. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.27
  153. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.27
  154. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.27
  155. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.27
  156. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.28
  157. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.28
  158. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.28
  159. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.28
  160. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.28
  161. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.29
  162. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.29
  163. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.29
  164. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.29
  165. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.29
  166. COMMIT
  167. # Completed on Fri Oct 19 01:10:58 2007
  168. [root@localhost ~]#
复制代码

论坛徽章:
0
6 [报告]
发表于 2007-10-19 09:00 |只看该作者
-A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.2-210.*.77.4


需要在防火墙中把这句去掉

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
7 [报告]
发表于 2007-10-19 09:24 |只看该作者
LZ你没有说清除30个IP是外网的30个IP地址,还是内网的5个网段每个网段分了30个IP。

论坛徽章:
0
8 [报告]
发表于 2007-10-19 12:08 |只看该作者
30个外网IP。
让内网的 150个用户每5个内网用户NAT到一个外网IP上
比如
10.0.0.2 ->210.*.77.2
10.0.0.3 ->210.*.77.2
10.0.0.4 ->210.*.77.2
10.0.0.5 ->210.*.77.2
10.0.0.6 ->210.*.77.2

10.0.0.7 ->210.*.77.3
10.0.0.8 ->210.*.77.3
10.0.0.9 ->210.*.77.3
10.0.0.10 ->210.*.77.3
10.0.0.11 ->210.*.77.3

论坛徽章:
0
9 [报告]
发表于 2007-10-19 12:19 |只看该作者
150个用户同时在线的话
  1. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.1
  2. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.1
  3. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.1
  4. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.1
  5. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.1
  6. ......
  7. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.2
  8. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.2
  9. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.2
  10. -A POSTROUTING -o eth0 -j SNAT --to-source 210.*.77.2
复制代码

允许这样定规则么 ?

这规则的意思是把eth0上的  都out到210.*.77.1
再把eth0上的  都out 到210.*.77.2


允许这样写规则么?

论坛徽章:
0
10 [报告]
发表于 2007-10-19 12:28 |只看该作者
如果我不用循环,直接写150条规则你们看行么
  1. iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 210.*.77.2
  2. iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 210.*.77.2
  3. iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 210.*.77.2
  4. iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 210.*.77.2
  5. iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 210.*.77.2
  6. iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 210.*.77.3
  7. iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 210.*.77.3
  8. iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 210.*.77.3
  9. iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 210.*.77.3
  10. iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 210.*.77.3
  11. ................
  12. ................
  13. iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 210.*.77.31
  14. iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 210.*.77.31
  15. iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 210.*.77.31
  16. iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 210.*.77.31
  17. iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 210.*.77.31
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP