在PF防火墙上打开emule, BT , italkbb端口

OpenBSD的安装、升级、更新等日常问题。

版主: chenjun天地乾坤

回复
头像
leo
帖子: 2465
注册时间: 2010-01-21 3:27

在PF防火墙上打开emule, BT , italkbb端口

帖子 leo » 2010-01-21 11:25

在PF防火墙上打开emule, BT , italkbb端口

网络设置
rl0连接外网,hostname.rl0文件内容

代码: 全选

dhcp NONE NONE NONE
re0连接内网,hostname.re0的内容

代码: 全选

inet 192.168.1.1 255.255.255.0 NONE
re1连接italkBB,hostname.re1的内容

代码: 全选

inet 192.168.2.1 255.255.255.0 NONE
启用OpenBSD的路由功能,设置/etc/sysctl.conf文件,将下面这行的注释去掉

代码: 全选

net.inet.ip.forwarding=1 # 1=Permit forwarding (routing) of IPv4 packets
打开或创建rc.conf.local文件,添加如下两行:

代码: 全选

dhcpd_flags="re1,re0"
ftpproxy_flags=""
第二行的目的是代理内网ftp客户端
dhcpd.conf

代码: 全选

# $OpenBSD: dhcpd.conf,v 1.2 2008/10/03 11:41:21 sthen Exp $
#
# DHCP server options.
# See dhcpd.conf(5) and dhcpd(8) for more information.
#
# Network: 192.168.1.0/255.255.255.0
# Domain name: my.domain
# Name servers: 192.168.1.3 and 192.168.1.5
# Default router: 192.168.1.1
# Addresses: 192.168.1.32 - 192.168.1.127
#
option domain-name "my.domain";
option domain-name-servers 68.94.156.1, 68.94.157.1;
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
range 192.168.1.34 192.168.1.127;
host static-client {
hardware ethernet 22:33:44:55:66:77;
fixed-address 192.168.1.200;
}
host pxe-client {
hardware ethernet 02:03:04:05:06:07;
filename "pxeboot";
next-server 192.168.1.1;
}
}
 
subnet 192.168.2.0 netmask 255.255.255.0 {
option routers 192.168.2.1;
range 192.168.2.32 192.168.2.127;
host static-client {
hardware ethernet 22:33:44:55:66:77;
fixed-address 192.168.2.200;
}
host pxe-client {
hardware ethernet 02:03:04:05:06:07;
filename "pxeboot";
next-server 192.168.2.1;
}
}

PF规则

代码: 全选

#macros
ext_if="rl0"
int_if="re0"
italkbb="re1"
emule_port="{7777,12345}"
italkbb_ports="{5060,6802,16384:16482}"
wrouter="192.168.1.34"
italkbbphone="192.168.2.32"
table <bruteforce> persist
#option
set block-policy drop
set loginterface $ext_if 
set skip on lo
#scrub
scrub in 
#nat/rdr
nat on $ext_if from !($ext_if) to any -> ($ext_if)
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
rdr on $int_if proto tcp from any to any port 21 -> 127.0.0.1 \
port 8021
rdr pass on egress proto {tcp,udp} to port $emule_port -> $wrouter
rdr pass on egress proto udp to port 4665 -> $wrouter
rdr pass on egress proto {tcp,udp} to port $italkbb_ports -> $italkbbphone
nat on egress from $wrouter to any -> (egress)
nat on egress from $italkbbphone to any -> (egress)
 
#filter 
block in
block quick from $italkbb:network to $int_if:network
block quick from $int_if:network to $italkbb:network
pass out quick keep state
block quick from <bruteforce>
anchor "ftp-proxy/*"
antispoof quick for {lo $int_if $italkbb}
pass quick proto {tcp,udp} from any to any port ssh \
keep state (max-src-conn 100,max-src-conn-rate 5/3, \
overload <bruteforce> flush global) 
pass in quick on $ext_if proto {tcp,udp} to ($ext_if) port $emule_port
pass in quick on $ext_if proto udp to ($ext_if) port 4665
pass in quick on $ext_if proto {tcp,udp} to ($ext_if) port $italkbb_ports
pass in quick on $int_if 
pass in quick on $italkbb
说明
UDP和TCP端口7777是emule使用的,emule还要打开UDP的4665端口;
UDP和TCP端口12345是BT使用的;
italkBB的使用端口是{5060,6802,16384:16482}
这里禁止italkbb网段与内网通信。

@gobsd.org

junfengfan
铜 Cu
帖子: 236
注册时间: 2010-02-03 18:37

帖子 junfengfan » 2010-02-03 18:53

wrouter="192.168.1.34"
wrouter 主要起什么作用?我的用openBSD做的路由迅雷、emule下载时,速度时快时慢;并且速度也不高;请问如何精简你的上面的论文 ~~~~~~~~~~~~~~

头像
leo
帖子: 2465
注册时间: 2010-01-21 3:27

帖子 leo » 2010-02-04 7:22

junfengfan 写了:wrouter="192.168.1.34"
wrouter 主要起什么作用?我的用openBSD做的路由迅雷、emule下载时,速度时快时慢;并且速度也不高;请问如何精简你的上面的论文 ~~~~~~~~~~~~~~
您好,junfengfan:
这个是一年前的配置了,当时的wrouter是内网的无线路由器,目的是路由内网主机到外网,当然还需要在wrouter上具体设置,给内网主机做端口映射,但是因为每个读者的路由器型号及内网情况不同,所以我这里将介绍略去了.........

我觉得您描述的不太清晰,我不清楚您是用OpenBSD做网关兼p2p下载,还是只用其做网关和防火墙,使用内部的主机进行下载?前者仅需在OpenBSD主机上打开相应的端口,后者可直接参看上面的文章,您只要将italkbb部分的相应规则去除,将上面文章里的emule和BT端口换成你自己的emule和迅雷端口就可以了,抱歉我没有使用过迅雷下载,不太清楚迅雷需要开放那些端口,但迅雷的工作原理应该和BT或emule差不多,不过可能还会需要额外打开一些UDP端口,这个请您自己上网查阅一下,不知道我的描述清楚吗?如果感觉不太清楚,请您直接描述一下你的网络情况,或直接画张图,这样也便于交流讨论。

此外我用PF做防火墙时下载速度未受影响,我这里的全速是700K,使用此规则时普通的浏览器单线程下载速度不受影响,emule源充足时很轻易可达到630K,我认为已经是p2p的极限了,因为还有上传占用的带宽也会影响下载速度,另外也没有您说的速度时快时慢的现象。

junfengfan
铜 Cu
帖子: 236
注册时间: 2010-02-03 18:37

帖子 junfengfan » 2010-02-04 12:58

只用openbsd做网关和防火墙,使用内部的主机进行下载;真的谢谢你们了~~~~~~~
我这儿从没有达到过700kB,也没有达到过630k,请问你们哪里?我是河南省邓州市网通的

头像
leo
帖子: 2465
注册时间: 2010-01-21 3:27

帖子 leo » 2010-02-05 3:15

junfengfan 写了:只用openbsd做网关和防火墙,使用内部的主机进行下载;真的谢谢你们了~~~~~~~
我这儿从没有达到过700kB,也没有达到过630k,请问你们哪里?我是河南省邓州市网通的
您好,我在芝加哥附近,AT&T的网络。
以下我修改的代码,您需要根据自己的情况修改,另外你可以尝试一下自己写规则,然后查看一下哪些包被阻挡了,然后放行合理的包,注意:代码“年久失修”,不保证可正常运行,因为我目前已经使用硬件防火墙,有段时间没有琢磨pf了,请自行检查并根据自己的情况修正,我仅是剔除了原规则里面的italkbb部分,但是没有剔除ftp代理部分,如果你不需要请自行剔除,不知道应用后的效果如何,请您及时反馈,如果有任何改进也欢迎您提供一篇OpenBSD防火墙下内网emule或迅雷的教程。

网络设置
rl0连接外网,hostname.rl0文件内容

代码: 全选

dhcp NONE NONE NONE
re0连接内网,hostname.re0的内容

代码: 全选

inet 192.168.1.1 255.255.255.0 NONE

启用OpenBSD的路由功能,设置/etc/sysctl.conf文件,将下面这行的注释去掉

代码: 全选

net.inet.ip.forwarding=1 # 1=Permit forwarding (routing) of IPv4 packets
打开或创建rc.conf.local文件,添加如下两行:

代码: 全选

dhcpd_flags="re1"
ftpproxy_flags=""
第二行的目的是代理内网ftp客户端
dhcpd.conf

代码: 全选

# $OpenBSD: dhcpd.conf,v 1.2 2008/10/03 11:41:21 sthen Exp $
#
# DHCP server options.
# See dhcpd.conf(5) and dhcpd(8) for more information.
#
# Network: 192.168.1.0/255.255.255.0
# Domain name: my.domain
# Name servers: 192.168.1.3 and 192.168.1.5
# Default router: 192.168.1.1
# Addresses: 192.168.1.32 - 192.168.1.127
#
option domain-name "my.domain";
option domain-name-servers 68.94.156.1, 68.94.157.1;
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
range 192.168.1.34 192.168.1.127;
host static-client {
hardware ethernet 22:33:44:55:66:77;
fixed-address 192.168.1.200;
}
host pxe-client {
hardware ethernet 02:03:04:05:06:07;
filename "pxeboot";
next-server 192.168.1.1;
}
}

PF规则

代码: 全选

#macros
ext_if="rl0"
int_if="re0"
emule_port="{7777,12345}"
wrouter="192.168.1.34"
table <bruteforce> persist
#option
set block-policy drop
set loginterface $ext_if 
set skip on lo
#scrub
scrub in 
#nat/rdr
nat on $ext_if from !($ext_if) to any -> ($ext_if)
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
rdr on $int_if proto tcp from any to any port 21 -> 127.0.0.1 \
port 8021
rdr pass on egress proto {tcp,udp} to port $emule_port -> $wrouter
rdr pass on egress proto udp to port 4665 -> $wrouter
nat on egress from $wrouter to any -> (egress)
 
#filter 
block in
pass out quick keep state
block quick from <bruteforce>
anchor "ftp-proxy/*"
pass quick proto {tcp,udp} from any to any port ssh \
keep state (max-src-conn 100,max-src-conn-rate 5/3, \
overload <bruteforce> flush global) 
pass in quick on $ext_if proto {tcp,udp} to ($ext_if) port $emule_port
pass in quick on $ext_if proto udp to ($ext_if) port 4665
pass in quick on $int_if 
说明
UDP和TCP端口7777是emule使用的,emule还要打开UDP的4665端口;
UDP和TCP端口12345是BT使用的;
@gobsd.org

junfengfan
铜 Cu
帖子: 236
注册时间: 2010-02-03 18:37

Re: 在PF防火墙上打开emule, BT , italkbb端口

帖子 junfengfan » 2012-07-28 13:37

迅雷下载时快时慢,下面是我的pf.conf

# macros
ext_if="tun0"
int_if="{ xl0,xl1,xl2}"

emule_port="{11652:12522,80}"

tcp_services="{ 22, 113 }"
icmp_types="echoreq"

int_net="{ 172.168.0.0/24,172.16.1.0/24,172.16.2.0/24}"
# FTP Proxy rules
anchor "ftp-proxy/*"
pass in quick on $int_if inet proto tcp to any port ftp \
rdr-to 127.0.0.1 port 8021
# match rules
match out on egress inet from !(egress) to any nat-to (egress:0)

# filter rules

block in log
pass out quick

#antispoof quick for { lo $int_if }

pass in on egress inet proto tcp from any to (egress) \
port $tcp_services
pass in inet proto icmp all icmp-type $icmp_types

pass in quick on $ext_if proto {tcp,udp} to ($ext_if) port $emule_port
pass in quick on $ext_if proto {tcp,udp} to ($ext_if) port 17231
#pass in quick on $ext_if proto udp to ($ext_if) port 4665

#pass in quick on $ext_if proto udp to ($ext_if) port 1:65535

pass in quick on $int_if
~

f5b
锆 Zr
帖子: 643
注册时间: 2011-10-22 20:43

回复: Re: 在PF防火墙上打开emule, BT , italkbb端口

帖子 f5b » 2012-07-28 14:43

junfengfan 写了:迅雷下载时快时慢,下面是我的pf.conf

# macros

~
看起来跟pf.conf没有关系,我都没有专门开这些端口,内网用迅雷都可以非常快。

1、你的外部接入带宽本身有保证么?稳定性和速度如何?
2、做nat的OpenBSD机器网卡和其他硬件稳定么?性能如何?

junfengfan
铜 Cu
帖子: 236
注册时间: 2010-02-03 18:37

回复: 在PF防火墙上打开emule, BT , italkbb端口

帖子 junfengfan » 2012-07-28 16:18

网卡是3com 905B,上网的那块网卡是主板集成的realtek 8139,
关键是如果我直接用Adsl接到上网的那台主机用迅雷下载就很快,速度也稳定;而通过openbsd上网用迅雷下载就慢且不稳定(忽高忽低)。另外:我是用adsl接到openbsd那台机器,通过pppoe拔号上网的。

f5b
锆 Zr
帖子: 643
注册时间: 2011-10-22 20:43

回复: 在PF防火墙上打开emule, BT , italkbb端口

帖子 f5b » 2012-07-29 8:48

junfengfan 写了:网卡是3com 905B,上网的那块网卡是主板集成的realtek 8139,
关键是如果我直接用Adsl接到上网的那台主机用迅雷下载就很快,速度也稳定;而通过openbsd上网用迅雷下载就慢且不稳定(忽高忽低)。另外:我是用adsl接到openbsd那台机器,通过pppoe拔号上网的。
按先后顺序尝试以下方法
1. 在你的pf.conf 以下行之后仅添加pass试试,后面的都删除(或注释掉)
match out on egress inet from !(egress) to any nat-to (egress:0)

2. Adsl上行带宽小,pf须调整才能保证下载的稳定性,参看Prioritizing empty TCP ACKs with pf and ALTQ
http://www.benzedrine.cx/ackpri.html

3. OpenBSD里面的拨号参考我写的“OpenBSD的2G(移动GPRS EDGE)和3G(电信EVDO联通UMTS)上网”
http://www.gobsd.org/showthread.php?t=2987
adsl部分看13楼

4. 还不行的话?将OpenBSD 网关安装在,迅雷的那台硬件上,交叉测试。

f5b
锆 Zr
帖子: 643
注册时间: 2011-10-22 20:43

回复: 在PF防火墙上打开emule, BT , italkbb端口

帖子 f5b » 2012-07-29 9:04

原来 FAQ中也有写 ,在一下页面搜索adsl
PF: Packet Queueing and Prioritization

http://www.openbsd.org/faq/pf/queueing.html

junfengfan
铜 Cu
帖子: 236
注册时间: 2010-02-03 18:37

Re: 在PF防火墙上打开emule, BT , italkbb端口

帖子 junfengfan » 2012-07-29 16:11

1. 在你的pf.conf 以下行之后仅添加pass试试,后面的都删除(或注释掉)
还是一样速度铭忽高忽低;

2. Adsl上行带宽小,pf须调整才能保证下载的稳定性,参看Prioritizing empty TCP ACKs with pf and ALTQ
http://www.benzedrine.cx/ackpri.html
看不懂.
请问能不能在我的pf.conf 内加上什么指令可以解决这个问题

f5b
锆 Zr
帖子: 643
注册时间: 2011-10-22 20:43

回复: Re: 在PF防火墙上打开emule, BT , italkbb端口

帖子 f5b » 2012-07-29 18:51

junfengfan 写了:1. 在你的pf.conf 以下行之后仅添加pass试试,后面的都删除(或注释掉)
还是一样速度铭忽高忽低;

2. Adsl上行带宽小,pf须调整才能保证下载的稳定性,参看Prioritizing empty TCP ACKs with pf and ALTQ
http://www.benzedrine.cx/ackpri.html
看不懂.
请问能不能在我的pf.conf 内加上什么指令可以解决这个问题

在下满页面中搜索adsl,仔细看看,问题应该出在ack那里
PF: Packet Queueing and Prioritization

http://www.openbsd.org/faq/pf/queueing.html

junfengfan
铜 Cu
帖子: 236
注册时间: 2010-02-03 18:37

Re: 在PF防火墙上打开emule, BT , italkbb端口

帖子 junfengfan » 2012-07-29 20:45

批评自己;要静下心来,好好读读这一段

junfengfan
铜 Cu
帖子: 236
注册时间: 2010-02-03 18:37

回复: 在PF防火墙上打开emule, BT , italkbb端口

帖子 junfengfan » 2012-07-30 9:49

altq on fxp0 priq bandwidth 610Kb queue { std_out, ssh_im_out, dns_out, \
tcp_ack_out }

上面的 std_out, ssh_im_out, dns_out, tcp_ack_out,是怎么定义的?还是直接可以用?

junfengfan
铜 Cu
帖子: 236
注册时间: 2010-02-03 18:37

Re: 在PF防火墙上打开emule, BT , italkbb端口

帖子 junfengfan » 2012-08-01 19:17

我用pfsense2.0.1安装后做由,用迅雷下载速度稳定且快;就不存在在openbsd做路由的时候出现的问题;

回复

在线用户

正浏览此版面之用户: Google [Bot] 和 1 访客