忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 2349 | 回复: 6

[FreeBSD] 请教关于IPFW中关于PPTP服务器的流量允许问题 [复制链接]

论坛徽章:
0
发表于 2013-01-20 18:55 |显示全部楼层
本帖最后由 spluto 于 2013-01-20 19:32 编辑

大家好,最近在一个VPS中部署了PPTP服务器(用途你懂的),遇到了一个问题,今天搞了一天也没有解决,特来论坛向各位大神求助:

我的PPTP服务器使用mpd5构建,配置已经完成,也可以看到服务器在监听TCP1723端口,一切正常,在没有加载我自己写的ipfw脚本(使用默认的open规则)的时候,客户机(Windows 7)可以拨号到服务器上,浏览facebook和youtube等网站,但是在我加载了防火墙列表之后,客户机仍然可以拨号至服务器,但无法打开任何网页,个人感觉问题应该出在IP转发的某个步骤,请诸位大侠不吝赐教,告诉我究竟是缺了哪条防火墙规则,导致了此现象的产生?

请看我的ipfw规则:

#!/bin/sh

ipfw -q -f flush                                                # Delete all rules

# Setting up variables

oif="em0"                                                       # Out interface
cmd="ipfw -q add"                                               # Build rule prefix
ks="keep-state"                                                 # TCP/UDP state tracking

# Firewall ACLs

# Sub-section 1 - System core functions

$cmd 00001 allow ip from any to any via lo0                        # Enable loopback communication
$cmd 00002 allow tcp from any to any established                # Enable TCP SYN connection
$cmd 00003 deny ip from any to 127.0.0.0/8                      # No loopback destination allowed
$cmd 00004 deny ip from 127.0.0.0/8 to any                      # No loopback source allowed
$cmd 00005 allow ip from any to any frag                           # Enable IP fragmentation
$cmd 00006 allow tcp from me to any setup                       # Enable TCP packets
$cmd 00007 allow udp from me to any dst-port 53 $ks         # Enable UDP-based DNS resolution
$cmd 00008 allow tcp from me to any dst-port 53 $ks          # Enable TCP-based DNS resolution
$cmd 00009 allow udp from me to any dst-port 123 $ks       # Enable NTP synchronization
$cmd 00010 allow tcp from me to any dst-port 20 $ks          # Enable FTP client, control port
$cmd 00011 allow tcp from me to any dst-port 21 $ks          # Enable FTP client, data port
$cmd 00012 allow tcp from me to any dst-port 23 $ks           # Enable initiation of Telnet connections

# Sub-section 2 - ICMP, ping, traceroute

$cmd 00050 allow icmp from any to me icmptypes 0                # Enable receiving Echo-reply
$cmd 00051 allow icmp from me to any icmptypes 8                # Enable initiation of Echo-requests
$cmd 00052 allow icmp from any to me icmptypes 11               # Enable receiving TTL time-outs (ICMP-based traceroute)
$cmd 00053 allow udp from me to any dst-port 30000-65535 $ks    # Enable UDP route inspection (UDP-based traceroute)

# Sub-section 3 - Customized services

$cmd 00100 allow tcp from any to me dst-port 443                # Customized SSH service port,SSH端口,使用443做伪装
$cmd 00200 allow tcp from any to me dst-port 80                 # WWW service port
$cmd 00300 allow tcp from any to me dst-port 1723              # PPTP VPN service port
$cmd 00400 allow tcp from any to me dst-port 10001             # Web server console for PPTP
$cmd 00500 allow tcp from any to me dst-port 10002             # Web server for PPTP
$cmd 00600 divert natd ip4 from any to any via em0              # Enable PPTP traffic
$cmd 00700 allow gre from any to any via em0                      # Enable GRE to me

在/etc/rc.conf中,我已经启用了如下开关:

# Firewall
natd_enable="YES"
natd_interface="em0"
gateway_enable="YES"
firewall_enable="YES"
#firewall_type="open"
firewall_script="/root/fw_rule"        # 自己写的防火墙规则
firewall_logging_enable="YES"

如果我把firewall_script="/root/fw_rule"注释掉,改用firewall_type="open"的话,则一切正常。

请大家帮忙分析分析,非常感谢!!!!

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
发表于 2013-01-20 21:13 |显示全部楼层
加上这句试试:
$cmd 00650 divert natd ip4 from any to any via "tun*"

另外建议:
1、规则号每次加100,而不是每次加1,否则调整的时候非常麻烦。
2、很多规则可以合并,比如:
$cmd 00050 allow icmp from any to me icmptypes 0                # Enable receiving Echo-reply
$cmd 00051 allow icmp from me to any icmptypes 8                # Enable initiation of Echo-requests
$cmd 00052 allow icmp from any to me icmptypes 11               # Enable receiving TTL time-outs (ICMP-based traceroute)

可以合并成一条:$cmd 00050 allow icmp from any to me icmptypes 0,8,11
3、如果你没有加deny,那么就改为open吧,实际效果一样。

论坛徽章:
0
发表于 2013-01-20 23:37 |显示全部楼层
lsstarboy 发表于 2013-01-20 21:13
加上这句试试:
$cmd 00650 divert natd ip4 from any to any via "tun*"


版主,感谢回复。有两个问题想麻烦再问一下:

1. 这里tun*指的是pptp隧道接口的接口名字吗?我这里的接口名是ng0,还需要加上双引号吗?

2. 我在编译内核的时候,没有加上IPFIREWALL_DEFAULT_TO_ACCEPT,这样一来,应该是默认drop掉所有的数据包的,对吗?我个人觉得这才应该是防火墙该做的事情,只把允许的数据打开。

请不吝赐教,谢谢!

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
发表于 2013-01-21 08:41 |显示全部楼层
回复 3# spluto


1、你的机器就是"ng*",注意要加双引号,否则必须用么斜杠反义。
2、正常情况上网应该正常了,但是因为你的规则比较多,所以一开始最好先别完全deny,或者在deny的时候加个log,方便分析到底是哪个规则出了问题。

论坛徽章:
0
发表于 2013-01-21 09:48 |显示全部楼层
lsstarboy 发表于 2013-01-21 08:41
回复 3# spluto


谢谢版主回复,请问你说的加log是在什么地方?我在内核里已经启用了log,条目数是65535,然后在sysctl中也启用了,但是现在不知道它的log到底在哪里,我无法得知到底数据怎么被拦截了。请告知一下,谢谢!

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
发表于 2013-01-21 14:04 |显示全部楼层
回复 5# spluto


    看一下/var/log/security和/var/log/debug,如果这两个都没有,你就只好自己写syslogd.conf了。

论坛徽章:
54
2017金鸡报晓
日期:2017-02-08 10:39:42操作系统版块每日发帖之星
日期:2016-03-08 06:20:00操作系统版块每日发帖之星
日期:2016-03-07 06:20:00操作系统版块每日发帖之星
日期:2016-02-22 06:20:00操作系统版块每日发帖之星
日期:2016-01-29 06:20:00操作系统版块每日发帖之星
日期:2016-01-27 06:20:00操作系统版块每日发帖之星
日期:2016-01-20 06:20:00操作系统版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之江苏
日期:2015-12-21 20:00:24操作系统版块每日发帖之星
日期:2015-12-21 06:20:00IT运维版块每日发帖之星
日期:2015-11-17 06:20:002015亚冠之广州恒大
日期:2015-11-12 10:58:02
发表于 2013-01-21 14:07 |显示全部楼层
另外,如果记录的数据包数量超过了你指定的数目,它就不记录了,如果想再次启用记录,简单地用ipfw zero就可以了,或者再精确一点,ipfw zero 6000,只重新记录6000规则。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10张SACC2017门票等你来拿~

在数字化转型时代,云已成为万物智能的数字化大脑。而随着大数据应用、人工智能、移动互联网等技术的飞速发展,“智慧 +” 的概念正在深入到各行各业,提升企业效率,释放商业潜能,创造全新机遇。作为国内顶级技术盛会之一,2017 中国系统架构师大会(SACC2017)将于 10 月 19-21 日在北京新云南皇冠假日酒店震撼来袭。今年,大会以 “云智未来” 为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置 2 大主会场,18 个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100 余位技术专家及行业领袖来分享他们的经验;并将吸引 4000 + 人次的系统运维、架构师及 IT 决策人士参会,为他们提供最具价值的交流平台。
----------------------------------------
优惠时间:2017年10月19日前

活动链接>>
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP