Posts Tagged FreeBSD
用FreeBSD建立安全网关
由于本人曾使用过FreeBSD,感觉这个系统还可以—曾用其作服务器,连续运行几个月都没有出过问题,所以打算用FreeBSD来做安全网关。
在网上查阅了一些资料,花了半天的时间,将基于FreeBSD的网关搞定:
现分享如下:
一网络环境:
通过1M ADSL上网,动态IP,不向外提供服务。内部有几十台电脑,要共享上网。FreeBSD5.3,两块网卡,8139(rl0),对外,同ADSL猫相连,530tx(vr0),对内,同交换机相连。
二系统安装:
至于系统的安装网上有很多资料,在此不细说。
详情请看http://www.xyinfo.ha.cn/netschool/freebsd/index.htm
三编译内核:
加上ipfilter支持,去掉系统默认的 ipfirewall。
#cd /usr/src/sys/i386/conf
#cp GENERIC DAFEI
#ee DAFEI
修改这一行,红色的部分要和该文件名相同。
ident DAFEI
在末尾加入一下几行:
#禁用ipfirewall。
#options IPFIREWALL
#options IPFIREWALL_VERBOSE
#options IPFIREWALL_VERBOSE_LIMIT=90
#options IPFIREWALL_DEFAULT_TO_ACCEPT
#options IPDIVERT
#支持ipfilter
options BRIDGE
options IPFILTER
options ACCEPT_FILTER_DATA
options ACCEPT_FILTER_HTTP
由于ipfirewall和ipfilter都运行在内核,二者不能同时共存,所以必须注释掉ipfirewall,其他内核优化选项这里就不细说了。
编译内核:
#cd /usr/src
#make kernel KERNCONF=DAFEI
编译成功后要重新启动计算机。
四 配置拨号上网:
修改ppp.conf文件
#cd /etc/ppp
#cp ppp.conf cpp.conf.bak
#ee ppp.conf
修改如下:
default:
set log Phase Chat LCP IPCP CCP tun command
ident user-ppp VERSION (built COMPILATIONDATE)
set redial 15 28800
set reconnect 15 28800
set dial "ABORT BUSY ABORT NOsCARRIER TIMEOUT 5
"" AT OK-AT-OK ATE1Q0 OK dATDTT TIMEOUT 40 CONNECT"
adsl:
set device PPPoE:rl0
set mru 1492
set mtu 1492
set speed sync
enable lqr
set lqrperiod 5
set cd 5
set dial
set login
set timeout 0
set authname YOURUSERNAME used to login
set authkey YOURPASSWORD used to login
set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
add default HISADDR
enable dns
红色的部分是需要修改的
五 定制防火墙规则:
#cd /etc
#touch ipf.rules
#ee ipf.rules
加入如下内容:
block in log quick all with short
block in log quick all with ipopts
block in log quick all with frag
block in log quick all with opt lsrr
block in log quick all with opt ssrr
pass out on vr0 all
pass in on vr0 all
pass out quick on lo0 all
pass in quick on lo0 all
block out on rl0 all
pass out quick on rl0 proto tcp from any to any flags S keep state keep frags
pass out quick on rl0 proto udp from any to any keep state
pass out quick on rl0 proto icmp all keep state
block in quick on rl0 all
由于空间的限制,删去了一些规则。
六 配置地址转换(实现NAT功能):
#cd /etc
#touch ipnat.rules
#ee ipnat.rules
加入如下内容:
map rl0 192.168.0.0/16 -> 0/32 proxy port ftp ftp/tcp
map rl0 192.168.0.0/24 -> 0/32 portmap tcp/udp 10000:30000
map rl0 192.168.0.0/24 -> 0/32
七 配置rc.conf文件:
#cd /etc
#ee rc.conf
修改如下:
gateway_enable="YES"
hostname="ginifab-gatway.ginifab.com"
ifconfig_vr0="inet 192.168.1.1 netmask 255.255.255.0"
kern_securelevel="1"
kern_securelevel_enable="YES"
inetd_enable="YES"
linux_enable="NO"
sendmail_enable="NO"
keyrate="fast"
nisdomainname="NO"
sshd_enable="YES"
usbd_enable="NO"
ppp_enable="YES"
ppp_mode="ddial"
ppp_mode="background"
ppp_profile="adsl"
firewall_enable="NO"
firewall_logging_enable="NO"
ipfilter_enable="YES"
ipnat_enable="YES"
网关为192.168.1.1
八: #reboot now
一切OK。
注意:
编译内核时可根据自己机子的配置优化。本人的这个网关开机后总共使用不到30M内存。
定制防火墙规则可参考网上资料,定制的更加安全,高效。
在实现该网关的过程中,参考了很多网上的资料,本人仅把自己的配置过程写出来。
用FreeBSD的ports安装apache+php+mysql
基于FreeBSD下KDE桌面的汉化
1.安装kde-i18n-zh_CN:
#cd /usr/ports/chinese/kde3-i18n-zh_CN
#make install clean
2.安装字体
1)#cd /usr/ports/x11-fonts/ttmkfdir
#make install clean
2)#mkdir -p /usr/X11R6/lib/X11/fonts/TrueType
#cp Simsun.ttf /usr/X11R6/lib/X11/fonts/TrueType
#cp tahoma.ttf /usr/X11R6/lib/X11/fonts/TrueType
3) #cd /usr/X11R6/lib/X11/fonts/TrueType
#ttmkfdir >fonts.dir
#cp fonts.dir fonts.scale
3.修改/etc/X11/XF86Config
注释掉
Load "freetype"
Load "record"
Load "type1"
添加 Load "xtt
注:如果把考虑粗体斜体等的需求,使用 ttmkfdir + Load "freetype" 会有更好的品
质。
4.修改/usr/X11R6/etc/fonts/fonts.conf
1)在 <dir>/usr/X11R6/lib/X11/fonts/Type1</dir>
<dir>/usr/X11R6/lib/X11/fonts/TrueType</dir>
<dir>/usr/X11R6/lib/X11/fonts/Type1</dir>
<dir>/usr/X11R6/lib/X11/fonts/OTF</dir>
<dir>~/.fonts</dir>
前添加<dir>/usr/X11R6/lib/X11/fonts/TrueType</dir>
2)在/usr/X11R6/etc/fonts/fonts.conf里添加:(为了小字不使用 antialias)
<match target="pattern">
<test qual="any" name="size" compare="l">
<int>12</int>
</test>
<edit name="antialias" mode="assign">
<bool>false</bool>
</edit>
</match>
注:如果要用 Xft2,安装完字体后最好做 fc-cache -f -v 比较安全。
5.(注意先备份,即:cp /usr/X11R6/share/themes/Default/gtk/gtkrc.zh_CN
/usr/X11R6/share/themes/Default/gtk/gtkrc.zh_CN.bak)
1)替换/usr/X11R6/share/gnome/gtkrc.zh_CN为下面的内容:
style "gtk-default-zh-cn" {
fontset = "-*-*-medium-r-normal–12-*-*-*-*-*-iso10646-1,*-r-*"
}
class "GtkWidget" style "gtk-default-zh-cn"
2)同样再替换掉/usr/X11R6/share/themes/Default/gtk/gtkrc.zh_CN
3)cp /usr/X11R6/share/themes/Default/gtk/gtkrc.zh_CN ~/.gtkrc.zh_CN
6.1)在kde控制中心(KDE Control Center)的"区域与辅助功能
(Regional & Accessibility)"的国家/地区和语言(Country/Region & Language)里面
设置国家(Country)为"中国"和Languages为"简体
中文(Simplifiled Chinese)"
2)在kde的"控制中心"–"外观与主题"的"字体"里面全设置
字体为Simsun,12。并去掉"使用字体平滑"。
3) 在Gnome的字体设置里面设置字体为Tahoma,12
7.安装fcitx输入法:
1).#cd /usr/ports/chinese/fcitx
2)#make install clean
3).修改~/.profile,添加:
LANG=zh_CN.EUC
LC_ALL=zh_CN.EUC
export LANG LC_ALL
4).我用csh所以:
#setenv LC_ALL zh_CN.EUC
#setenv LANG zh_CN.EUC
如果用的是bash则相应的为
#LANG=zh_CN.EUC
#LC_ALL=zh_CN.EUC
#export LANG LC_ALL
5).在~/.cshrc中加入:
setenv LC_ALL zh_CN.EUC
setenv LANG zh_CN.EUC
(PS: 如果使用Gnome桌面,改动此配置后再次登录将显示中文界面)
6).修改~/.xinitrc及~/.xsession.均添加:
export XMODIFIERS=@im=fcitx
fcitx&
至文件的开头处。
7).#qtconfig
然后选择–>Interface—>XIM Input Style 选Over the Spot(上面的复选框也选
上)–>File–Save
8.xmms的问题:
1)cp -r /usr/X11R6/share/locale/zh_CN.GB2312
/usr/X11R6/share/locale/zh_CN.EUC
2)在xmms里面设置使用字体为
-isas-fangsongti-medium-r-normal-*-*-160-*-*-c-*-gb2312.1980-0,
-misc-fixed-medium-r-semicondensed-*-*-130-*-*-c-*-koi8-r
或者:-sony-*-*-*-*-*-16-*-*-*-*-*-iso8859-0,-*-*-*-*-*-*-16-*-*-*-*-*-gbk-1
9.终端的中文显示:cce解决方案:
在http://www.sourceforge.net/projects/cce2k
FreeBSD/NetBSD/OpenBSD 都可以运行(console下), 不过还有一些bug.
支持多种编码: GB2312/GBK/Shift-JIS/JIS/KSC/UTF-8
可以支持许多OS: Linux, *BSD, Solaris, QNX, LynxOS, Hurd, Minix, etc
加入了 SDL/GGI 的支持, 可以在X Windows下运行, 支持点阵字体和TrueType字体.
输入法也做了一些升级, 把许多Big5的加上了, 有智能拼音和注音输入.
#tar -zxvf cce-0.50-11242003-dist.tgz,
#configure && make && make install
cce的这个版本支持framebuffer了,可以上1024×768,当然要你显示器支持
10.Windows分区及光盘文件的中文显示:
1)升级ports:如何升级见:这里
2)安装gbfs:
#cd /usr/ports/chinese/gbfs
#make install clean
3)编辑内核,注释掉MSDOSFS、CD9660、CD9660_ROOT即:
#options MSDOSFS
#options CD9660
#options CD9660_ROOT
注解来自于 statue大哥.
1)chinese/gbfs 的 ntfs 似乎有问题,不建议玩家级用户使用
2)cce 因为有安全问题而被移出 ports tree,我尝试过使用 cce2k,不幸的是他并并
支持 FreeBSD,所以作罢。
http://sourceforge.net/projects/cce2k/
3)zhcon 使用与传统 kon2 不同的调用 VGA mode 方式,在 4-STABLE 下没问题,但是
在 5-CURRENT 就是不 work,还有另外一个地方是是 /dev/vga 要自己弄出?,简单的
方法像是 ln -s /dev/ttyv0 /dev/vga,或是改 src 都可以。
4)另外,如果发现示的效果很差,把 print/freetype2 和 x11-fonts/fontconfig 重
装看看,4.8-STABLE 后的版本对中文才有比较好的支持。
5)而中文 XIM Server 可以看看 miniChinput,应该会有许多好玩的输入法
xmms 的问题是因为在 XFree86 4.3.0 之后的 locale.dir 和 locale.alias 漏掉了,
如果按照标准的 X programming 的话,目前大部分的软件都不能用才对(针对
zh_CN.EUC),幸运的是,大部分的软件都不走标准写法。
于是另外一种解法可以试试:
源码
:—————————————————————————
—–locale.dir
- zh_CN/XLC_LOCALE zh_CN.eucCN
+ zh_CN/XLC_LOCALE zh_CN.EUC
- zh_CN/XLC_LOCALE: zh_CN.eucCN
+ zh_CN/XLC_LOCALE: zh_CN.EUC
locale.alias
- zh_CN.EUC zh_CN.eucCN
+ # zh_CN.EUC zh_CN.eucCN
- zh_CN.EUC: zh_CN.eucCN
+ # zh_CN.EUC: zh_CN.eucCN
—————————————————————————
—–
11.xpdf的汉化:来自于xiaoniao9312兄
1)#cd /usr/ports/chinese/xpdf
#make install clean
2)修改/etc/X11R6/xpdfrc这样的一段,
源码
:—————————————————————————
—–
cidToUnicode Adobe-GB1 /usr/X11R6/share/xpdf/chinese-simplified
/Adobe-GB1.cidToUnicode
unicodeMap ISO-2022-CN /usr/X11R6/share/xpdf/chinese-simplified/
ISO-2022-CN.unicodeMap
unicodeMap EUC-CN /usr/X11R6/share/xpdf/chinese-simplified/EUC-CN.unicodeMap
unicodeMap GBK /usr/X11R6/share/xpdf/chinese-simplified/GBK.
unicodeMap
cMapDir Adobe-GB1 /usr/local/share/ghostscript/Resource/CMap
toUnicodeDir /usr/local/share/ghostscript/Resource/CMap
displayCIDFontX Adobe-GB1 "-misc-simsun-medium-r-normal–12
-*-*-*-*-*-gb2312.1980-0"
ISO-2022-CN—————————————————————–
—————
为:-misc-simsun-medium-r-normal–12-*-*-*-*-*-gb2312.1980-0
FreeBSD 6.0总算Release了!
盼望了好久,终于在今天下午更新到了FreeBSD6.0的RELEASE版本,总算有了6.x的release了,这是不是意味着5.x行将就木了呢?
发稿时系统正在编译新的内核,估计会在17:00左右系统会重启n次。
FreeBSD 5.3 下Raid的制作(GEOM)
FreeBSD 5.3下面用geom来创建raid是很方便的
除开可以用geom这个程序来创建,还提供了个单独的程序,例如
gconcat, gmirror, graid3, gstripe. 另外还有个尚未完成的gvinum(即将代替vinum)
concat其实并不算是raid,因为没有性能上的提升,也没有数据保护作用。只是简单的将各磁盘串起来利用磁盘空间。
下面例子将对ipsd1,ipsd2这两个磁盘系统进行concat
首先重置这两个磁盘
bsdlabel -r -w ipsd1 auto
bsdlabel -r -w ipsd2 auto
使用gconcat连接两个磁盘,并且命名为data
gconcat label -v data /dev/ipsd1 /dev/ipsd2
使用gconcat以后,将会在/dev/concat下面多出一个设备名叫data,对应早先命令的data名字
ls /dev/concat
格式化,如果你需要关闭Soft-Update,只需要去掉-U
newfs -U /dev/concat/data
创建mount point
mkdir /data
挂上新建的concat
mount /dev/concat/data /data
修改fstab让系统重启后自动mount
vi /etc/fstab
内容
/dev/concat/data /data ufs rw 2 2
增加开机自动装载geom_concat.ko这个模块
vi /boot/loader.conf
内容
geom_concat_load="YES"
很简单的concat已经做好了
stripe raid (RAID0)
创建一个stripe raid (RAID0)
RAID0具有最高性能,也是最差安全性的
使用gmirror连接两个磁盘,并且命名为data
gstripe label -v -s 4096 data /dev/da1 /dev/da2
-s 4096: 是分开在每个磁盘的块大小为4k
创建mount point
mkdir /data
挂上新建的Raid
mount /dev/concat/data /data
增加开机自动装载geom_mirror.ko这个模块
vi /boot/loader.conf
内容
geom_stripe_load="YES"
kern.geom.stripe.fast
设置是否使用fast模式.gstripe有两个模式,一个是fast,一个是economic.
fast模式消耗更多的内存,但是速度更快.当内存不足的时候会自动切换到economic模式.
kern.geom.stripe.maxmem
设置fast模式下面最大使用内存数,该选项是只读.只能在启动时候才能设置.因此如果需要更改该选项,需放在 /boot/loeader.conf
kern.geom.stripe.fast_failed
记录了fast模式失败次数,如果次数很大,你就要调大kern.geom.stripe.maxmem的数值
创建一个mirror raid (也就是俗称的RAID1)
RAID1具有最高的安全性,具有快速的读操作,不提高磁盘的写性能
下面例子将对da0 da1这两个磁盘系统进行mirror
首先重置这两个磁盘
bsdlabel -r -w da0 auto
bsdlabel -r -w da1 auto
使用gmirror连接两个磁盘,并且命名为data
gmirror label -v -b split -s 2048 data da0 da1
稍微解释一下上面的命令,详细的查询man gmirror
-b split: 告诉gmiiror创建的mirror,在读取的时候将读操作分开到各磁盘上面,这样能够提高读取性能
-s 2048: 告诉mirror只分开读取大于2k 的文件
除开spilit,还有其他平衡形式.split比较适合大众
round-robin : 在各磁盘轮流读取数据
prefer: 更高优先权的读取数据
load: 更低负荷的读取数据
使用gmirror以后,将会在/dev/concat下面多出一个设备名叫data,对应早先命令的data名字
ls /dev/concat
格式化,如果你需要关闭Soft-Update,只需要去掉-U
newfs -U /dev/concat/data
创建mount point
mkdir /data
挂上新建的Raid
mount /dev/concat/data /data
修改fstab让系统重启后自动mount
vi /etc/fstab
内容
/dev/concat/data /data ufs rw 2 2
增加开机自动装载geom_mirror.ko这个模块
vi /boot/loader.conf
内容
geom_mirror_load="YES"
mirror raid已经做好了
创建一个当前磁盘的mirror:
gmirror label -v -b round-robin data da0
gmirror insert data da1
除开上面,geom还提供了raid3的制作
graid3 label -v -r data da0 da1 da2
上面贴子说的gconcat,gmirror,gstripe都可以用geom一个来搞定
例如
geom stripe label -v -s 4096 data /dev/da0 /dev/da1 /dev/da2
等于
gstripe label -v -s 4096 data /dev/da0 /dev/da1 /dev/da2


最近评论