免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: platinum
打印 上一主题 下一主题

[网络管理] 《iptables 高级使用研讨》PPT 及相关源代码(讲座视频新鲜出炉!!!) [复制链接]

论坛徽章:
0
31 [报告]
发表于 2010-08-11 09:35 |只看该作者
回复 17# platinum


    支持,现在学习和处理问题都是要养成做好笔记的习惯,并保存好,遇到类似的问题就查下以前的笔记就可以!不然很多东西做过后就忘记了!

论坛徽章:
0
32 [报告]
发表于 2010-08-11 09:49 |只看该作者
对,好脑子不如烂笔头,做好记录,其实 blog 就是一个不错的电子记录方式,我现在基本就用它了

论坛徽章:
0
33 [报告]
发表于 2010-08-11 10:31 |只看该作者
还有一个问题请教白金版主。

关于-j SNAT --to 1.1.1.1-1.1.1.10
这种利用地址池的SNAT。
从您抓包分析和介绍来看,iptables应该使用的是轮询的方式来使用地址池。但是这个可能会带来一个问题,导致用户上网不正常。

具体的情况可能如下:
1、用户登录网银,通常经过多次连接,比如第一次登录的时候是验证用户信息,验证通过后,可能会连接另外一台服务器,也就是说,会话不是发生在一次连接中
2、某类游戏,认证服务器和游戏服务器不是同一台,认证服务器认证通过后,用户再登录实际的服务器,就会出现认证服务器记录的信息和实际登录记录的地址信息不符,导致登录失败。

之前接触过的设备,具有一类算法,比如基于会话的,当某个IP上网的时候,在特定时间内,再次访问,依然使用之前的那个外网地址进行NAT。
或者基于目标,比如访问某个特定地址,使用某个外网地址进行NAT

iptables是否也有类似的实现?

论坛徽章:
0
34 [报告]
发表于 2010-08-11 10:54 |只看该作者
-j SNAT --to 1.1.1.1-1.1.1.10
这种方式一旦确定了 LAN 和 WAN 的 IP 对应关系,就不再改变,所以不存在你担心的网银和网游问题

论坛徽章:
0
35 [报告]
发表于 2010-08-11 11:36 |只看该作者
-j SNAT --to 1.1.1.1-1.1.1.10
这种方式一旦确定了 LAN 和 WAN 的 IP 对应关系,就不再改变,所以不存在你 ...
platinum 发表于 2010-08-11 10:54


请教下版主,能不能用网桥方式搭建PPPoE拨号服务器,偶现在用的网关方式搭建的PPPoE拨号服务器,由于之前用的是网桥方式现在想换成桥接不知道行不行!
需求是这样的:在一个碰撞域内,有一台既做网关使用也做拨号服务器使用的LINUX服务器,现在要保证此区域内客短端能够通过PPPoE拨号连接Internet,同时还能使其他的客户端直接设置iptable规则连接到Internet。

论坛徽章:
0
36 [报告]
发表于 2010-08-11 11:42 |只看该作者
从你的描述看有些需要确认的地方
1、PPPoE 服务器是 Linux 自己还是在 Linux 外面?
2、如果是前者,Linux 自己是如何上网的?为什么要桥接?你想如何桥?
3、如果是后者,为什么贴子中说“有一台既做网关使用也做拨号服务器使用”?

论坛徽章:
0
37 [报告]
发表于 2010-08-11 12:16 |只看该作者
从你的描述看有些需要确认的地方
1、PPPoE 服务器是 Linux 自己还是在 Linux 外面?
2、如果是前者,Linu ...
platinum 发表于 2010-08-11 11:42


1、LINUX服务器它一端连接就是Internet,LINUX服务器起3个作用:网关、防火墙、PPPoE拨号服务器;
2、桥接的一个原因可能是为了配置的灵活性吧,因为它不需要知道IP地址;
3、1已经说清楚了,因为这台LINUX服务器任务监控整个子网的!

偶付上一个非桥接的脚本:
  1. #!/bin/sh
  2. #
  3. # netdetectd -- Start netdetect server
  4. #
  5. # chkconfig: 35 93 07
  6. # description:        Starts, stops netdetect server
  7. #

  8. # Source function library.
  9. . /etc/init.d/functions

  10. IFCONFIG=/sbin/ifconfig
  11. IP=/sbin/ip
  12. PPPOE_SERV=/sbin/pppoe-server
  13. IPTABLES=/sbin/iptables
  14. BRCTL=/usr/sbin/brctl

  15. if [ ! -x $IFCONFIG ]; then
  16.     echo -n $"$IFCONFIG does not exist."; warning; echo
  17.     exit 1
  18. fi

  19. if [ ! -x $IP ]; then
  20.     echo -n $"$IP does not exist."; warning; echo
  21.     exit 1
  22. fi

  23. if [ ! -x $PPPOE_SERV ]; then
  24.     echo -n $"$PPPOE_SERV does not exist."; warning; echo
  25.     exit 1
  26. fi

  27. if [ ! -x $IPTABLES ]; then
  28.     echo -n $"$IPTABLES does not exist."; warning; echo
  29.     exit 1
  30. fi

  31. if [ ! -x $BRCTL ]; then
  32.     echo -n $"$BRCTL does not exist."; warning; echo
  33.     exit 1
  34. fi

  35. # MAX is the maximum number of addresses your server
  36. # is allowed to hand out.
  37. MAX=100

  38. # BASE is the lowest IP address your server is allowed
  39. # to hand out.
  40. LOCT=`ifconfig eth0|grep 'inet addr:'|awk -F: '{print $2}'|awk '{print $1}'`
  41. BASE=`ifconfig eth0|grep 'inet addr:'|awk -F: '{print $2}'|awk '{print $1}'|awk -F. -v OFS=. '$4<255{$4=$4+1}1'`

  42. # NAT is the set of addresses which your server will
  43. # NAT behind it. Other addresses behind your server
  44. # WILL NOT be NATed.
  45. NAT=`ip route list|grep 'dev eth0'|awk '{print $1}'`

  46. # MYIP is the public IP address of this server.
  47. MYIP=`ifconfig eth1|grep 'inet addr:'|awk -F: '{print $2}'|awk '{print $1}'`

  48. setfwrule() {
  49.     $IPTABLES -t mangle -F
  50.     $IPTABLES -t nat -F
  51.     $IPTABLES -F

  52.     #mangle PREROUTING
  53.     $IPTABLES -t mangle -P PREROUTING ACCEPT

  54.     #nat PREROUTING
  55.     $IPTABLES -t nat -P PREROUTING ACCEPT
  56.     $IPTABLES -t nat -A PREROUTING -p tcp --dport 80 -m mark ! --mark 0x8 -j DNAT --to-destination $LOCT:8080

  57.     #filter FORWARD
  58.     $IPTABLES -P FORWARD DROP
  59.     $IPTABLES -A FORWARD -p icmp -j ACCEPT
  60.     $IPTABLES -A FORWARD -p tcp --dport 22 -j ACCEPT
  61.     $IPTABLES -A FORWARD -p tcp --sport 22 -j ACCEPT
  62.     $IPTABLES -A FORWARD -p udp --dport 53 -j ACCEPT
  63.     $IPTABLES -A FORWARD -p udp --sport 53 -j ACCEPT
  64.     $IPTABLES -A FORWARD -p udp --dport 68 -j ACCEPT
  65.     $IPTABLES -A FORWARD -p udp --sport 68 -j ACCEPT
  66.     $IPTABLES -A FORWARD -p udp --dport 1812 -j ACCEPT
  67.     $IPTABLES -A FORWARD -p udp --sport 1812 -j ACCEPT
  68.     $IPTABLES -A FORWARD -p udp --dport 1813 -j ACCEPT
  69.     $IPTABLES -A FORWARD -p udp --sport 1813 -j ACCEPT
  70.     $IPTABLES -A FORWARD -s $LOCT -j ACCEPT
  71.     $IPTABLES -A FORWARD -d $LOCT -j ACCEPT

  72.     #nat POSTROUTING
  73.     $IPTABLES -t nat -P POSTROUTING ACCEPT
  74.     $IPTABLES -t nat -A POSTROUTING -s $NAT -j SNAT --to-source $MYIP
  75. }

  76. resetfwrule() {
  77.     $IPTABLES -t mangle -F
  78.     $IPTABLES -t nat -F
  79.     $IPTABLES -F

  80.     $IPTABLES -t mangle -P PREROUTING ACCEPT
  81.     $IPTABLES -t nat -P PREROUTING ACCEPT
  82.     $IPTABLES -P FORWARD ACCEPT
  83.     $IPTABLES -t nat -P POSTROUTING ACCEPT
  84. }

  85. RETVAL=0
  86. case "$1" in
  87.     start)
  88.         RETVAL=0
  89.             echo -n "Starting PPPoE Server : "
  90.             daemon $PPPOE_SERV -T 60 -I eth0 -N $MAX -L $LOCT -R $BASE
  91.         echo
  92.             RETVAL+=$?
  93.         echo 'Set firewall rule ...'
  94.         setfwrule
  95.             [ $RETVAL -eq 0 ] && touch $LOCKF
  96.             ;;
  97.     stop)
  98.         RETVAL=0
  99.         echo 'Reset firewall rule ...'
  100.         resetfwrule
  101.         echo -n $"Stopping PPPoE Server : "
  102.             killproc $PPPOE_SERV
  103.             RETVAL+=$?
  104.         echo
  105.             [ $RETVAL -eq 0 ] && rm -f $LOCKF
  106.             ;;
  107.     status)
  108.         status $PPPOE_SERV
  109.         RETVAL=$?
  110.         ;;
  111.     restart)
  112.             $0 stop
  113.             sleep 3
  114.             $0 start
  115.             RETVAL=$?
  116.             ;;
  117.     *)
  118.             echo $"Usage: $0 {start|stop|status|restart}"
  119.             exit 1
  120.             ;;
  121. esac

  122. exit $RETVAL
复制代码

论坛徽章:
0
38 [报告]
发表于 2010-08-11 12:39 |只看该作者
2、桥接的一个原因可能是为了配置的灵活性吧,因为它不需要知道IP地址;
zfsoft2206 发表于 2010-08-11 12:16


这个需求我没有理解
怎样就能达到配置灵活的目的了?
不需要知道 IP 地址是什么意思?
你最终想把谁和谁桥起来?

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
39 [报告]
发表于 2010-08-11 13:18 |只看该作者
回复 33# chinaunix874


    不行就用SAME替换SNAT

论坛徽章:
0
40 [报告]
发表于 2010-08-11 13:19 |只看该作者
回复 38# platinum

这么说吧:LINUX服务器它自己能够连接Internet,它一端接着监控子网,一端可能接的是另外个子网也可能连接xDSL,现在如果考虑的连接的是子网,这个子网就命名为管理子网,管理子网应该都能连接Internet,也就说网桥连接其实是监控子网和管理子网,因为使用的是透明网桥,监控子网和管理子网可以分配为同一个网段,这样管理子网能够直接访问监控子网,这个是没有加入拨号服务之前的布局,偶现在加入了拨号功能,去掉了网桥,拨号服务器一端连接的是管理子网,一端连接的拨号客户端子网(可以认为是监控子网),现在管理子网里面station不能象之前那样访问监控子网下的station了,现在问题是还能不能用之前网桥实现直接访问?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP