选择自动获得
就ok了
如果你的adsl和别人共享
而你想控制别人的电脑
或者你想拥有固定而且有个性化的局域IP时就要设置了
设置方法
比如你的服务器地址是19216811
而你又想设置带8的ip
在ip地址填:19216818
子网掩码:2552552550(这步你只要设置了IP,按一下TAB电脑将自动设置)
默认网关:19216811
然后就是DNS:这个其实也没有必要去设置
这个要说的话设置方法不是单一的
这里我给你一个资料
这里面讲的很清楚了Step1 云服务器配置FTP服务
1root权限通命令安装Vsftp
[root@VM_250_202_tlinux ~]# yum install vsftpd
2启vsftpd服务前需要登录云服务器修改配置文件匿名登录禁用掉打配置文件命令:
[root@VM_250_202_tlinux ~]# vim /etc/vsftpd/vsftpdconf
配置文件第11行anonymous_enable=YES前面加#号即匿名登录禁用
3读取效配置
[root@VM_250_202_tlinux ~]# cat /etc/vsftpd/vsftpdconf |grep ^[^#] local_enable=YESwrite_enable=YESlocal_umask=022anon_upload_enable=YESanon_mkdir_write_enable=YESanon_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YES
4启vsftpd服务
[root@VM_250_202_tlinux ~]# service vsftpd start
5设置FTP用户账号设置功即通该账号登录FTP服务器(1)设置FTP用户账号例账号ftpuser1目录/home/ftpuser1且设置允许通ssh登录
[root@VM_250_202_tlinux ~]# useradd -m -d /home/ftpuser1 -s /sbin/nologin ftpuser1
(2)设置账号应密码例密码ftpuser1
[root@VM_250_202_tlinux ~]# passwd ftpuser1
6修改vsftpdpam配置使发者通自设置FTP用户帐号密码连接云服务器(1)修改pam
[root@VM_250_202_tlinux ~]# vim /etc/pamd/vsftpd
内容修改:
#%PAM-10 auth required /lib64/security/pam_listfileso item=user sense=deny file=/etc/ftpusers onerr=succeed auth required /lib64/security/pam_unixso shadow nullok auth required /lib64/security/pam_shellsso account required /lib64/security/pam_unixso session required /lib64/security/pam_unixso
(2)确认修改文件否确
[root@VM_250_202_tlinux ~]# cat /etc/pamd/vsftpd#%PAM-10 auth required /lib64/security/pam_listfileso item=user sense=deny file=/etc/ftpusers onerr=succeed auth required /lib64/security/pam_unixso shadow nullok auth required /lib64/security/pam_shellsso account required /lib64/security/pam_unixso session required /lib64/security/pam_unixso
(3)重启vsftpd服务使修改效
[root@VM_250_202_tlinux ~]# service vsftpd restartShutting down vsftpd: [ OK ]Starting vsftpd for vsftpd: [ OK ]
Step2 传文件Linux云服务器
1载并安装源软件FileZilla请使用FileZilla351、352版本(使用353版本FileZilla进行FTP传问题)由于FileZilla 官网提供新353版本载建议发者自行搜索351、352载址建议351 载址:
2连接FTP运行FileZilla按图所示进行配置配置点击快速链接:
配置信息说明:(1)主机:云服务器公网IP(云服务器管理视图页面查看云服务器公网IP)(2)用户名:Step1设置FTP用户账号ftpuser1例(3)密码:Step1设置FTP用户账号应密码ftpuser1例(4)端口:FTP监听端口默认21
3传文件Linux云服务器传文件鼠标选本文件拖拽远程站点即文件传Linux云服务器注意:云服务器FTP通道支持传tar压缩包自解压及删除tar包功能
大部分商家的普通服务器是不开通25端口的,就是怕用户用来发垃圾邮件
就阿里云和腾讯云来说,都有专门的邮件服务器,比普通服务器贵多了,不可能让你用普通服务器发邮件的
国外VPS商家大部分也是不允许用来发邮件的
还有就是腾讯云的问题你可以给腾讯云发工单,获得官方答复
系统1、iptables
配置iptables
iptables 的最大优点是它可以配置有状态的防火墙
关闭默认防火墙firewall
systemctl stop firewalldservice #停止
firewall systemctl disable firewalldservice #禁止
firewall开机启动 firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
安装iptables
yum install iptables-services
默认只开放22端口,如果需要配置更多端口
vim /etc/sysconfig/iptables
filter :INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [26:2314]
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT COMMIT
:wq! #保存退出
2、修改默认ssh远程端口
vim /ect/ssh/sshd_config
#Prot 22
修改为
Prot 88888 # 88888为自定义设置远程端口
/etc/initd/sshd restart # 重启SSH使配置生效
在iptables修改22规则
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
修改为
-A INPUT -p tcp -m tcp --dport 88888 -j ACCEPT
systemctl restart iptablesservice # 最后重启防火墙使配置生效
现在就可以用88888端口远程登录了
3、LNMP
安装LNMP稳定版,按指示 *** 作,可选择mysql、php版本,设置密码等
wget -c >Step1 在云服务器配置FTP服务
1在root权限下,通过如下命令安装Vsftp。
[root@VM_250_202_tlinux ~]# yum install vsftpd
2在启动vsftpd服务之前,需要登录云服务器修改配置文件,将匿名登录禁用掉。打开配置文件,命令如下:
[root@VM_250_202_tlinux ~]# vim /etc/vsftpd/vsftpdconf
在配置文件中第11行的“anonymous_enable=YES”前面加上#号,即将匿名登录禁用。
3读取生效配置。
[root@VM_250_202_tlinux ~]# cat /etc/vsftpd/vsftpdconf |grep ^[^#] local_enable=YESwrite_enable=YESlocal_umask=022anon_upload_enable=YESanon_mkdir_write_enable=YESanon_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YES
4启动vsftpd服务。
[root@VM_250_202_tlinux ~]# service vsftpd start
5设置FTP用户账号。设置成功后,即可通过该账号登录FTP服务器。(1)设置FTP用户的账号,例如账号为“ftpuser1”,目录为/home/ftpuser1,且设置不允许通过ssh登录。
[root@VM_250_202_tlinux ~]# useradd -m -d /home/ftpuser1 -s /sbin/nologin ftpuser1
(2)设置账号对应的密码,例如密码为“ftpuser1”。
[root@VM_250_202_tlinux ~]# passwd ftpuser1
6修改vsftpd的pam配置,使开发者可以通过自己设置的FTP用户帐号和密码连接到云服务器。(1)修改pam。
[root@VM_250_202_tlinux ~]# vim /etc/pamd/vsftpd
内容修改为:
#%PAM-10 auth required /lib64/security/pam_listfileso item=user sense=deny file=/etc/ftpusers onerr=succeed auth required /lib64/security/pam_unixso shadow nullok auth required /lib64/security/pam_shellsso account required /lib64/security/pam_unixso session required /lib64/security/pam_unixso
(2)确认修改后的文件是否正确。
[root@VM_250_202_tlinux ~]# cat /etc/pamd/vsftpd#%PAM-10 auth required /lib64/security/pam_listfileso item=user sense=deny file=/etc/ftpusers onerr=succeed auth required /lib64/security/pam_unixso shadow nullok auth required /lib64/security/pam_shellsso account required /lib64/security/pam_unixso session required /lib64/security/pam_unixso
(3)重启vsftpd服务,使修改生效。
[root@VM_250_202_tlinux ~]# service vsftpd restartShutting down vsftpd: [ OK ]Starting vsftpd for vsftpd: [ OK ]
Step2 上传文件到Linux云服务器
1下载并安装开源软件FileZilla请使用FileZilla的351、352版本(使用353版本的FileZilla进行FTP上传会有问题)。由于FileZilla 官网上只提供了最新的353版本下载,因此建议开发者自行搜索351、352下载地址。建议的351 下载地址:>
unix的哲学是一切皆文件,可以把socket看成是一种特殊的文件,而一些socket函数就是对其进行的 *** 作api(读/写IO、打开、关闭)。我们知道普通文件的打开 *** 作(open)返回一个文件描述字,与之类似,socket()用于创建一个socket描述符(socket descriptor),它唯一标识一个socket。
当我们调用socket创建一个socket时,返回的socket描述字它存在于协议族(address family,AF_XXX)空间中,但没有一个具体的地址。如果想要给它赋值一个地址,就必须调用bind()函数,
sockfd即socket描述字,它是通过socket()函数创建了,唯一标识一个socket。bind()函数就是将给这个描述字绑定一个名字。
在将一个地址绑定到socket的时候,需要先将主机字节序转换成为网络字节序,而不要假定主机字节序跟网络字节序一样使用的是Big-Endian。由于这个问题曾引发过不少血案,谨记对主机字节序不要做任何假定,务必将其转化为网络字节序再赋给socket。
这里的主机字节序就是我们平常说的大端和小端模式:不同的CPU有不同的字节序类型,这些字节序是指整数在内存中保存的顺序,这个叫做主机序。引用标准的Big-Endian和Little-Endian的定义如下:
listen函数的第一个参数即为要监听的socket描述字,第二个参数为socket可以接受的排队的最大连接个数。listen函数表示等待客户的连接请求。
connect函数的第一个参数即为客户端的socket描述字,第二参数为服务器的socket地址,第三个参数为socket地址的长度。客户端通过调用connect函数来建立与TCP服务器的连接。
TCP服务器端依次调用socket()、bind()、listen()之后,就会监听指定的socket地址了。TCP客户端依次调用socket()、connect()之后就向TCP服务器发送连接请求。TCP服务器监听到这个请求之后,就会调用accept()函数去接收请求,这样连接就建立好了(在connect之后就建立好了三次连接),之后就可以开始进行类似于普通文件的网络I/O *** 作了。
如果accpet成功,那么其返回值是由内核自动生成的一个全新的描述字,代表与客户的TCP连接。
accept的第一个参数为服务器的socket描述字,是服务器开始调用socket()函数生成的,称为监听socket描述字;而accept函数返回的是已连接的socket描述字。一个服务器通常通常仅仅只创建一个监听socket描述字,它在该服务器的生命周期内一直存在。内核为每个由服务器进程接受的客户连接创建了一个已连接socket描述字,当服务器完成了对某个客户的服务,相应的已连接socket描述字就被关闭。
read函数是负责从fd中读取内容当读成功时,read返回实际所读的字节数,如果返回的值是0表示已经读到文件的结束了,小于0表示出现了错误。如果错误为EINTR说明读是由中断引起的,如果是ECONNREST表示网络连接出了问题。
write函数将buf中的nbytes字节内容写入文件描述符fd成功时返回写的字节数。失败时返回-1,并设置errno变量。 在网络程序中,当我们向套接字文件描述符写时有俩种可能。1)write的返回值大于0,表示写了部分或者是全部的数据。2)返回的值小于0,此时出现了错误
在服务器与客户端建立连接之后,会进行一些读写 *** 作,完成了读写 *** 作就要关闭相应的socket描述字,类似于 *** 作完打开的文件要调用fclose关闭打开的文件。
close一个TCP socket的缺省行为时把该socket标记为已关闭,然后立即返回到调用进程。该描述字不能再由调用进程使用,也就是说不能再作为read或write的第一个参数
close *** 作只是使相应socket描述字的引用计数-1,只有当引用计数为0的时候,才会触发TCP客户端向服务器发送终止连接请求。
我们知道tcp建立连接要进行“三次握手”,即交换三个分组。大致流程如下:
客户端向服务器发送一个SYN J
服务器向客户端响应一个SYN K,并对SYN J进行确认ACK J+1
客户端再想服务器发一个确认ACK K+1
socket中TCP的四次握手释放连接详解
某个应用进程首先调用close主动关闭连接,这时TCP发送一个FIN M;另一端接收到FIN M之后,执行被动关闭,对这个FIN进行确认。一段时间之后,服务端调用close关闭它的socket。这导致它的TCP也发送一个FIN N;接收到这个FIN的源发送端TCP对它进行确认,这样每个方向上都有一个FIN和ACK。
为什么要三次握手
由于tcp连接是全双工的,存在着双向的读写通道,每个方向都必须单独进行关闭。当一方完成它的数据发送任务后就可以发送一个FIN来终止这个方向的连接。收到FIN只意味着这个方向上没有数据流动,但并不表示在另一个方向上没有读写,所以要双向的读写关闭需要四次握手,
3 time_wait状态如何避免?
首先服务器可以设置SO_REUSEADDR套接字选项来通知内核,如果端口忙,但TCP连接位于TIME_WAIT状态时可以重用端口。在一个非常有用的场景就是,如果你的服务器程序停止后想立即重启,而新的套接字依旧希望使用同一端口,此时SO_REUSEADDR选项就可以避免TIME_WAIT状态。
1客户端连接服务器的80服务,这时客户端会启用一个本地的端口访问服务器的80,访问完成后关闭此连接,立刻再次访问服务器的
80,这时客户端会启用另一个本地的端口,而不是刚才使用的那个本地端口。原因就是刚才的那个连接还处于TIME_WAIT状态。
2客户端连接服务器的80服务,这时服务器关闭80端口,立即再次重启80端口的服务,这时可能不会成功启动,原因也是服务器的连
接还处于TIME_WAIT状态。
实战分析:
状态描述:
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉</pre>
命令解释:
如何尽量处理TIMEWAIT过多
编辑内核文件/etc/sysctlconf,加入以下内容:
netipv4tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
netipv4tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
netipv4tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
netipv4tcp_fin_timeout 修改系默认的 TIMEOUT 时间</pre>
然后执行 /sbin/sysctl -p 让参数生效
/etc/sysctlconf是一个允许改变正在运行中的Linux系统的接口,它包含一些TCP/IP堆栈和虚拟内存系统的高级选项,修改内核参数永久生效。
简单来说,就是打开系统的TIMEWAIT重用和快速回收。
本文主要讲述了socket的主要api,以及tcp的连接过程和其中各个阶段的连接状态,理解这些是更深入了解tcp的基础!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)