centos启动ss(linux安装ssh)

【UTC】CentOS7修改时区的正确姿势

整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC,Universal Time Coordinated)。

格林威治标准时间(Greenwich Mean Time)指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。(UTC与GMT时间基本相同,本文中不做区分)

中国标准时间(China Standard Time)【GMT + 8 = UTC + 8 = CST】

夏令时(Daylight Saving Time)指在夏天太阳升起的比较早时,将时钟拨快一小时,以提早日光的使用。(中国不使用)

RTC(Real-Time Clock)或CMOS时钟,一般在主板上靠电池供电,服务器断电后也会继续运行。仅保存日期时间数值,无法保存时区和夏令时设置。

一般在服务器启动时复制RTC时间,之后独立运行,保存了时间、时区和夏令时设置。

在CentOS 6版本,时间设置有date、hwclock命令,从CentOS 7开始,使用了一个新的命令timedatectl。

Centos7修改系统时区timezone ,解决快、慢8小时问题

如果服务器用非 UTC的时间,时区转换很容易不一致,而且对于有 daylight saving的时区,每年多一小时少一小时的那两天,系统就会出现各种诡异现象。

服务器使用UTC时间,如要显示用户所在时区的本地时间,在客户端转化即可。

# timedatectl

我们可以看到,服务器使用的CST时间

# timedatectl set-timezone UTC

# timedatectl set-time"YYYY-MM-DD HH:MM:SS"

# timedatectl set-time "HH:MM:SS"

# timedatectl

我们可以看到,服务器时间类型更改为UTC了

# ll /etc/locatime

lrwxrwxrwx. 1 root root 25 1月 14 08:30 /etc/localtime->../usr/share/zoneinfo/UTC

实际上是做了一个将 

 文件 /etc/localtime 做了一个软连接到 /usr/share/zoneinfo/UTC

# ln -s /usr/share/zoneinfo/UTC  /etc/localtime

ln:无法创建符号链接"/etc/localtime":文件已存在

# ln -sf /usr/share/zoneinfo/UTC   /etc/localtime

做软连接时,需要加-f参数,强制覆盖,不然会显示软链接已存在

# timedatectl set-time"YYYY-MM-DD HH:MM:SS"

# timedatectl set-time "HH:MM:SS"   //只设置时分秒

# timedatectl

# clock -w

# date -u  //显示UTC时间

CentOS7修改时区的正确姿势

CentOS7上运行Java程序,发现程序生成的时间与当前时间匹配不上,还以为是数据停止更新了,后来发现没有正确使用修改时区的姿势,导致程序时区错误。

正确的修改CentOS7时区的姿势:

#  ln -sf/usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

其他系统的修改文件可能是/var/etc/localtime.

错误的姿势:通过cp命令覆盖/etc/localtime时间

 # cp-f /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

通过cp命令修改时区,通过date, data-R命令显示的时区都是正确的,可是对于java程序而言,是错误的。

具体原因在于Java访问系统时区的方式上,可参见文章:

Java TimeZone和 Linux TimeZone问题

该文章很好的说明了Java访问系统时区的方式:

1.如有环境变量 TZ设置,则用TZ中设置的时区

2.在/etc/sysconfig/clock文件中找“ZONE”的值

3.如何2)都没,就用/etc/localtime和/usr/share/zoneinfo下的时区文件进行匹配,如找到匹配的,就返回对应的路径和文件名。 

问题在于,如果使用cp命令来修改/etc/localtime文件,那么可能就会导致修改的不是/etc/localtime文件,而是原时区的文件内容。

/etc/localtime是通过符号链接链接/usr/share/zoneinfo下的文件,而java是通过文件名来确认时区的,data命令是通过文件内容确认时区的,这样就导致了data命令时区正确,而java的时区是错误的!

如上图所示:CentOS7是通过符号链接到/usr/share/zoneinfo/下的时区文件的,如果通过cp指令只会修改原时区文件内容,这样,通过date的系统命令,查看时间是OK的,可是java是通过读取文件名的方式确认时区信息的。所以时区还是纽约。

在CentOS系统的服务器上用ss5配置socket5代理的教程

第一步下载安装 ss5

1.安装系统必要的包

复制代码代码如下:[root@e2fsck~]# yum install gcc automake make

2.安装 socks5必要的包

复制代码代码如下:[root@e2fsck~]# yum-y install pam-devel openldap-devel cyrus-sasl-devel

3.下载安装 socket5(ss5)

复制代码代码如下:[root@e2fsck~]# wget

[root@e2fsck~]# tar xvf ss5-3.8.9-6.tar.gz

[root@e2fsck~]# cd ss5-3.8.9

[root@e2fsck ss5-3.8.9]#./configure

[root@e2fsck ss5-3.8.9]# make&& make install

第二步配置 ss5

1.取消默认的 socket4

复制代码代码如下:[root@e2fsck ss5-3.8.9]# mv/usr/lib/ss5/mod_socks4.so/usr/lib/ss5/mod_socks4.so.bak

2.默认允许任何人使用,我们当然不能这么做了

复制代码代码如下:[root@e2fsck ss5-3.8.9]# vi/etc/opt/ss5/ss5.conf# SHost SPort Authentication# auth 0.0.0.0/0- u# Auth SHost SPort DHost DPort Fixup Group Band ExpDate# permit u 0.0.0.0/0- 0.0.0.0/0-----

3.设置密码

复制代码代码如下:[root@e2fsck~]# vi/etc/opt/ss5/ss5.passwd

user password#帐号密码写在一行就可以了

第三步启动 ss5

1.给 ss5执行权限

复制代码代码如下:[root@e2fsck~]# chmd+x/etc/rc.d/init.d/ss5

2.启动

复制代码代码如下:[root@e2fsck~]# service ss5 start

3.查看端口是否开启成功

复制代码代码如下:[root@e2fsck~]# netstat-tnlp| grep 1080

tcp 0 0 0.0.0.0:1080 0.0.0.0:* LISTEN 21767/ss5

看到 1080就说明成功了

CentOS网络状态工具ss命令使用方法

ss命令用于显示socket状态.他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix domain sockets等等统计.它比其他工具展示等多tcp和state信息.它是一个非常实用、快速、有效的跟踪IP连接和sockets的新工具.SS命令可以提供如下信息:

所有的TCP sockets

所有的UDP sockets

所有ssh/ftp/ttp/https持久连接

所有连接到Xserver的本地进程

使用state(例如:connected, synchronized, SYN-RECV, SYN-SENT,TIME-WAIT)、地址、端口过滤

所有的state FIN-WAIT-1 tcpsocket连接以及更多

很多流行的Linux发行版都支持ss以及很多监控工具使用ss命令.熟悉这个工具有助于您更好的发现与解决系统性能问题.本人强烈建议使用ss命令替代netstat部分命令,例如netsat-ant/lnt等.

展示他之前来做个对比,统计服务器并发连接数

netstat

# time netstat-ant| grep EST| wc-l

3100

real 0m12.960s

user 0m0.334s

sys 0m12.561s

# time ss-o state established| wc-l

3204

real 0m0.030s

user 0m0.005s

sys 0m0.026s

结果很明显ss统计并发连接数效率完败netstat,在ss能搞定的情况下,你还会在选择netstat吗,还在犹豫吗,看以下例子,或者跳转到帮助页面.

常用ss命令:

ss-l显示本地打开的所有端口

ss-pl显示每个进程具体打开的socket

ss-t-a显示所有tcp socket

ss-u-a显示所有的UDP Socekt

ss-o state established'( dport=:smtp or sport=:smtp)'显示所有已建立的SMTP连接

ss-o state established'( dport=:http or sport=:http)'显示所有已建立的HTTP连接

ss-x src/tmp/.X11-unix/*找出所有连接X服务器的进程

ss-s列出当前socket详细信息:

显示sockets简要信息

列出当前已经连接,关闭,等待的tcp连接

# ss-s

Total: 3519(kernel 3691)

TCP: 26557(estab 3163, closed 23182, orphaned 194, synrecv 0, timewait 23182/0), ports 1452

Transport Total IP IPv6

* 3691--

RAW 2 2 0

UDP 10 7 3

TCP 3375 3368 7

INET 3387 3377 10

FRAG 0 0 0

列出当前监听端口

# ss-l

Recv-Q Send-Q Local Address:Port Peer Address:Port

0 10:::5989:::*

0 5*:rsync*:*

0 128:::sunrpc:::*

0 128*:sunrpc*:*

0 511*:http*:*

0 128:::ssh:::*

0 128*:ssh*:*

0 128:::35766:::*

0 128 127.0.0.1:ipp*:*

0 128::1:ipp:::*

0 100::1:smtp:::*

0 100 127.0.0.1:smtp*:*

0 511*:https*:*

0 100:::1311:::*

0 5*:5666*:*

0 128*:3044*:*

ss列出每个进程名及其监听的端口

# ss-pl

ss列所有的tcp sockets

# ss-t-a

ss列出所有udp sockets

# ss-u-a

ss列出所有http连接中的连接

# ss-o state established'( dport=:http or sport=:http)'

以上包含对外提供的80,以及访问外部的80

用以上命令完美的替代netstat获取http并发连接数,监控中常用到

ss列出本地哪个进程连接到x server

# ss-x src/tmp/.X11-unix/*

ss列出处在FIN-WAIT-1状态的http、https连接

# ss-o state fin-wait-1'( sport=:http or sport=:https)'

ss常用的state状态:

established

syn-sent

syn-recv

fin-wait-1

fin-wait-2

time-wait

closed

close-wait

last-ack

listen

closing

all: All of the above states

connected: All the states except for listen and closed

synchronized: All the connected states except for syn-sent

bucket: Show states, which are maintained as minisockets, i.e. time-wait and syn-recv.

big: Opposite to bucket state.

ss使用IP地址筛选

ss src ADDRESS_PATTERN

src:表示来源

ADDRESS_PATTERN:表示地址规则

如下:

ss src 120.33.31.1#列出来之20.33.31.1的连接

#列出来至120.33.31.1,80端口的连接

ss src 120.33.31.1:http

ss src 120.33.31.1:80

ss使用端口筛选

ss dport OP PORT

OP:是运算符

PORT:表示端口

dport:表示过滤目标端口、相反的有sport

OP运算符如下:

= or le:小于等于= or ge:大于等于

== or eq:等于

!= or ne:不等于端口

or lt:小于这个端口 or gt:大于端口

OP实例

ss sport=:http也可以是 ss sport=:80

ss dport=:http

ss dport \:1024

ss sport \:1024

ss sport \:32000

ss sport eq:22

ss dport!=:22

ss state connected sport=:http

ss \( sport=:http or sport=:https \)

ss-o state fin-wait-1 \( sport=:http or sport=:https \) dst 192.168.1/24

为什么ss比netstat快:

netstat是遍历/proc下面每个PID目录,ss直接读/proc/net下面的统计信息。所以ss执行的时候消耗资源以及消耗的时间都比netstat少很多

ss命令帮助

# ss-h

Usage: ss [ OPTIONS ]

ss [ OPTIONS ] [ FILTER ]

-h,--help this message

-V,--version output version information

-n,--numeric don't resolve service names

-r,--resolve resolve host names

-a,--all display all sockets

-l,--listening display listening sockets

-o,--options show timer information

-e,--extended show detailed socket information

-m,--memory show socket memory usage

-p,--processes show process using socket

-i,--info show internal TCP information

-s,--summary show socket usage summary

-4,--ipv4 display only IP version 4 sockets

-6,--ipv6 display only IP version 6 sockets

-0,--packet display PACKET sockets

-t,--tcp display only TCP sockets

-u,--udp display only UDP sockets

-d,--dccp display only DCCP sockets

-w,--raw display only RAW sockets

-x,--unix display only Unix domain sockets

-f,--family=FAMILY display sockets of type FAMILY

-A,--query=QUERY,--socket=QUERY

QUERY:={all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]

-D,--diag=FILE Dump raw information about TCP sockets to FILE

-F,--filter=FILE read filter information from FILE

FILTER:= [ state TCP-STATE ] [ EXPRESSION ]

阅读剩余
THE END