LINUX: 网络相关命令解析和技巧整理
时间:2006-06-11 来源:mophis
LINUX 下有很多与网络相关的程序, 也有很多与网络相关的命令.
本文收集了一些常见命令的使用和常见问题的解答.
Q: How to use ifconfig
A: ifconfig的命令行参数:
up 激活指定的接口
down 关闭指定接口。该参数可以有效地阻止通过指定接口的IP信息
流,如果想永久地关闭一个接口,我们还需要从核心路由表中
将该接口的路由信息全部删除
netmask mask 为接口设置IP网络掩码。掩码可以是有前缀0x的32位十六进制
数,也可以是用点分开的4个十进制数。如果不打算将网络分成
子网,可以不管这一选项;如果要使用子网,那么请记住,网络
中每一个系统必须有相同子网掩码。
pointpoint 打开指定接口的点对点模式。它告诉核心该接口是对另一台机
器的直接连接。当包含了一个地址时,这个地址被分配给列表另
一端的机器。如果没有给出地址,就打开这个指定接口的
POINTPOINT选项。前面加一个负号表示关闭pointpoint选项。
broadcast address 当使用了一个地址时,设置这个接口的广播地址。如果
没有给出地址,就打开这个指定接口的IFF_BROADCAST选项。
前面加上一个负号表示关闭这个选项。
metric number 将接口度量值设置为整数number。度量值表示在这个路径上发
送一个分组的成本。目前内核中还没有使用路由成本,但将来会。
mtu bytes 将接口在一次传输中可以处理的最大字节数设置为整数bytes。
目前核心网络代码不处理IP分段,因此一定要把MTU(最大数据
传输单元) 值设置得足够大
arp 打开或关闭指定接口上使用的ARP协议。前面加上一个负号用于
关闭该选项。
allmuti 打开指定接口的无区别模式。打开这个模式让接口把网络上的
所有信息流都送到核心中,而不仅仅是把你的机器的信息发送给
核心。前面加上一个负号表示关闭该选项
hw 为指定接口设置硬件地址。硬件类型名和次硬件地址对等的
ASCII字符必须跟在这个关键字后面。目前支持以太网
(ether)、AMPR、AX.25和PPP
traliers 打开以太网帧上的跟踪器。目前还未在LINUX网络中实现
通常不需要使用所有的这些配置。Ifconfig可以仅由接口名、网络掩码和分配
IP地址来设置所需的一切。当ifconfig疏漏了或者有一个复杂的网络时,只要
重新设置大多数参数。
Q: How to use netstat
A: 使用netstat命令可以监控TCP/IP网络配置和工作状况。它可以显示内核路由表、
活动的网络状态以及每个网络接口的有用的统计数字。欲得详情请阅man page。
-a 显示所有Internet连接的有关信息,包括那些正在监听的信息
-i 显示所有网络设备的统计数字
-c 不断显示网络的更新状态。这个参数使用netstat每秒一次的输出网络状态
列表,直到该程序被中断
-n 以数字/原始形式显示远程地址、本地地址和端口信息,而不是解析主机名
和服务器
-o 显示计数器的终止时间和每个网络连接的回退(back off)情况
-r 显示内核路由表
-t 只显示TCP socket信息,包括正在监听的信息
-u 只显示UDP socket信息
-v 显示netstat版本信息
-w 显示原始(raw)socket信息
-x 显示UNIX域socket信息
Q: how to config "iptables" ?
A: 修改防火墙配置信息:
/etc/sysconfig/iptables
/etc/sysconfig/redhat-config-securitylevel
如果你在 /etc/sysconfig/iptables 文件中配置了一个防火墙或防火墙规则,
在你选择了「无防火墙」并点击了「确定」来保存改变之后,这个文件就会被删除。
激活 iptables 服务
防火墙规则只有在 iptables 服务运行的时候才能被激活。要手工启动服务,使用以下命令:
/sbin/service iptables restart
要确保它在系统引导时启动,使用以下命令:
/sbin/chkconfig --level 345 iptables on
ipchains 服务不能和 iptables 服务同时运行。要确定 ipchains 服务被禁用,执行以下命令:
/sbin/chkconfig --level 345 ipchains off
ipchains的启动: gnome-lokkit
Q: How to modify ip address ?
A:最好使用ipconfig命令。把这个命令写到/etc/rc.d/rc.local文件中,每次开机都会自己运行。
这种方法在任意一种Linux发行版中都可以使用。
永久更改ip ?
ifconfig eth0 新ip
编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改ip
Q: How to implement router ?
A:至少需要安装两个网卡,将/proc/sys/net/ipv4/ip_forward文件内容改成“1”,然后用route
命令配置路由表就可以了。
Q: 如何得到网卡的MAC地址 ?
A: arp -a | awk '{print $4}'
ifconfig eth0 | head -1 | awk '{print $5}'
Q: 如何修改网卡MAC地址 ?
A:
1. 首先必须关闭网卡设备,否则会报告系统忙,无法更改。
/sbin/ifconfig eth0 down
2. 修改 MAC 地址,这一步较 Windows 中的修改要简单。
/sbin/ifconfig eth0 hw ether 00:AA:BB:CC: DD:EE
3. 重新启用网卡: /sbin/ifconfig eht0 up
Q: 如何得到网卡的IP地址 ?
A: ifconfig eth0 |awk '/inet addr/ {split($2,x,":");print x[2]}'
Q: linux下清空arp表的命令
A: #arp -d -a(适用于bsd)
for HOST in `arp | sed '/Address/d' | awk '{ print $1}'` ; do arp -d $HOST; done
Q: 使用ntp协议从服务器同步时间
A: ntpdate NTP-SERVER
Q: host命令的用法
A: host能够用来查询域名,它还能得到更多的信息
host -t mx example.com可以查询出example.com的MX记录,以及处理mail的host的名字
host -l example.com会返回所有注册在example.com下的域名
host -a example.com则会显示这个主机的所有域名信息.
Q: How to make linux support NAT ?
A: echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -I POSTROUTING -j MASQUERADE
Q: rh8.0下rcp的用法设置
A:
只对root用户生效
1. 在双方root用户根目录下建立.rhosts文件,并将双方的hostname加进去.在此之前应在双方的
/etc/hosts文件中加入对方的IP和hostname
2. 把rsh服务启动起来,redhat默认是不启动的。
方法:用执行ntsysv命令,在rsh选项前用空格键选中,确定退出。 然后执行:
service xinetd restart即可。
3. 到/etc/pam.d/目录下,把rsh文件中的auth required /lib/security/pam_securetty.so
一行用“#”注释掉即可。
Q: ethX设备上,使LINUX支持网络广播功能 ? (默认不支持)
A: ip route add 255.255.255.255 dev ethX
Q: How to use NFS ?
A: 1. How to config NFS server
Linux:
. edit /etc/exports
. add:
" /mnt/export hostname(ro,sync,no_root_squash) "
. service nfs start/stop/restart/reload/status
Solaris:
edit /etc/dfs/dfstab (list of share commands to be executed at boot time)
./etc/rc3.d/S15.nfsserver start(stop)
2. How to mount NFS system on another host
There are three methods you can use.
I. mount hostname:/misc/export /misc/local
mount -o tcp hostname:/misc/export /misc/local (use TCP)
II. 在 /etc/fstab 文件中添加一行。这一行中必须声明NFS服务器的主机名,要导出的目录,
以及要挂载 NFS 共享的本地机器目录。你必须是根用户才能修改 /etc/fstab 文件。
语法:
server:/usr/local/pub /pub nfs rsize=8192,wsize=8192,timeo=14,intr
or server:/usr/local/pub /pub nfs rsize=8192,wsize=8192,timeo=14,intr,tcp
挂载点 /pub 在客户机器上必须存在。在客户系统的 /etc/fstab 文件中把这一行添加完毕后,
在shell 提示下键入命令 mount /pub,以及将会从服务器中挂载的挂载点 /pub。
III. 使用 autofs 来挂载 NFS 文件系统
autofs使用automount守护进程来管理你的挂载点,它只在文件系统被访问时才动态地挂载它们。
autofs 咨询主映射配置文件 /etc/auto.master 来决定要定义哪些挂载点。然后它使用适用于
各个挂载点的参数来启动automount 进程。主映射配置中的每一行都定义一个挂载点,一个分
开的映射文件定义在该挂载点下要挂载的文件系统。
例如: /etc/auto.misc 文件可能会定义 /misc 目录中的挂载点;这种关系在 /etc/auto.master
文件中会被定义。
auto.master 文件中的每个项目都有三个字段。第一个字段是挂载点。第二个字段是映射文件的
位置,第三个字段可选。第三个字段可以包括超时数值之类的信息。
例如:要在你的机器上的 /misc/myproject 挂载点上挂载远程机器 penguin.example.net 上的
/project52 目录:
. 在 auto.master 文件中添加以下行:
/misc /etc/auto.misc --timeout 60
. 在 /etc/auto.misc 文件中添加以下行:
myproject -rw,soft,intr,rsize=8192,wsize=8192 penguin.example.net:/proj52
myproject -rw,soft,intr,rsize=8192,wsize=8192,tcp penguin.example.net:/proj52
autofs 是一种服务:
/sbin/service autofs restart
/sbin/service autofs status
/sbin/service autofs reload
Q: 查出22端口现在运行什么程序 ?
A: lsof -i :22
Q: 如何修改Linux机器所在的工作组 ?
A: vi /etc/samba/smb.conf,修改这行 "workgroup =...",将组名写在后面。
Q: 一块网卡如何绑定两个ip ?
A: #cd /etc/sysconfig/network-scripts
#cp ifcfg-eth0 ifcfg-eth0:1
#vi ifcfg-eth0:1
修改IP和设备名
Q: 一个ip如何绑定两块网卡 ?
A: 假设192.168.0.88是ip,192.168.0.1是网关:
/sbin/modprobe bonding miimon=100 mode=1
/sbin/ifdown eth0
/sbin/ifdown eth1
/sbin/ifconfig bond0 192.168.0.88
/sbin/ifenslave bond0 eth0 eth1
/sbin/route add default gw 192.168.0.1
Q: 查看本机的IP,gateway,dns ?
A: IP:
以root用户登录,执行ifconfig。其中eth0是第一块网卡,lo是默认的设备
Gateway:
以root用户登录,执行netstat -rn,以0.0.0.0开头的一行的Gateway即为默认网关
也可以查看/etc/sysconfig/network文件,里面有指定的地址!
DNS:
more /etc/resolv.conf,内容指定如下:
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx
Q: 让apache的默认字符集变为中文 ?
A:
如果是1.*,vi httpd.conf
找到 AddDefaultCharset ISO8859-1 一行,改为AddDefaultCharset GB2312
如果是2.*的话,需要改动一个地方,vi httpd.conf
AddDefaultCharset ISO-8859-1 改为 AddDefaultCharset off
Q: 怎样改变telnet的端口 ?
A:
1. 将/etc/services文件中telnet对应的端口号21改为你想要的值;
2. /etc/init.d/xinetd restart重启守护进程
Q: linux下如何监视所有通过本机网卡的数据 ?
A: tcpdump iptraf
Q: 如何构建安全的远程登录?
A: 使用SSH来实现安全的远程登录,因为SSH实现了数据传输的加密。
1) 从ftp.cs.htu.fi/pub/ssh获取ssh-1.26.tar.gz文件;
2) 用tar zxvf ssh-1.26.tar.gz解开这个包;
3) 到解开的目录/usr/local/src/ssh-1.26目录下执行./configure;
4) 执行make和make install来完成编译和安装。
5) 你就可以使用ssh来与安装了SSH的服务器建立安全的远程连接。
Q: 如何使用Linux架设WEB服务器?
A: Apache服务器是在Linux架设WEB服务器的首选。你可以在安装Linux时
就选择安装它。若在安装时没有安装Apache的话,你可以从光盘或者到
apache网站上找到文件:apache-1.3.12.i386.rpm,然后执行以下命令
完成安装:
1)rpm –ivh apache-1.3.12.i386.rpm
2)修改/etc/httpd/conf目录下的配置文件httpd.conf、access.conf等;
3)将主页文件放到/home/httpd/html目录下;
4)执行“/etc/rc.d/init.d/httpd start”启动Apache服务器
如果需要关闭的话,可以执行/etc/rc.d/init.d/httpd stop命令。
Q: 如何使用Linux架设FTP服务器?
在Linux中,最常用的FTP服务软件当数wu-ftpd,如果在安装linux时没安装,
你可从光盘或者从网站rpmfind.net/linux/RPM/WbyName.html获取它的RPM包:
wu-ftpd-2.6.0-9.i386.rpm。然后执行以下命令
完成安装:
rpm -ivh wu-ftpd-2.6.0-9.i386.rpm
编辑 "/etc/inetd.conf" 文件,指向新的ftpd守护进程,如下所示:
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l a
到此为止,你的Linux就可以接受FTP服务了
Q: 如何使用Linux架设E-MAIL服务器 ?
A: Linux中,最常用的E-MAIL服务器是Sendmail,你可以在安装Linux时将其选中。
1) 在DNS服务器上为E-Mail服务器做一条MX记录;
2) 编辑/etc/inetd.conf文件,将关于pop和smtp的行的注释符去掉;
3) 执行kill –HUP inetd,使修改生效;
这样E-mail服务器的用户就可通过Outlook等客户端程序进行收发邮件了。
Q: 如何使用Linux架设News服务器 ?
在安装Linux时,选择INN软件包,并允许开机时启动innd。在完成系统的安装时,
大部分配置工作已经完成,无需编译源码。
1)配置/etc/news/inn.conf:
domain: foo.com
organization: foo company news site
server: localhost
根据实际情况填写;
2)配置/etc/news/nnrp.access nnrp.access是用来完成News Readers服务的守候
进程nnrpd的配置文件,用于控制对站点的访问,修改此文件无须启动INND。
3)添加新闻组:
可以手工编辑/var/lib/news/active文件添加新闻组,也可以使用ctlinnd命令来增加。
若是手工方式修改新闻组,须执行以下命令使其生效:
ctlinnd reload active "modify active"
Q: 如何让Linux成为文件服务器 ?
A: 在Linux中,你可以用Samba来做文件服务器,你可以在安装Linux时选中Samba就可以完成安装。
1) 编辑/etc/smb.conf,修改配置:
netbios name=linux
workgroup=SambaServer
server string=Samba Server
hosts allow=192.168.9. 127.
securoty=share
interfaces=192.168.9.1/24
name resolve order=host dns bcast
wins support=no
2)重新启动SMB服务器:/etc/rc.d/init.d/smb restart
3)编辑客户机的hosts文件,加入对Samba Server的解析;
4)最后你就可以在网上邻居上看到它了。
Q: 如何使用Linux架设代理服务器 ?
A: 1) 到http://squid.nlanr.net/Squid/ 下载Squid代理服务器软件squid-2.2.STABLE3-src.tar.gz;
2) 执行tar xzxf squid-2.2.STABLE3-src.tar.gz
3) 执行./configure
4) 执行make,make install安装到/usr/local/squid目录下;
5) 编辑/usr/local/squid/squid.conf文件,加入:
acl allowed_hosts src 192.168.9.0/255.255.255.0
注:假设你的内网IP地址是192.168.9.0;
6) 执行/usr/local/squid/bin/squid –z进行初始化
7) 执行/usr/local/squid/bin/squid开启服务
8) 在客户端设置代理服务器IP和端口3128,就可以访问Internet了。
Q: 如何使用Linux架设透明网关 ?
A: 确认Linux内核已经支持ipchain,然后编写一个脚本ipchains.rule,内容为:
注:假设透明网关服务器的外网地址是:1.2.3.4,已经与Internet相连;内网地址是192.168.9.1,
连在内网上。
#!/bin/sh
/sbin/ipchains -F forward
/sbin/ipchains -F input
/sbin/ipchains -F output
/sbin/ipchains -P forward DENY
/sbin/ipchains -P input ACCEPT
/sbin/ipchains -P output ACCEPT
external_interface=1.2.3.4
/sbin/ipchains -A input -j ACCEPT -i lo
/sbin/ipchains -A output -j ACCEPT -i lo
/sbin/ipchains -A input -j DENY -i eth1 -s 192.168.9.0/24
/sbin/ipchains -A input -j DENY -i eth1 -d 192.168.9.0/24
/sbin/ipchains -A output -j DENY -i eth1 -s 192.168.9.0/24
/sbin/ipchains -A output -j DENY -i eth1 -d 192.168.9.0/24
/sbin/ipchains -A input -j DENY -i eth1 -s $external_interface/32
/sbin/ipchains -A input -j DENY -i eth1 -s $external_interface/32
/sbin/ipchains -A output -j DENY -i eth1 -d $external_interface/32
/sbin/ipchains -A forward -j ACCEPT -i eth0 -s 192.168.9.0/24
-d 192.168.9.0/24
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_quake
/sbin/modprobe ip_masq_irc
/sbin/modprobe ip_masq_user
/sbin/modprobe ip_masq_raudio
/sbin/ipchains -A forward -j MASQ -i eth1 -s 192.168.9.0/24
运行这个脚本后,192.168.9.0网络中的所有机器只需将网关设置为192.168.9.1,就可以连到
Internet上了。