linux 网络配置和命令

LINUX 网络配置mysql

一些配置文件:linux

/etc/services:服务名称和端口配置文件web


/etc/hosts  :最先主机名对应ip的配置文件
sql

很过人一提到更改hostname首先就想到修改/etc/hosts文件,认为hostname的配置文件就是/etc/hosts。其实不是的。
hosts文件的做用至关如DNS,提供IP地址到hostname的对应。早期的互联网计算机少,单机hosts文件里足够存放全部联网计算机。不过随着互联网的发展,这就远远不够了。因而就出现了分布式的DNS系统。由DNS服务器来提供相似的IP地址到域名的对应。具体能够man hosts。
Linux统在向DNS服务器发出域名解析请求以前会查询/etc/hosts文件,若是里面有相应的记录,就会使用hosts里面的记录。/etc/hosts文件一般里面包含这一条记录:
127.0.0.1    localhost.localdomain   localhost
hosts文件格式是一行一条记录,分别是   IP地址 hostname aliases,三者用空白字符分隔,aliases可选。
127.0.0.1到localhost这一条建议不要修改,由于不少应用程序会用到这个,好比sendmail,修改以后这些程序可能就没法正常运行。
修改hostname后,若是想要在本机上用newhostname来访问,就必须在/etc/hosts文件里添加一条newhostname的记录。好比个人eth0的IP是192.168.1.61,我将hosts文件修改以下:
#hostname blog.infernor.net
shell

# cat /etc/hosts
127.0.0.1  localhost.localdomain localhost
192.168.1.61    blog.infernor.net      blog
这样,我就能够经过blog或者blog.infernor.net来访问本机。
从上面这些来看,/etc/hosts于设置hostname是没直接关系的,仅仅当你要在本机上用新的hostname来访问本身的时候才会用到/etc/hosts文件。二者没有必然的联系。
RHEL还有个问题。
我开始在
测试的时候,只修改/etc/hosts,里面添加 192.168.1.61 blog.infernor.net blog,而/etc/sysconfig/network维持原状,也就是里面的HOSTNAME=localhost.localdomain。我重启系统后竟然发现hostname给修改为了blog.infernor.net。这样看的话,倒真以为/etc/hosts是hostname的配置文件。后来终于在/etc/rc.d/rc.sysinit这个启动脚本里发现了问题的所在。vim

rc.sysinit文件里一开始就设置了hostname
if [ -f /etc/sysconfig/network ]; then
. /etc/sysconfig/network
fi
if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
HOSTNAME=localhost
fi
确实使用了/etc/sysconfig/network里的hostname值。不事后面还有一段关于设置hostname的

ipaddr=
if [ "$HOSTNAME" = "localhost" -o "$HOSTNAME" = "localhost.localdomain" ]
; then
ipaddr=$(ip addr show to 0/0 scope global | awk '/[[:space:]]inet
/ { print gensub("/.*","","g",$2) }')
if [ -n "$ipaddr" ]; then
eval $(ipcalc -h $ipaddr 2>/dev/null)
hostname ${HOSTNAME}
fi
fi
脚本判断hostname是否为localhost或者localhost.localdomain,若是是的话,将会使用接口IP地址对应的 hostname来从新设置系统的hostname。问题就出在这里,个人/etc/sysconfig/network默认的hostname是 localhost.localdomain,eth0的IP是192.168.1.61,而/etc/hosts里有192.168.1.61的记录。因而就用192.168.1.61这条记录来替换了hostname。

估计这也是不少人将/etc/hosts误觉得是hostname的配置文件的缘由。
hostname带选项查询
hostname的-s -f -i等等选项都用到了/etc/hosts或者DNS系统,跟咱们讨论的hostname有点远了,也容易产生误会。具体能够man hostname查看。
centos

总结一下修改主机名最安全的方法:安全

1. 中止与主机名相关的软件运行,好比MySQL服务器

2. 先使用 hostname newname 设置主机名。网络

3. 在/etc/hosts中修改或增长 ip newname 行,并检查原来127.0.0.1行localhost回环的设置。

4. 在/etc/sysconfig/network中修改HOSTNAME=newname。

5. 从新启动机器并确认是否修改为功。

============================================================================

/etc/sysconfig/network     

$ cat /etc/sysconfig/network

NETWORKING=yes    是否起用网络

HOSTNAME=cloudweb26.idc1.haodf.net     主机名

NETWORKING_IPV6=no

============================================================================
/etc/resolv.conf: 本机DNS解析

它是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。该文件是由域名解析 器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。它的格式很简单,每行以一个关键字开头,后接一个或多个由空格隔开的参数。

resolv.conf的关键字主要有四个,分别是:

nameserver    //定义DNS服务器的IP地址

domain       //定义本地域名

search        //定义域名的搜索列表

sortlist        //对返回的域名进行排序

下面咱们给出一个/etc/resolv.conf的示例:

nameserver 10.3.3.99

nameserver 10.1.0.88

search idc1.baidu.net baidu.net

options single-request-reopen


最主要是nameserver关键字,若是没指定nameserver就找不到DNS服务器,其它关键字是可选的。

nameserver 表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的,且只有当第一个nameserver没有反应时才查询下面的nameserver。

search   它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由search声明的域中分别查找。

domain   声明主机的域名。不少程序用到它,如邮件系统;当为没有域名的主机进行DNS查询时,也要用到。若是没有域名,主机名将被使用,删除全部在第一个点( .)前面的内容。

domain和search不能共存;若是同时存在,后面出现的将会被使用。

sortlist    容许将获得域名结果进行特定的排序。它的参数为网络/掩码对,容许任意的排列顺序。 

 “search domainname.com”表示当提供了一个不包括彻底域名的主机名时,在该主机名后添加domainname.com的后 缀;“nameserver”表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的。

其中domainname和search可同时存在,也可只有一个;nameserver可指定多个

========================================分隔线

/etc/nsswitch.conf :这个档案则是在『决定』先要使用 /etc/hosts 仍是 /etc/resolv.conf 的设定!


============================================================================

# cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0   网卡名

HWADDR=00:0c:29:dd:83:d4  网卡的MAC地址,些地址与网卡设备ROM中固定的地址保持一至

TYPE=Ethernet

ONBOOT=yes                 些设备是否随OS启动而激活

NM_CONTROLLED=yes          MMNetworkManger 的简写,建议设定为no

BOOTPROTO=static             引导协议:{none|static|dhcp|bootp}

                                      手动  静态  动态  动态

NETMASK=255.255.255.0

IPADDR=192.168.2.24

GATEWAY=192.168.2.1

USERCTL=no                 是否容许普通用户管理接口,no为不

PEERDNS=yes                是否容许DHCP服务器提供的DNS服务器地址覆盖本地/etc/resolv.conf 文件

 

IPV6INIT=no                是否使用IPV6

IPV6_AUTOCONF=yes          自动配置IPV6


 

下面命令能够取出ip

# ifconfig eth0 | grep "inet addr"|awk -F[:" "]+ '{print $4}'

192.168.2.100

============================================================================

经常使用网络方面命令:

1: host: 这个指令能够用来查出某个主机名的 IP 喔!举例来讲,咱们想要知道 www.baidu.com 的 IP 时,能够这样作:

   host -a www.baidu.com

   host -a -v www.baidu.com

          -a:显示全部DNS信息

          -v:显示指定详细信息

查的原理是根据本机/etc/resolv.conf里指定的DNS的ip 解析出来的


2:nslookup命令是经常使用域名查询工具,就是查DNS信息用的命令。

nslookup有两种工做模式,即“交互模式”和“非交互模式”。

在“交互模式”下,用户能够向域名服务器查询各种主机、域名的信息,或者输出域名中的主机列表。进入交互模式,直接输入nslookup命令,不加任何参数,则直接进入交互模式

而在“非交互模式”下,用户能够针对一个主机或域名仅仅获取特定的名称或所需信息。

# nslookup www.baidu.com

 此时nslookup会链接到默认的域名服务器(即/etc/resolv.conf的第一个dns地址)


3:dig

dig [options] FQDN [@server]

选项与参数:

   @server :若是不以 /etc/resolv.conf 的设定来做为 DNS 查询,可在此填入其余的 IP

   options:相关的参数不少,主要有 +trace, -t type 以及 -x 三者最经常使用

      +trace :就是从 . 开始追踪,

     -t type:查询的数据主要有 mx, ns, soa 等类型

      -x     :查询反解信息,很是重要的项目!


# dig linux.vbird.org

; <<>> DiG 9.7.0-P2-RedHat-9.7.0-5.P2.el6_0.1 <<>> linux.vbird.org

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37415

;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0


;; QUESTION SECTION:     <==提出的问题的部分

;linux.vbird.org.               IN      A


;; ANSWER SECTION:       <==主要的回答阶段

linux.vbird.org.        600     IN      A       140.116.44.180


;; AUTHORITY SECTION:    <==其余与这次回答有关的部分

vbird.org.              600     IN      NS      dns.vbird.org.

vbird.org.              600     IN      NS      dns2.vbird.org.


;; Query time: 9 msec

;; SERVER: 168.95.1.1#53(168.95.1.1)

;; WHEN: Thu Aug  4 14:12:26 2011

;; MSG SIZE  rcvd: 86


# dig linux.vbing.org @114.114.114.114

# dig linux.vbird.org

# dig -t soa linux.vbird.org

反解:

# dig -x 120.114.100.20


QUESTION(问题):显示所要查询的内容,由于咱们是查询 linux.vbird.org 的 IP,因此这里显示 A (Address);

ANSWER(回答):依据刚刚的 QUESTION 去查询所获得的结果,答案就是回答 IP 啊!

AUTHORITY(验证):由这里咱们能够知道 linux.vbird.org 是由哪部 DNS 服务器所提供的答案! 结果是 dns.vbird.org 及 dns2.vbird.org 这两部主机管理的。另外,那个 600 是啥咚咚?图 19.1-4 提到过的流程,就是容许查询者可以保留这笔记录多久的意思 (快取),在 linux.vbird.org 的设定中,预设能够保留 600 秒


4:ifconfig

# ifconfig {interface} {up|down}  <== 观察与启动接口

# ifconfig interface {options}    <== 设定与修改接口

选项与参数:

interface:网络卡接口代号,包括 eth0, eth1, ppp0 等等

options  :能够接的参数,包括以下:

    up, down :启动 (up) 或关闭 (down) 该网络接口(不涉及任何参数)

    mtu      :能够设定不一样的 MTU 数值,例如 mtu 1500 (单位为 byte)

    netmask  :就是子屏蔽网络;

    broadcast:就是广播地址啊!


# ifconfig -a   显示全部接口,包括激活接口

# ifconfig eth0 192.168.100.100 netmask 255.255.255.128


5:ifup, ifdown

实时的手动修改一些网络接口参数,能够利用 ifconfig 来达成,若是是要直接以配置文件, 亦便是在 /etc/sysconfig/network-scripts 里面的 ifcfg-ethx 等档案的设定参数来启动的话, 那就得要透过 ifdown 或 ifup 来达成了

# ifup eth0

# ifdown eth0


6:route

# route [-nee]

# route add [-net|-host] [网域或主机] netmask [mask] [gw|dev]

# route del [-net|-host] [网域或主机] netmask [mask] [gw|dev]

观察的参数:

   -n  :不要使用通信协议或主机名,直接使用 IP 或 port number;

   -ee :使用更详细的信息来显示

增长 (add) 与删除 (del) 路由的相关参数:

   -net    :表示后面接的路由为一个网域;

   -host   :表示后面接的为链接到单部主机的路由;

   netmask :与网域有关,能够设定 netmask 决定网域的大小;

   gw      :gateway 的简写,后续接的是 IP 的数值喔,与 dev 不一样;

   dev     :若是只是要指定由那一块网络卡联机出去,则使用这个设定,后面接 eth0 等

 

Destination, Genmask:这两个玩意儿就是分别是 network 与 netmask 啦!因此这两个咚咚就组合成为一个完整的网域啰!

 

Gateway:该网域是经过哪一个 gateway 链接出去的?若是显示 0.0.0.0 表示该路由是直接由本机传送,亦便可以透过局域网络的 MAC 直接传讯;若是有显示 IP 的话,表示该路由须要通过路由器 (通信闸) 的帮忙才可以传送出去。

 

Flags:总共有多个旗标,表明的意义以下:

U (route is up):该路由是启动的;

H (target is a host):目标是一部主机 (IP) 而非网域;

G (use gateway):须要透过外部的主机 (gateway) 来转递封包;

R (reinstate route for dynamic routing):使用动态路由时,恢复路由信息的旗标;

D (dynamically installed by daemon or redirect):已经由服务或转 port 功能设定为动态路由

M (modified from routing daemon or redirect):路由已经被修改了;

! (reject route):这个路由将不会被接受(用来抵挡不安全的网域!) 

iface:这个路由传递封包的接口。

-----------------------------------------------------------------------

7:traceroute [选项与参数] IP

选项与参数:

-n :能够没必要进行主机的名称解析,单纯用 IP ,速度较快!

-U :使用 UDP 的 port 33434 来进行侦测,这是预设的侦测协议;

-I :使用 ICMP 的方式来进行侦测;

-T :使用 TCP 来进行侦测,通常使用 port 80 测试

-w :若对方主机在几秒钟内没有回声就宣告不治...预设是 5 秒

-p 埠号:若不想使用 UDP 与 TCP 的预设埠号来侦测,可在此改变埠号。

-i 装置:用在比较复杂的环境,若是你的网络接口不少很复杂时,才会用到这个参数;

         举例来讲,你有两条 ADSL 能够链接到外部,那你的主机会有两个 ppp,

         你可使用 -i 来选择是 ppp0 仍是 ppp1 啦!

-g 路由:与 -i 的参数相仿,只是 -g 后面接的是 gateway 的 IP 就是了。


# 范例一:侦测本机到 www.xx.com 去的各节点联机状态

[root@www ~]# traceroute -n www.xx.com

traceroute to www.xx.com (119.160.246.241), 30 hops max, 40 byte packets

 1  192.168.1.254  0.279 ms  0.156 ms  0.169 ms

 2  172.20.168.254  0.430 ms  0.513 ms  0.409 ms

 3  10.40.1.1  0.996 ms  0.890 ms  1.042 ms

 4  203.72.191.85  0.942 ms  0.969 ms  0.951 ms

 5  211.20.206.58  1.360 ms  1.379 ms  1.355 ms

 6  203.75.72.90  1.123 ms  0.988 ms  1.086 ms

 7  220.128.24.22  11.238 ms  11.179 ms  11.128 ms

 8  220.128.1.82  12.456 ms  12.327 ms  12.221 ms

 9  220.128.3.149  8.062 ms  8.058 ms  7.990 ms

10  * * *

11  119.160.240.1  10.688 ms  10.590 ms 119.160.240.3  10.047 ms

一、记录按序列号从1开始,每一个纪录就是一跳 ,每跳表示一个网关,咱们看到每行有三个时间,单位是 ms,其实就是-q的默认参数。探测数据包向每一个网关发送三个数据包后,网关响应后返回的时间;若是您用 traceroute -q 4 www.xx.com ,表示向每一个网关发送4个数据包。

二、有时咱们traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的状况,多是防火墙封掉了ICMP的返回信息,因此咱们得不到什么相关的数据包返回数据。

三、有时咱们在某一网关处延时比较长,有多是某台网关比较阻塞,也多是物理设备自己的缘由。固然若是某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您能够加-n 参数来避免DNS解析,以IP格式输出数据。

四、若是在局域网中的不一样网段之间,咱们能够经过traceroute 来排查问题所在,是主机的问题仍是网关的问题。若是咱们经过远程来访问某台服务器遇到问题时,咱们用到traceroute 追踪数据包所通过的网关,提交IDC服务商,也有助于解决问题;

因为目前 UDP/ICMP 的***层出不穷,所以不少路由器可能就此取消这两个封包的响应功能。因此咱们可使用 TCP 来侦测呦! 例如使用一样的方法,透过等待时间 1 秒,以及 TCP 80 埠口的状况下,能够这样作:

# traceroute -n -T www.xx.com


8:netstat 命令
常见参数

-a (all)显示全部选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的所有转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态

-p 显示创建相关连接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。

 

列出全部端口 netstat -a

 列出全部 tcp 端口   netstat -at

列出全部 udp 端口    netstat -au

只显示监听端口             netstat -l

只列出全部监听 tcp 端口    netstat -lt

只列出全部监听 udp 端口    netstat -lu

只列出全部监听 UNIX 端口   netstat -lx

显示全部端口的统计信息      netstat -s

显示 TCP UDP 端口的统计信息 netstat -st netstat -su

显示核心路由信息   netstat -r

显示目前已经启动的网络服务   netstat -tunlp

显示目前全部已经启动的网络服务   netstat  -atunp

 

netstat  -an参数中stat(状态)的含义以下:

LISTEN:侦听来自远方的TCP端口的链接请求;
SYN-SENT:在发送链接请求后等待匹配的链接请求;
SYN-RECEIVED:在收到和发送一个链接请求后等待对方对链接请求的确认;
ESTABLISHED:表明一个打开的链接,咱们经常使用此做为并发链接数;
FIN-WAIT-1:等待远程TCP链接中断请求,或先前的链接中断请求的确认;
FIN-WAIT-2:从远程TCP等待链接中断请求;
CLOSE-WAIT:等待从本地用户发来的链接中断请求;
CLOSING:等待远程TCP对链接中断的确认;
LAST-ACK:等待原来发向远程TCP的链接中断的确认;
TIME-WAIT:等待足够的时间以确保远程TCP链接收到中断请求的确认;
CLOSED:没有任何链接状态;

 

在平常工做中,咱们能够用shell组合命令来查看服务器的TCP链接状态并汇总,命令以下:

netstat -an|awk '/^tcp/{++S[$NF]}END{for (a in S)print a,S[a]}'

 参数说明:

CLOSED 没有链接活动或正在进行的;
LISTEN  服务器正在等待的进入呼叫;
SYN_RECV:一个链接请求已经到达,等待确认;
SYN_SENT:应用已经开始,打开一个链接;
ESTABLISHED:正常数据传输状态,也能够近似的理解为当前服务器的并发数;
FIN_WAIT1:应用已经完成;
FIN_WAIT2:另外一边赞成释放;
ITMED_WAIT:等待全部分组死掉;
CLOSING:两边同时尝试关闭;
TIME_WAIT:另外一边已初始化一个释放;
LAST_ACK:等待全部分组死掉;

 

统计 TCP链接数 命令:

netstat -an |grep 'ESTABLISHED' |grep 'tcp' |wc -l

 

[root@centos ~]# vim /etc/security/limits.conf

*                hard    nofile  65535

*                soft    nofile  65535

 

/etc/rc.local

ulimit -SHn  65535   直接写入/etc/rc.local

相关文章
相关标签/搜索