全部博文(2005)
分类: LINUX
2008-02-19 20:01:01
主机环境是UBUNTU 7.4
VMware Workstation 6.0.0 build-45731vmware使用NAT是通过vmnet8来是实现,找到这个文件打开/etc/vmware/vmnet8/nat/nat.conf
# be up to 100% longer
timeout = 60
[incomingtcp]
# Use these with care - anyone can enter into your VM through these...
# FTP (both active and passive FTP is always enabled)
# ftp localhost 8887
#8887 = 192.168.0.128:21
4660 = 192.168.0.128:4660
# WEB (make sure that if you are using named webhosting, names point to
# your host, not to guest... And if you are forwarding port other
# than 80 make sure that your server copes with mismatched port
# number in Host: header)
# lynx
#8888 = 192.168.0.128:80
# SSH
# ssh -p 8889 root@localhost
#8889 = 192.168.0.128:22
[incomingudp]
# UDP port forwarding example
#6000 = 192.168.0.128:6001
[incomingtcp]
TCP映射
[incomingudp]
UDP映射
举例
8889 = 192.168.0.128:22
保存退出,重启服务
/usr/lib/vmware/net-services.sh restart
Linux Samba客户端工具的使用
Samba客户端工具
1.Smbtree
作用:显示局域网中所有共享主机和目录列表
用法:smbtree [-b] [-D] [-U username%password]
[-b]以广播的形式来检测
[-D]显示Domain
[-U]以username登陆,%后边是密码
2.nmblookup
作用:显示一台主机的netbios主机名
用法:nmblookup win2000 这样就可以显示出ip信息
3.smbclient
作用:显示/登陆局域网中的文件夹
用法:smbclient -L host
smbclinet //host/share
host主机名称或ip皆可,share为共享文件名
#smbclient -L 10.0.0.2将列出这台机器共享的文件
#smbclient //10.0.0.2/share -U redhat%redhat可以直接登录到windows的共享文件夹,假设要访问的机器的用户名和密码都为redhat
当出现smb:\> 就表示正常,用help查看一下命令,与ftp类似。
用以下方法也可以访问,更直接些
#smbmount //10.0.0.2/share /mnt -o username=redhat%redhat
4.smbtar
作用:远程备份网上网络邻居的文件(可能需做修改)
用法:smbtar -s server -u user -p password -x sharename -t output
server是服务器的名字,user为用户名,password为密码,sharename为要备份的共享文件名,output为备份文件的名字,最好加个tar后缀,一下看出是备份的文件
例:#smbtar -s 10.0.0.2 -u redhat -p redhat -x share -t share.tar
#ls -l share.tar看一下
如果看到share.tar的大小为零
用 #which smbtar 看一下tar的位置,在/usr/bin/smbtar
然后 #file /usr/bin/smbtar 可以看出smbtar是一个文本
再编辑#vi /usr/bin/smbtar 移动到最后一行,看一下倒数第二行有没有一个
‘-N’的参数,这个参数就意味着匿名登陆,假设有这个选项,那么无论在前边访问加上-u redhat -p redhat,结果仍是以匿名登陆。将‘-N’这个选项去掉就OK!
1和2实验没有成功,我局域网有台加入了域的机器,我的机器没有,我可以ping到它但是用1,2中的命令没有看到成功的结果。3和4都经过验证,没有问题。
Linux tar命令进行磁带备份 |
使用tar进行磁带备份的命令汇总
假设你已经设置并安装好了磁带机,本人用的是HP SuitStore 500,外置,SCSI接口。
1. 查看磁带中的目录
tar tvf /dev/st0
2. 查看磁带内容并输出到一个文件中
tar tvf /dev/st0 > stlist
3. 备份档案
tar cvf /dev/st0 /etc
tar cvf /dev/st0 /etc/hosts /boot /etc/smb.conf
4. 按指定的文件内容或目录释放出磁带中的相应文件
tar -T stlist -xvf /dev/st0
tar xvfz /dev/st0 /etc/
6. 附加个别文件到磁带后面
tar -r /etc/hosts /etc/passwd -vf /dev/st0
7. 从现有磁带中删除一个或几个文件
tar --delete etc/hosts -vf /dev/st0
8. 附加一个现有的tar文档到磁带后面
tar -A pamd.tar -vf /dev/st0
Ubuntu Linux系统下安装VMware的方法介绍
到 down好vmware最新版本。
解压到本用户里面(或者是拥有写权限的目录):su root
在解压后的目录里面:
chmod +x vmware-install.pl
./vmware-install.pl
会问你一系列的问题,如bin的位置,C编译的位置等等,一般按照默认的回答就好了。在C编译的时候,会查找C编译的文件,如果没有,会一直提醒你输入绝对路径,这个时候多半是你没有装好GCC,C++,CCCC什么的一大堆。
在ubuntu下面:apt-get install build-essential
apt-get install gcc-3.4
安装好了后,安装程序自动寻找(其实也就是默认路径)也可以:
export CC=gcc-3.4
在我的机器上,安装程序询问我是否替代,我回答yes在编译之前,还会寻找linux-headers,
apt-get install linux-headers-`uname -r`
意思是说按照当前运行的linux-image来安装linux-headers
我的是linux-headers-K7这些最好在安装之前就要弄好,否则在安装的时候会面对一堆的字符颠狂。接下来就是机器自己编译了,我的机器上速度还不错,不到一分钟就搞定了.
终端root权限下输入vmware就可以运行了配置:新建一个虚拟机的时候,我使用的是典型配置,然后在具体配置里面更改,内存刚开始的时候是 0M,我把它改成了我的总物理内存的一半。remove原来的hdd,add了一个新的,使用物理硬盘,然后在开机的时候要求输入序列号,一切搞好,很惊 奇的发现竟然可以引导我原来的系统,也就是说我在虚拟机里面看到了另外一台和自己的机器一模一样的机器,可以引到ubuntu,可以引导 windowXP。省去了不少安装的时间。可是速度很慢。也许是我配置不当,这个东西真的是不好搞啊!!!先加根内存看。
顺便说下wine
用easywine来配置真的很简单。初始化,安装IE6,再装其他的程序,基本上运气好的话,不会碰到什么问题的,如果有乱码,只要把gtk里面 的 gbk用cp换成utf8的就好了。另外用本用户运行哦,否则会丢失root的桌面(可能是个bug),5.10里面没有出现过这样的问题。但是它模拟一 些多媒体程序还是不行,估计是我没有配置好。呵呵,努力再努力啊!换了一根512M的条子,重新开动,进入winxp,终于看到了完整版本的 qq2006,嘿嘿,速度还不错,在可以接受的范围。进入之后,提示装各种各样的驱动。
Ubuntu Dapper中安装多媒体支持
很多人在ubuntu-cn论坛抱怨dapper中没有w32codecs,导致totem,mplayer,rhythmbox等不能播放rmvb,wmv等视频,不能播放mp3等音频。觉得ubuntu真难用。 其实windows如果不安装解码器很多东西也不能播放,比如rmvb,avi等。 好废话不用多说,我们来讲讲怎么在ubuntu dapper中安装各种解码器。 首先安装gstreamer的解码器,gstreamer是gnome主推的多媒体平台。在dapper中进行了重大升级,目前是0.10。但是默认没有安装完全,导致mp3等不能播放。所以,我们要安装gstreamer0.10. sudo apt-get install gstreamer0.10-* 这条语句会把所有的gstreamer0.10的包安装上。 然后我们安装xine的解码器libxine-extracodecs,xine是另外一个 多媒体平台,功能非常强大。我们还把系统自带的totem卸载,改为使用xine后端的totem,这样才可以播放rmvb等视频。顺便安装上 mplayer这个强大的播放器,我一般用它来播放dvd。注意如果是 amd的CPU,需要安装mplayer-k7,当然,大家也可以直接安装mplayer,这个比较通用。 sudo apt-get install libxine-extracodecs totem-xine mplayer-686 ffmpeg lame faad sox mjpegtools libxine-main1 接下来我们安装著名的视频解码器w32codecs.这个在dapper的源里面没有包含,需要我们自己下载。 wget -c ftp://ftp.nerim.net/debian-marillat/pool/main/w/w32codecs/w32codecs_20050412-0.0_i386.deb 下载完成之后,开始安装。 sudo dpkg -i w32codecs_20050412-0.0_i386.deb 好了,现在大家的电脑应该都能够播放绝大部分多媒体文件了。 |
Linux+Iptables构建防火墙实
用Linux+iptables做防火墙具有很高的灵活性和稳定性(老兄我的防火墙自从做了之后还一直没有重启过),但安装和设定起来比较麻烦,而且容易出错,本文旨在用为公司做防火墙的实例,让大家对Linux+iptables做防火墙的安装和配置有一个大致的了解,希望能起到抛砖引玉的作用。
系统环境与网络规化
先了解一下公司的环境,公司利用2M
ADSL专线上网,电信分配公用IP为218.4.62.12/29,网关为218.4.62.13
,公司有电脑五十多台,使用DHCP,IP是192.168.2.XXX,DHCP Server建在iptables
Server上;另公司有一电脑培训中心,使用指定固定IP,IP为192.168.20.XXX,为了更加快速的浏览网页,我们架了一台Squid
Server,所有电脑通过Squid Server浏览网页,公司还另有一台WEB Server+Mail Server+Ftp Server。其IP为218.4.62.18。以上电脑和服务器要求全架在防火墙内。我们规化如下:
Iptables Server上有三块网卡,eth0上加有二个IP,218.4.62.14和218.4.62.18。
其中218.4.62.14为共享上网,218.4.62.18为WEB Server专用,Eth1的IP为192..168.2.9;为了使培训中心PC与公司PC之间互不访问,所以直接从Iptables Server接到Switch-B,eth2接至Switch-A,连接培训中心PC和Squid Server, Web Server。
网络规化好了后,就开始装服务器了,Iptables Server 用的系统为Redhat Linux V7.3。在装服务器时要注意选上防火墙的安装包。
IPTABLES基础
Iptables语法:
Iptables [-t TABLE] ACTION [PATTERN] [-j TARGET]
TABLE:
有filter,nat,mangle;若无指定,预设为filter table.
ACTION(对Chains执行的动作):
ACTION 说明
-L Chain 显示Chain中的所有规则
-A Chain 对Chain新增一条规则
-D Chain 删除Chain中的一条规则
-I Chain 在Chain中插入一条规则
-R Chain 替换Chain中的某一条规则
-P Chain 对Chain设定的预设的Policy
-F Chain 清除Chain中的所有规则
-N Chain 自订一个Chain
-X 清除所有的自订Chain
CHAINS:
Iptables 有五条默认的Chains(规则链),如下表:
Chains 发生的时机
PREROUTING 数据包进入本机后,进入Route Table前
INPUT 数据包通过Route Table后,目地为本机
OUTPUT 由本机发出,进入Route Table前
FORWARD 通过Route Table后,目地不是本机时
POSTROUTING 通过Route Table后,送到网卡前
PATTERN(设定条件部份):
参数 内容 说明
-p Protocol 通讯协议,如tcp,udp,icmp,all等。。。
-s Address 指定的Source Address为Address
-d Address 指定的Destination Address为Address
-I Interface 指定数据包进入的网卡
-o Interface 指定数据包输出的网卡
-m Match 指定高级选项,如mac,state,multiport等。。。
TARGET(常用的动作):
TARGET 说明
ACCEPT 让这个数据包通过
DROP 丢弃数据包
RETURN 不作对比直接返回
QUEUE 传给User-Space的应用软件处理这个数据包
SNAT nat专用:转译来源地址
DNAT nat专用:转译目地地址
MASQUERADE nat专用:转译来源地址成为NIC的MAC
REDIRECT nat专用:转送到本机的某个PORT
用/etc/rc.d/init.d/iptables
save可在/etc/sysconfig/中产生一iptables文件,大家可以看到,它有三个*号开始的行,其每一个以*号开始的行对应一个
table,以COMMIT表示此table 的结束。可将要定的规则加入到对应的table中,如下:
[root@jiaoyuang init.d]# ./iptables saveSaving current rules to
/etc/sysconfig/iptables: [ OK ][root@jiaoyuang init.d]# cat
/etc/sysconfig/iptables
# Generated by iptables-save v1.2.4 on Sat Sep 28 16:51:22 2002
*mangle
:PREROUTING ACCEPT [61522:8074850]
:OUTPUT ACCEPT [1079:79301]
COMMIT
# Completed on Sat Sep 28 16:51:22 2002
# Generated by iptables-save v1.2.4 on Sat Sep 28 16:51:22 2002
*nat
:PREROUTING ACCEPT [31850:5091703]
:POSTROUTING ACCEPT [20:1240]
:OUTPUT ACCEPT [12:776]
COMMIT
# Completed on Sat Sep 28 16:51:22 2002
# Generated by iptables-save v1.2.4 on Sat Sep 28 16:51:22 2002
*filter
:INPUT ACCEPT [61444:8070296]
:FORWARD ACCEPT [34:1984]
:OUTPUT ACCEPT [1079:79301]
COMMIT
安装并启动IPTABLES
在安装RedHat Linux
V7.3后,iptables就已经被安装了,但默认启动的是ipchains。你在安装时所定义的一些规则也在
/etc/sysconfig/ipchains中被定义。我们需要将其停止,才能启动iptables(注意:虽然不停止ipchains也可以启动
iptables,但这时iptables并没有真正的起作用。Ipchains和iptables是两个防火墙,你只能选择一个)。
service ipchains stop (停止ipchains)
chkconfig --level 2345 ipchains off (使ipchains系统启动时不自动启动)
chkconfig --level 2345 iptables on (使iptables 在系统启动时自动启动)
vi /etc/rc.d/rc.local (编辑rc.local,将下面四行加到最后)
ifconfig eth0 add 218.4.62.18 netmask 255.255.255.248
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
echo “1” > /proc/sys/net/ipv4/ip_forward
(第一行是在eth0上再加一个IP:218.4.62.18,因在安装时只能设一个IP:218.4.62.14。Ip_conntrack_ftp 和ip_nat_ftp为iptables运得必须的两个模块;最后一行为使开启服务器IP转发功能。)
(如果你将iptables的模块加到了内核中,以上第二,三行可省略。)
配置DHCP Server,以便让公司PC自动获得IP和网关,网关为192.168.2.9。具体的方法请参见相关资料,本文不作详述。
reboot
重新启动服务器后,Iptables 就已经开始运行了。
配置IPTABLES
对iptables 有了一个基本的了解后,我们就可以来配置我们的服务器了。首先要发布我们的WEB Server,将以下二行加入/etc/sysconfig/iptables中的nat table内:
-A PREROUTING -d 218.4.62.18 -j DNAT --to-destination 192.168.20.254
-A POSTROUTING -s 192.168.2.254 -j SNAT --to-source 218.4.62.18
第一行为将至服务器的所有目地地址为218.4.62.18的包都NAT为192.168.2.254,第二行为将至服务器的所有源地址为192.168.2.254的包为NAT到218.4.62.18。请把WEB Server 的网关设为192.168.20.9。
下面我们将所有从服务器共享出去的包都SNAT为218.4.62.14,就可完成共享上网的功能了:
-A POSTROUTING -s 192.168.0.0/16 -j SNAT --to-source 218.4.62.14
将下面的规则加入到/etc/sysconfig/iptables中的filter tables内:
-A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 6/min --limit-burst 2 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j REJECT --reject-with icmp-port-unreachable
以上两行是为了防止Dos攻击做的一个简单的处理,大家对于各种攻击可做出相应的处理。
-A INPUT –i eth0 –m state –state ESTABLISHED,RELATED –j ACCEPT-A INPUT –i eth0 –j DROP
以上两行是做了一个INPUT状态防火墙的处理,其主要作用为防止外部的连接和攻击,因其接受ESTABLISHED,RELATED状态(一个包分为NEW,ESTABLISHED,RELATED,INVALID四种状态)的包,故又不妨碍从本机出去的连接。
由于并不是所有的电脑都可以上网,所以还要对共享上网的电脑做一个限制:
IP限制:
-A FORWARD –s 192.168.2.0/29 –p udp –m multiport –port 53 –j ACCEPT
-A FORWARD –s 192.168.2.0/29 –p tcp –m multiport –port 3128,110,25 –j ACCEPT
-A FORWARD –s 192.168.20.253 –j ACCEPT
充许192.168.2.0~192.168.2.7和192.168.20.253(squid server)的电脑可上网和发邮件。3128是squid server的proxy port。我们用它去共享上网,110为pop3,25为smtp。Udp的53为DNS所要的port。不过由于使用的是DHCP,可能每次得到的IP 都不一样,所以我们就要用下面一种MAC限制的方法了。
MAC 限制:
-A FORWARD –m mac -–mac XX:XX:XX:XX:XX:XX –p udp –m multiport –port 53 –j ACCEPT
-A FORWARD –m mac -–mac XX:XX:XX:XX:XX:XX –p tcp –m multiport –port 3128,110,25 –j ACCEPT
如上就可通过网卡来控制上网了,但现在电脑高手多多,改一个MAC的地址好像也不是什么难事了,怎么办呢?那就用我们的第三种方法吧。
MAC+IP限制:
更改/etc/dhcpd.conf,如果MAC与IP绑定:
subnet 192.168.2.0
netmask 255.255.255.0{
range 192.168.2.30 192.168.2.230;
option broadcast-address 192.168.2.255;
option routers 192.168.2.9;
option domain-name-servers 212.132.16.163;
host meeting-room {
hardware ethernet 00:50:ba:c8:4b:3a;
fixed-address 192.168.2.35;
}}
我们的Iptables改为:0
-A FORWARD –s 192.168.2.35 –m mac -–mac XX:XX:XX:XX:XX:XX –p udp –m multiport –port 53 –j ACCEPT
-A FORWARD –s 192.168.2.35 –m mac -–mac XX:XX:XX:XX:XX:XX –p tcp –m multiport –port 3128,110,25 –j ACCEPT
这样做之后,高手也无能为力了,不过公司有位MM是兄台的GF,上班的时候想和她聊聊天,培养培养感情;怎么办呢?我们知道QQ用的是udp的4000端口,如占用则4002,4003。。。那么就如下了:
-A FORWARD –s 192.168.2.35 –m mac -–mac XX:XX:XX:XX:XX:XX –p udp –m multiport –port 53,4000,4001,4002,4003,4004,4005 –j ACCEPT
-A FORWARD –s 192.168.2.35 –m mac -–mac XX:XX:XX:XX:XX:XX –p tcp –m multiport –port 3128,110,25 –j ACCEPT
最后加一句:
-A FORWARD –s 192.168.0.0/16 –j DROP
由于前面应该开的都开了,所以最后全部禁止。呵呵,到此大功告成。
总结
世界上没有绝对安全的防火墙,安全永远是相对的。配置iptables的思路
是先ACCEPT再DROP。共享上网的办法还有一个就是用iptables
server的Owner,但由于linux没有像win2k那样的验证模式,在验证owner时有些困难。本人正在测试,但目前还没有比较好的解决办
法,哪位兄弟搞定的话请Mail小弟,小弟将不胜感激。值得注意的是在做NAT时,客户端的网关一定要是iptagles的IP。
Linux系统下Ramdisk的制作过程
一、在一个已建好的文件系统上进行修改。
设已建立好的文件系统压缩文件为ramdisk.gz
1.解压
#cd ramdisk.gz所在目录
#gunzip ramdisk.gz
在解压后,得到文件系统镜象文件ramdisk, 覆盖了原来的压缩文件
2.镜象文件挂载
镜象文件必须经过挂载后才能看到文件系统中的各个目录和详细内容
#mkdir /mnt/loop
/* /mnt/loop 是文件系统要挂载到的目录
#mount –o loop ramdisk /mnt/loop
在挂载目录/mnt/loop下对文件系统进行操作
#cd /mnt/loop
#do_whatever_you_want_to_do /*根据需要增加、删减或是修改文件系统的内容
4.卸装文件系统
跳到/mnt/loop目录外,否则无法卸装,提示busy
#cd ramdisk所在目录
#umount /mnt/loop
5.压缩文件系统
#gzip –v9 ramdisk
/*生成ramdisk.gz压缩文件
二、自己建立根文件系统
1.建立loop设备的临时挂载点
#mkdir /mnt/loop
2.建立一个大小为15M的临时文件
#dd if=/dev/zero of=/tmp/loop_tmp bs=1k count=15360
注意可根据自己的需要建立大小合适的文件系统,更改count大小即可。
此处以dd命令建立一个了一个15360KB文件系统映象,存于/tmp/loop/tmp,并以.dev/zero对它进行初始化。用这种方式对文件系统进行初始化,稍后当我们使用gzip命令压缩整个映象时,将让文件系统中未使用的部分获得最大压缩比。
3.将设备文件与临时文件联系起来
#losetup /dev/loop0 /tmp/loop_tmp
把设备文件/dev/loop0与临时镜象文件/tmp/loop_tmp联系起来,/dev/loop0是个块设备
如果出现“ioctl:LOOP_SET_FD:设备或资源忙”,说明/dev/loop0设备还和一文件联系,可用losetup /dev/loop0查看地,并可用-d 删除。
4.将/dev/loop0格式化为ext2文件系统
#mke2fs –m 0 /dev/loop0
-m 0指出不必在文件系统上为“超级用户”保留任何区块。
Linux内核识别两种可以直接考贝的到ramdisk的文件系统,它们是minix和ext2,minix是linux早期版本所用的文件系统,从minix操作系统而来,ext2性能更好。
5.把虚拟盘挂在节点/mnt/loop上
#mount –t ext2 /dev/loop0 /mnt/loop
6.用cp –af命令将所需要文件拷贝到虚拟盘上
cp –help查看cp 用法。cp –arf … -r表示拷贝目录
/bin, /dev, /etc, /lib, proc, /sbin, /usr都是不可或缺的目录,建议保留/tmp,/var,不过可以为空。而为多用户提供可扩展环境的所有目录(例如/home、/mnt、/opt、/root)都应该省略。
用cp复制文件时,建议把已建立好的文件系统中的内容全部拷贝过来,这样比较简单,不需要再去编译安装busybox等。当然自己也可以那样去做。
7.卸载文件系统,得到的/tmp/loop_tmp就是文件系统映象。
#cd /mnt/loop以外的目录 (否则会提示无法卸载,设备busy)
#umount /mnt/loop
8.压缩文件系统映象
#gzip –v9 /tmp/loop_tmp >/tftpboot/ramdisk.gz
在/tftpboot下生成了ramdisk.gz,这样一个内存文件镜象生成了。
或只是#gzip –v9 /tmp/loop_tmp,则就是在/tmp下生成loop_tmp.gz文件,一样的。
在上述的自己建立文件系统中,第3条用
losetup命令把块设备文件/dev/loop0与临时文件/tmp/loop_tmp联系起来了,我的理解是/tmp/loop_tmp必须是块设
备文件,所以用/dev/loop0与之相关联,然后对/dev/loop0的操作和对其虚拟盘的操作,就间接作用在文件系统映象
/tmp/loop_tmp上。
三、自己建立根文件系统(与二中不同)
1.建立loop设备的临时挂载点
#mkdir /mnt/loop
2.建立文件系统映象
#dd if=/dev/zero of=/tmp/loop_tmp bs=1k count=15360
以上2条同二中是一样
3.mke2fs –F –v –m 0 /tmp/loop_tmp
此处-F选项将可迫使mkefs2在文件上运行。否则mke2fs会抱怨/tmp/loop_tmp不是个块设备(在上面说了,我的理解是
/tmp/loop_tmp文件映象必须是块设备文件,前面的做法是用块设备文件/dev/loop0与之相关联)。-v
选项指出mke2fs应该以verbose模式执行,-m
0指出不必在文件系统上为“超级用户”保留任何区块,因为在嵌入式系统中通常是单用户系统,为“超级用户”保留区块没有意义。
4.挂载映象文件
#munt –o loop /tmp/loop_tmp /mnt/loop
挂载后,在/mnt/loop下就可以对文件系统的内容进行操作。
5.cp操作,同二中的第6条
6.卸载映象文件
#umount /mnt/loop
7.压缩映象文件
#gzip –v9 /tmp/loop_tmp
第三中的做法与第二中的做法不同,在第二中,把块设备文件/dev/loop0与映象文件/tmp/loop_tmp相关联,然后对/dev/loop0及虚拟盘进行操作,就作用在/ltmp/loop_tmp上。
而第三中,是直接对映象文件/tmp/loop_tmp进行操作,用mke2fs –F …将其当作块设备文件进行操作。