基于FreeBSD+ipfw+ipnat下的网络延时服务器
原创
©著作权归作者所有:来自51CTO博客作者gnnjw的原创作品,请联系作者获取转载授权,否则将追究法律责任
本文在参照了前人的基础上,总结和实验而来
--------------------------------------------系统安装-----------------------------------
1.系统安装:
在安装时仅选择最小安装即可(mininal)
2.完成安装后:
#sysinstall
选择 ports 和src。 在SRC选项中仅选择 sys, libexec, sbin
-----------------------------------------------内核编译----------------------------------
# cd /usr/src/sys/i386/conf
# cp GENERIC netipfw //netipfw为随意命名的新内核名
编辑netipfw, 修改或增加如下项:
# ee netipfw
``````````````````````````````````````````````````````````````````````````````````````````````````````````
ident kernel-ipfw #修改此选项中的名字为你的新内核文件名
options IPFIREWALL #将 IPFW 作为内核的一部分来启用
options IPFIREWALL_VERBOSE #将启用记录通过 IPFW 的匹配了含 'log'
关键字规则的每一个包的功能
options IPFIREWALL_VERBOSE_LIMIT=10 #限制通过记录的包的个数
options IPFIREWALL_DEFAULT_TO_ACCEPT
#默认地允许所有的包通过防火墙,这项一定要加上,如果内核选项中没有加入 IPFIREWALL_DEFAULT_TO_ACCEPT,或将您的防火墙设置配置为允许所有的进入包, 则所有发到本机或发出的包都会被阻止
options IPFIREWALL_FORWARD #启用转发功能
options DUMMYNET #加载dummynet模块,模拟丢包和延迟的
options IPFILTER #用于启用 “IPFILTER” 防火墙的支持
options IPFILTER_LOG #用于启用 IPF 的日志支持
options IPDIVERT #这一选项启用 NAT 功能
```````````````````````````````````````````````````````````````````````````````````````````````````````````````````
#/ usr/sbin/config netipfw //运行config命令来产生内核源代码。
# cd ../compile/netipfw
# make cleandepend
# make
# make install
# reboot
-------------------------------------调整配置文件------------------------------------
1.增加文件ipf.rules ipnat.rules
# ee /etc/ipf.rules
Pass in all
Pass out all
# ee /ipnat.rules
map rl1 192.168.5.128/24 -> 192.168.37.1 portmap tcp/udp auto
map rl1 192.168.5.128/24 -> 192.168.37.1
//其中rl1为外部网卡
# ee /etc/rc.conf
`````````````````````````````````````````````````````````````````````````````````````````````````
firewall_enable="YES"
ipfilter_enable="YES"
ipf -Fa -f /etc/ipf.rules
ipnat_enable="YES"
ipnat_program="/sbin/ipnat -FC -f"
ipnat_rules="/etc/ipnat.rules"
ipmon_enable="YES"
ipmon_flags="-Ds"
firewall_type="OPEN"
Gateway_enable="yes"
-------------------------------------------延时和掉包设置--------------------------
延时:
# ipfw add 60000 pipe 1 from any to any out
# ipfw add 60001 pipe 2 from any to any out
# ipfw pipe 1 config delay 250ms
# ipfw pipe 2 config delay 250ms
// 规则号要少于默认的63000,不然不会生效
掉包:
# ipfw add 60002 prob 0.05 deny ip from any to any in
----------------------------------------------------------------------------------------------------------------
备注:在重启服务器后,以前所加的规则无效,重新添加的话
先 # ipfw pipe 1 config delay 250ms
后 # ipfw add 60000 pipe 1 from any to any out
如果不这样,会与服务器断开连接
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
网络延时分析
网络丢包分析
mtr traceroute