客户端配置 NAT 后仍无法访问 ECS 或 RDS 远端服务器

2021-12-02 09:20发布

啥原因  咋解决呢

啥原因  咋解决呢

6条回答
不吃鱼的猫
2楼 · 2021-12-02 09:46

先重头检查一下是不是配置出现问题,不行的话重装软件试试

我是大脸猫
3楼 · 2021-12-02 10:13

文档涉及的Linux内核参数说明

文档涉及的Linux内核参数说明如下,可参见以下参数说明进行相关操作。

参数描述
net.core.rmem_default默认的TCP数据接收窗口大小(字节)。
net.core.rmem_max最大的TCP数据接收窗口(字节)。
net.core.wmem_default默认的TCP数据发送窗口大小(字节)。
net.core.wmem_max最大的TCP数据发送窗口(字节)。
net.core.netdev_max_backlog当内核处理速度比网卡接收速度慢时,这部分多出来的包就会被保存在网卡的接收队列上,而该参数说明了这个队列的数量上限。在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
net.core.somaxconn该参数定义了系统中每一个端口最大的监听队列的长度,是个全局参数。该参数和net.ipv4.tcp_max_syn_backlog有关联,后者指的是还在三次握手的半连接的上限,该参数指的是处于ESTABLISHED的数量上限。若您的ECS实例业务负载很高,则有必要调高该参数。listen(2)函数中的参数backlog 同样是指明监听的端口处于ESTABLISHED的数量上限,当backlog大于net.core.somaxconn时,以net.core.somaxconn参数为准。
net.core.optmem_max表示每个套接字所允许的最大缓冲区的大小。
net.ipv4.tcp_mem确定TCP栈应该如何反映内存使用,每个值的单位都是内存页(通常是4KB)。
第一个值是内存使用的下限。
第二个值是内存压力模式开始对缓冲区使用应用压力的上限。
第三个值是内存使用的上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。对于较大的BDP可以增大这些值(其单位是内存页而不是字节)。
net.ipv4.tcp_rmem为自动调优定义Socket使用的内存。
第一个值是为Socket接收缓冲区分配的最少字节数。
第二个值是默认值(该值会被rmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值。
第三个值是接收缓冲区空间的最大字节数(该值会被rmem_max覆盖)。
net.ipv4.tcp_wmem为自动调优定义Socket使用的内存。
第一个值是为Socket发送缓冲区分配的最少字节数。
第二个值是默认值(该值会被wmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值。
第三个值是发送缓冲区空间的最大字节数(该值会被wmem_max覆盖)。
net.ipv4.tcp_keepalive_timeTCP发送keepalive探测消息的间隔时间(秒),用于确认TCP连接是否有效。
net.ipv4.tcp_keepalive_intvl探测消息未获得响应时,重发该消息的间隔时间(秒)。
net.ipv4.tcp_keepalive_probes在认定TCP连接失效之前,最多发送多少个keepalive探测消息。
net.ipv4.tcp_sack启用有选择的应答(1表示启用),通过有选择地应答乱序接收到的报文来提高性能,让发送者只发送丢失的报文段,(对于广域网通信来说)这个选项应该启用,但是会增加对CPU的占用。
net.ipv4.tcp_fack启用转发应答,可以进行有选择应答(SACK)从而减少拥塞情况的发生,这个选项也应该启用。
net.ipv4.tcp_timestampsTCP时间戳(会在TCP包头增加12B),以一种比重发超时更精确的方法(参考RFC 1323)来启用对RTT的计算,为实现更好的性能应该启用这个选项。
net.ipv4.tcp_window_scaling启用RFC 1323定义的window scaling,要支持超过64KB的TCP窗口,必须启用该值(1表示启用),TCP窗口最大至1GB,TCP连接双方都启用时才生效。
net.ipv4.tcp_syncookies

该参数表示是否打开TCP同步标签(SYN_COOKIES),内核必须开启并编译CONFIG_SYN_COOKIES,SYN_COOKIES可以防止一个套接字在有过多试图连接到达时,引起过载。默认值0表示关闭。
当该参数被设置为1,且SYN_RECV队列满了之后,内核会对SYN包的回复做一定的修改,即在响应的SYN+ACK包中,初始的序列号是由源IP+Port、目的IP+Port及时间这五个参数共同计算出一个值组成精心组装的TCP包。由于ACK包中确认的序列号并不是之前计算出的值,恶意攻击者无法响应或误判,而请求者会根据收到的SYN+ACK包做正确的响应。启用net.ipv4.tcp_syncookies后,会忽略net.ipv4.tcp_max_syn_backlog

net.ipv4.tcp_tw_reuse表示是否允许将处于TIME-WAIT状态的Socket(TIME-WAIT的端口)用于新的TCP连接。
net.ipv4.tcp_tw_recycle能够更快地回收TIME-WAIT套接字。
net.ipv4.tcp_fin_timeout对于本端断开的Socket连接,TCP保持在FIN-WAIT-2状态的时间(秒)。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。
net.ipv4.ip_local_port_range表示TCP/UDP协议允许使用的本地端口号。
net.ipv4.tcp_max_syn_backlog该参数决定了系统中处于SYN_RECV状态的TCP连接数量。SYN_RECV状态指的是当系统收到SYN后,作为SYN+ACK响应后等待对方回复三次握手阶段中的最后一个ACK的阶段。对于还未获得对方确认的连接请求,可保存在队列中的最大数目。如果服务器经常出现过载,可以尝试增加这个数字。默认值大小会受实例内存的影响,默认值最大为2048。
net.ipv4.tcp_low_latency允许TCP/IP栈适应在高吞吐量情况下低延时的情况,这个选项应该禁用。
net.ipv4.tcp_westwood启用发送者端的拥塞控制算法,它可以维护对吞吐量的评估,并试图对带宽的整体利用情况进行优化,对于WAN通信来说应该启用这个选项。
net.ipv4.tcp_bic为快速长距离网络启用Binary Increase Congestion,这样可以更好地利用以GB速度进行操作的链接,对于WAN通信应该启用这个选项。
net.ipv4.tcp_max_tw_buckets该参数设置系统的TIME_WAIT的数量,如果超过默认值则会被立即清除。tcp_max_tw_buckets默认值大小会受实例内存的影响,最大值为262144。
net.ipv4.tcp_synack_retries指明了处于SYN_RECV状态时重传SYN+ACK包的次数。
net.ipv4.tcp_abort_on_overflow设置该参数为1时,当系统在短时间内收到了大量的请求,而相关的应用程序未能处理时,就会发送Reset包直接终止这些链接。建议通过优化应用程序的效率来提高处理能力,而不是简单地Reset。默认值为0。
net.ipv4.route.max_size内核所允许的最大路由数目。
net.ipv4.ip_forward接口间转发报文。
net.ipv4.ip_default_ttl报文可以经过的最大跳数。
net.netfilter.nf_conntrack_tcp_timeout_established在指定之间内,已经建立的连接如果没有活动,则通过iptables进行清除。
net.netfilter.nf_conntrack_max哈希表项最大值。


回答: 2021-12-02 10:13

文档涉及的Linux内核参数说明

文档涉及的Linux内核参数说明如下,可参见以下参数说明进行相关操作。

参数描述
net.core.rmem_default默认的TCP数据接收窗口大小(字节)。
net.core.rmem_max最大的TCP数据接收窗口(字节)。
net.core.wmem_default默认的TCP数据发送窗口大小(字节)。
net.core.wmem_max最大的TCP数据发送窗口(字节)。
net.core.netdev_max_backlog当内核处理速度比网卡接收速度慢时,这部分多出来的包就会被保存在网卡的接收队列上,而该参数说明了这个队列的数量上限。在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
net.core.somaxconn该参数定义了系统中每一个端口最大的监听队列的长度,是个全局参数。该参数和net.ipv4.tcp_max_syn_backlog有关联,后者指的是还在三次握手的半连接的上限,该参数指的是处于ESTABLISHED的数量上限。若您的ECS实例业务负载很高,则有必要调高该参数。listen(2)函数中的参数backlog 同样是指明监听的端口处于ESTABLISHED的数量上限,当backlog大于net.core.somaxconn时,以net.core.somaxconn参数为准。
net.core.optmem_max表示每个套接字所允许的最大缓冲区的大小。
net.ipv4.tcp_mem确定TCP栈应该如何反映内存使用,每个值的单位都是内存页(通常是4KB)。
第一个值是内存使用的下限。
第二个值是内存压力模式开始对缓冲区使用应用压力的上限。
第三个值是内存使用的上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。对于较大的BDP可以增大这些值(其单位是内存页而不是字节)。
net.ipv4.tcp_rmem为自动调优定义Socket使用的内存。
第一个值是为Socket接收缓冲区分配的最少字节数。
第二个值是默认值(该值会被rmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值。
第三个值是接收缓冲区空间的最大字节数(该值会被rmem_max覆盖)。
net.ipv4.tcp_wmem为自动调优定义Socket使用的内存。
第一个值是为Socket发送缓冲区分配的最少字节数。
第二个值是默认值(该值会被wmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值。
第三个值是发送缓冲区空间的最大字节数(该值会被wmem_max覆盖)。
net.ipv4.tcp_keepalive_timeTCP发送keepalive探测消息的间隔时间(秒),用于确认TCP连接是否有效。
net.ipv4.tcp_keepalive_intvl探测消息未获得响应时,重发该消息的间隔时间(秒)。
net.ipv4.tcp_keepalive_probes在认定TCP连接失效之前,最多发送多少个keepalive探测消息。
net.ipv4.tcp_sack启用有选择的应答(1表示启用),通过有选择地应答乱序接收到的报文来提高性能,让发送者只发送丢失的报文段,(对于广域网通信来说)这个选项应该启用,但是会增加对CPU的占用。
net.ipv4.tcp_fack启用转发应答,可以进行有选择应答(SACK)从而减少拥塞情况的发生,这个选项也应该启用。
net.ipv4.tcp_timestampsTCP时间戳(会在TCP包头增加12B),以一种比重发超时更精确的方法(参考RFC 1323)来启用对RTT的计算,为实现更好的性能应该启用这个选项。
net.ipv4.tcp_window_scaling启用RFC 1323定义的window scaling,要支持超过64KB的TCP窗口,必须启用该值(1表示启用),TCP窗口最大至1GB,TCP连接双方都启用时才生效。
net.ipv4.tcp_syncookies

该参数表示是否打开TCP同步标签(SYN_COOKIES),内核必须开启并编译CONFIG_SYN_COOKIES,SYN_COOKIES可以防止一个套接字在有过多试图连接到达时,引起过载。默认值0表示关闭。
当该参数被设置为1,且SYN_RECV队列满了之后,内核会对SYN包的回复做一定的修改,即在响应的SYN+ACK包中,初始的序列号是由源IP+Port、目的IP+Port及时间这五个参数共同计算出一个值组成精心组装的TCP包。由于ACK包中确认的序列号并不是之前计算出的值,恶意攻击者无法响应或误判,而请求者会根据收到的SYN+ACK包做正确的响应。启用net.ipv4.tcp_syncookies后,会忽略net.ipv4.tcp_max_syn_backlog

net.ipv4.tcp_tw_reuse表示是否允许将处于TIME-WAIT状态的Socket(TIME-WAIT的端口)用于新的TCP连接。
net.ipv4.tcp_tw_recycle能够更快地回收TIME-WAIT套接字。
net.ipv4.tcp_fin_timeout对于本端断开的Socket连接,TCP保持在FIN-WAIT-2状态的时间(秒)。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。
net.ipv4.ip_local_port_range表示TCP/UDP协议允许使用的本地端口号。
net.ipv4.tcp_max_syn_backlog该参数决定了系统中处于SYN_RECV状态的TCP连接数量。SYN_RECV状态指的是当系统收到SYN后,作为SYN+ACK响应后等待对方回复三次握手阶段中的最后一个ACK的阶段。对于还未获得对方确认的连接请求,可保存在队列中的最大数目。如果服务器经常出现过载,可以尝试增加这个数字。默认值大小会受实例内存的影响,默认值最大为2048。
net.ipv4.tcp_low_latency允许TCP/IP栈适应在高吞吐量情况下低延时的情况,这个选项应该禁用。
net.ipv4.tcp_westwood启用发送者端的拥塞控制算法,它可以维护对吞吐量的评估,并试图对带宽的整体利用情况进行优化,对于WAN通信来说应该启用这个选项。
net.ipv4.tcp_bic为快速长距离网络启用Binary Increase Congestion,这样可以更好地利用以GB速度进行操作的链接,对于WAN通信应该启用这个选项。
net.ipv4.tcp_max_tw_buckets该参数设置系统的TIME_WAIT的数量,如果超过默认值则会被立即清除。tcp_max_tw_buckets默认值大小会受实例内存的影响,最大值为262144。
net.ipv4.tcp_synack_retries指明了处于SYN_RECV状态时重传SYN+ACK包的次数。
net.ipv4.tcp_abort_on_overflow设置该参数为1时,当系统在短时间内收到了大量的请求,而相关的应用程序未能处理时,就会发送Reset包直接终止这些链接。建议通过优化应用程序的效率来提高处理能力,而不是简单地Reset。默认值为0。
net.ipv4.route.max_size内核所允许的最大路由数目。
net.ipv4.ip_forward接口间转发报文。
net.ipv4.ip_default_ttl报文可以经过的最大跳数。
net.netfilter.nf_conntrack_tcp_timeout_established在指定之间内,已经建立的连接如果没有活动,则通过iptables进行清除。
net.netfilter.nf_conntrack_max哈希表项最大值。


回答: 2021-12-02 10:13

文档涉及的Linux内核参数说明

文档涉及的Linux内核参数说明如下,可参见以下参数说明进行相关操作。

参数描述
net.core.rmem_default默认的TCP数据接收窗口大小(字节)。
net.core.rmem_max最大的TCP数据接收窗口(字节)。
net.core.wmem_default默认的TCP数据发送窗口大小(字节)。
net.core.wmem_max最大的TCP数据发送窗口(字节)。
net.core.netdev_max_backlog当内核处理速度比网卡接收速度慢时,这部分多出来的包就会被保存在网卡的接收队列上,而该参数说明了这个队列的数量上限。在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
net.core.somaxconn该参数定义了系统中每一个端口最大的监听队列的长度,是个全局参数。该参数和net.ipv4.tcp_max_syn_backlog有关联,后者指的是还在三次握手的半连接的上限,该参数指的是处于ESTABLISHED的数量上限。若您的ECS实例业务负载很高,则有必要调高该参数。listen(2)函数中的参数backlog 同样是指明监听的端口处于ESTABLISHED的数量上限,当backlog大于net.core.somaxconn时,以net.core.somaxconn参数为准。
net.core.optmem_max表示每个套接字所允许的最大缓冲区的大小。
net.ipv4.tcp_mem确定TCP栈应该如何反映内存使用,每个值的单位都是内存页(通常是4KB)。
第一个值是内存使用的下限。
第二个值是内存压力模式开始对缓冲区使用应用压力的上限。
第三个值是内存使用的上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。对于较大的BDP可以增大这些值(其单位是内存页而不是字节)。
net.ipv4.tcp_rmem为自动调优定义Socket使用的内存。
第一个值是为Socket接收缓冲区分配的最少字节数。
第二个值是默认值(该值会被rmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值。
第三个值是接收缓冲区空间的最大字节数(该值会被rmem_max覆盖)。
net.ipv4.tcp_wmem为自动调优定义Socket使用的内存。
第一个值是为Socket发送缓冲区分配的最少字节数。
第二个值是默认值(该值会被wmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值。
第三个值是发送缓冲区空间的最大字节数(该值会被wmem_max覆盖)。
net.ipv4.tcp_keepalive_timeTCP发送keepalive探测消息的间隔时间(秒),用于确认TCP连接是否有效。
net.ipv4.tcp_keepalive_intvl探测消息未获得响应时,重发该消息的间隔时间(秒)。
net.ipv4.tcp_keepalive_probes在认定TCP连接失效之前,最多发送多少个keepalive探测消息。
net.ipv4.tcp_sack启用有选择的应答(1表示启用),通过有选择地应答乱序接收到的报文来提高性能,让发送者只发送丢失的报文段,(对于广域网通信来说)这个选项应该启用,但是会增加对CPU的占用。
net.ipv4.tcp_fack启用转发应答,可以进行有选择应答(SACK)从而减少拥塞情况的发生,这个选项也应该启用。
net.ipv4.tcp_timestampsTCP时间戳(会在TCP包头增加12B),以一种比重发超时更精确的方法(参考RFC 1323)来启用对RTT的计算,为实现更好的性能应该启用这个选项。
net.ipv4.tcp_window_scaling启用RFC 1323定义的window scaling,要支持超过64KB的TCP窗口,必须启用该值(1表示启用),TCP窗口最大至1GB,TCP连接双方都启用时才生效。
net.ipv4.tcp_syncookies

该参数表示是否打开TCP同步标签(SYN_COOKIES),内核必须开启并编译CONFIG_SYN_COOKIES,SYN_COOKIES可以防止一个套接字在有过多试图连接到达时,引起过载。默认值0表示关闭。
当该参数被设置为1,且SYN_RECV队列满了之后,内核会对SYN包的回复做一定的修改,即在响应的SYN+ACK包中,初始的序列号是由源IP+Port、目的IP+Port及时间这五个参数共同计算出一个值组成精心组装的TCP包。由于ACK包中确认的序列号并不是之前计算出的值,恶意攻击者无法响应或误判,而请求者会根据收到的SYN+ACK包做正确的响应。启用net.ipv4.tcp_syncookies后,会忽略net.ipv4.tcp_max_syn_backlog

net.ipv4.tcp_tw_reuse表示是否允许将处于TIME-WAIT状态的Socket(TIME-WAIT的端口)用于新的TCP连接。
net.ipv4.tcp_tw_recycle能够更快地回收TIME-WAIT套接字。
net.ipv4.tcp_fin_timeout对于本端断开的Socket连接,TCP保持在FIN-WAIT-2状态的时间(秒)。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。
net.ipv4.ip_local_port_range表示TCP/UDP协议允许使用的本地端口号。
net.ipv4.tcp_max_syn_backlog该参数决定了系统中处于SYN_RECV状态的TCP连接数量。SYN_RECV状态指的是当系统收到SYN后,作为SYN+ACK响应后等待对方回复三次握手阶段中的最后一个ACK的阶段。对于还未获得对方确认的连接请求,可保存在队列中的最大数目。如果服务器经常出现过载,可以尝试增加这个数字。默认值大小会受实例内存的影响,默认值最大为2048。
net.ipv4.tcp_low_latency允许TCP/IP栈适应在高吞吐量情况下低延时的情况,这个选项应该禁用。
net.ipv4.tcp_westwood启用发送者端的拥塞控制算法,它可以维护对吞吐量的评估,并试图对带宽的整体利用情况进行优化,对于WAN通信来说应该启用这个选项。
net.ipv4.tcp_bic为快速长距离网络启用Binary Increase Congestion,这样可以更好地利用以GB速度进行操作的链接,对于WAN通信应该启用这个选项。
net.ipv4.tcp_max_tw_buckets该参数设置系统的TIME_WAIT的数量,如果超过默认值则会被立即清除。tcp_max_tw_buckets默认值大小会受实例内存的影响,最大值为262144。
net.ipv4.tcp_synack_retries指明了处于SYN_RECV状态时重传SYN+ACK包的次数。
net.ipv4.tcp_abort_on_overflow设置该参数为1时,当系统在短时间内收到了大量的请求,而相关的应用程序未能处理时,就会发送Reset包直接终止这些链接。建议通过优化应用程序的效率来提高处理能力,而不是简单地Reset。默认值为0。
net.ipv4.route.max_size内核所允许的最大路由数目。
net.ipv4.ip_forward接口间转发报文。
net.ipv4.ip_default_ttl报文可以经过的最大跳数。
net.netfilter.nf_conntrack_tcp_timeout_established在指定之间内,已经建立的连接如果没有活动,则通过iptables进行清除。
net.netfilter.nf_conntrack_max哈希表项最大值。


回答: 2021-12-02 10:13

文档涉及的Linux内核参数说明

文档涉及的Linux内核参数说明如下,可参见以下参数说明进行相关操作。

参数描述
net.core.rmem_default默认的TCP数据接收窗口大小(字节)。
net.core.rmem_max最大的TCP数据接收窗口(字节)。
net.core.wmem_default默认的TCP数据发送窗口大小(字节)。
net.core.wmem_max最大的TCP数据发送窗口(字节)。
net.core.netdev_max_backlog当内核处理速度比网卡接收速度慢时,这部分多出来的包就会被保存在网卡的接收队列上,而该参数说明了这个队列的数量上限。在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
net.core.somaxconn该参数定义了系统中每一个端口最大的监听队列的长度,是个全局参数。该参数和net.ipv4.tcp_max_syn_backlog有关联,后者指的是还在三次握手的半连接的上限,该参数指的是处于ESTABLISHED的数量上限。若您的ECS实例业务负载很高,则有必要调高该参数。listen(2)函数中的参数backlog 同样是指明监听的端口处于ESTABLISHED的数量上限,当backlog大于net.core.somaxconn时,以net.core.somaxconn参数为准。
net.core.optmem_max表示每个套接字所允许的最大缓冲区的大小。
net.ipv4.tcp_mem确定TCP栈应该如何反映内存使用,每个值的单位都是内存页(通常是4KB)。
第一个值是内存使用的下限。
第二个值是内存压力模式开始对缓冲区使用应用压力的上限。
第三个值是内存使用的上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。对于较大的BDP可以增大这些值(其单位是内存页而不是字节)。
net.ipv4.tcp_rmem为自动调优定义Socket使用的内存。
第一个值是为Socket接收缓冲区分配的最少字节数。
第二个值是默认值(该值会被rmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值。
第三个值是接收缓冲区空间的最大字节数(该值会被rmem_max覆盖)。
net.ipv4.tcp_wmem为自动调优定义Socket使用的内存。
第一个值是为Socket发送缓冲区分配的最少字节数。
第二个值是默认值(该值会被wmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值。
第三个值是发送缓冲区空间的最大字节数(该值会被wmem_max覆盖)。
net.ipv4.tcp_keepalive_timeTCP发送keepalive探测消息的间隔时间(秒),用于确认TCP连接是否有效。
net.ipv4.tcp_keepalive_intvl探测消息未获得响应时,重发该消息的间隔时间(秒)。
net.ipv4.tcp_keepalive_probes在认定TCP连接失效之前,最多发送多少个keepalive探测消息。
net.ipv4.tcp_sack启用有选择的应答(1表示启用),通过有选择地应答乱序接收到的报文来提高性能,让发送者只发送丢失的报文段,(对于广域网通信来说)这个选项应该启用,但是会增加对CPU的占用。
net.ipv4.tcp_fack启用转发应答,可以进行有选择应答(SACK)从而减少拥塞情况的发生,这个选项也应该启用。
net.ipv4.tcp_timestampsTCP时间戳(会在TCP包头增加12B),以一种比重发超时更精确的方法(参考RFC 1323)来启用对RTT的计算,为实现更好的性能应该启用这个选项。
net.ipv4.tcp_window_scaling启用RFC 1323定义的window scaling,要支持超过64KB的TCP窗口,必须启用该值(1表示启用),TCP窗口最大至1GB,TCP连接双方都启用时才生效。
net.ipv4.tcp_syncookies

该参数表示是否打开TCP同步标签(SYN_COOKIES),内核必须开启并编译CONFIG_SYN_COOKIES,SYN_COOKIES可以防止一个套接字在有过多试图连接到达时,引起过载。默认值0表示关闭。
当该参数被设置为1,且SYN_RECV队列满了之后,内核会对SYN包的回复做一定的修改,即在响应的SYN+ACK包中,初始的序列号是由源IP+Port、目的IP+Port及时间这五个参数共同计算出一个值组成精心组装的TCP包。由于ACK包中确认的序列号并不是之前计算出的值,恶意攻击者无法响应或误判,而请求者会根据收到的SYN+ACK包做正确的响应。启用net.ipv4.tcp_syncookies后,会忽略net.ipv4.tcp_max_syn_backlog

net.ipv4.tcp_tw_reuse表示是否允许将处于TIME-WAIT状态的Socket(TIME-WAIT的端口)用于新的TCP连接。
net.ipv4.tcp_tw_recycle能够更快地回收TIME-WAIT套接字。
net.ipv4.tcp_fin_timeout对于本端断开的Socket连接,TCP保持在FIN-WAIT-2状态的时间(秒)。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。
net.ipv4.ip_local_port_range表示TCP/UDP协议允许使用的本地端口号。
net.ipv4.tcp_max_syn_backlog该参数决定了系统中处于SYN_RECV状态的TCP连接数量。SYN_RECV状态指的是当系统收到SYN后,作为SYN+ACK响应后等待对方回复三次握手阶段中的最后一个ACK的阶段。对于还未获得对方确认的连接请求,可保存在队列中的最大数目。如果服务器经常出现过载,可以尝试增加这个数字。默认值大小会受实例内存的影响,默认值最大为2048。
net.ipv4.tcp_low_latency允许TCP/IP栈适应在高吞吐量情况下低延时的情况,这个选项应该禁用。
net.ipv4.tcp_westwood启用发送者端的拥塞控制算法,它可以维护对吞吐量的评估,并试图对带宽的整体利用情况进行优化,对于WAN通信来说应该启用这个选项。
net.ipv4.tcp_bic为快速长距离网络启用Binary Increase Congestion,这样可以更好地利用以GB速度进行操作的链接,对于WAN通信应该启用这个选项。
net.ipv4.tcp_max_tw_buckets该参数设置系统的TIME_WAIT的数量,如果超过默认值则会被立即清除。tcp_max_tw_buckets默认值大小会受实例内存的影响,最大值为262144。
net.ipv4.tcp_synack_retries指明了处于SYN_RECV状态时重传SYN+ACK包的次数。
net.ipv4.tcp_abort_on_overflow设置该参数为1时,当系统在短时间内收到了大量的请求,而相关的应用程序未能处理时,就会发送Reset包直接终止这些链接。建议通过优化应用程序的效率来提高处理能力,而不是简单地Reset。默认值为0。
net.ipv4.route.max_size内核所允许的最大路由数目。
net.ipv4.ip_forward接口间转发报文。
net.ipv4.ip_default_ttl报文可以经过的最大跳数。
net.netfilter.nf_conntrack_tcp_timeout_established在指定之间内,已经建立的连接如果没有活动,则通过iptables进行清除。
net.netfilter.nf_conntrack_max哈希表项最大值。


回答: 2021-12-03 17:58

背景信息

批量配置有序名称,支持指定排序和自动排序两种方式。

本文通过四个场景示例,分别介绍通过ECS控制台和API如何配置三台实例的有序实例名称和主机名称。

如果您想直接查看具体的配置规则,请参见名称规则指定排序自动排序

场景一:设置三台实例名称或主机名称按指定排序(ECS控制台)

本场景主要描述在ECS控制台,配置按照指定数值排序的实例名称或者主机名称。其他配置信息,请参见使用向导创建实例

  1. 前往实例创建页

  2. 完成基础配置网络和安全组配置。

    本示例在基础配置页签创建的实例数量为3台。

  3. 系统配置,完成系统配置项。

    实例名称主机名处,输入格式为name_prefix[begin_number,bits]name_suffix的指定排序。指定排序的具体规则,请参见指定排序

    本示例指定名称以k8s-node-开头,从0006开始排序,主机名以-ecshost结尾。将实例名称配置为k8s-node-[6,4],将主机名配置为k8s-node-[6,4]-ecshost。

    说明 本示例仅用于指定排序,此处不勾选有序后缀

  4. 完成分组配置,并确认订单。

    您可以在实例列表查看新增的实例。按照本文示例,生成的实例名分别为k8s-node-0006、k8s-node-0007、k8s-node-0008,生成的主机名分别为k8s-node-0006-ecshost、k8s-node-0007-ecshost、k8s-node-0008-ecshost。

场景二:设置三台实例名称或主机名称自动排序(ECS控制台)

本场景主要描述在ECS控制台,配置自动排序的实例名称或者主机名称。其他配置信息,请参见使用向导创建实例

  1. 前往实例创建页

  2. 完成基础配置网络和安全组

    本示例在基础配置页签创建的实例数量为3台。

  3. 系统配置,完成系统配置项。

    勾选有序后缀,系统会对实例名称主机名自动排序,增加的后缀从001开始,按实例数量依次递增。自动排序的具体规则,请参见自动排序

    本示例将实例名称配置为ecs,将主机名配置为ecshost。

  4. 完成分组配置,并确认订单。

    您可以在实例列表查看新增的实例,按照本文示例,生成的实例名分别为ecs001、ecs002、ecs003,生成的主机名分别为ecshost001、ecshost002、ecshost003。

场景三:设置三台实例名称或主机名称按指定排序(API RunInstances)

以下内容主要描述指定排序名称的参数配置,其他参数信息,请参见RunInstances

InstanceNameHostName指定排序的配置格式为name_prefix[begin_number,bits]name_suffix。指定排序的具体规则,请参见指定排序

本示例创建三台实例,实例名称和主机名称以k8s-node-开头,从0006开始排序,主机名以-ecshost结尾。具体参数配置如下:

  • Amount3

  • InstanceNamek8s-node-[6,4]

  • HostNamek8s-node-[6,4]-ecshost

说明 本示例仅用于指定排序,此处UniqueSuffix保持默认不开启。

按照本文示例,生成的实例名分别为k8s-node-0006、k8s-node-0007、k8s-node-0008,生成的主机名分别为k8s-node-0006-ecshost、k8s-node-0007-ecshost、k8s-node-0008-ecshost。

场景四:设置三台实例名称或主机名称自动排序(API RunInstances)

以下内容主要描述自动排序名称的参数配置,其他参数信息,请参见RunInstances

UniqueSuffix配置为true,系统会对InstanceNameHostName自动排序,增加的后缀从001开始,按实例数量依次递增。自动排序的具体规则,请参见自动排序

本示例创建三台自动排序实例,具体参数配置如下:

  • Amount3

  • InstanceNameecs

  • HostNameecshost

  • UniqueSuffixtrue

按照本文示例,生成的实例名分别为ecs001、ecs002、ecs003,生成的主机名分别为ecshost001、ecshost002、ecshost003。

名称规则

  • 实例名称:长度为2~128个字符,以大小写字母或中文开头,可包含数字、点号(.)、下划线(_)、半角冒号(:)或连字符(-)。

  • 主机名:

    • Windows系统:长度为2~15个字符,允许使用大小写字母、数字或连字符(-)。不能以连字符(-)开头或结尾,不能连续使用连字符(-),也不能仅使用数字。

    • 其他操作系统(Linux等):长度为2~64个字符,允许使用点号(.)分隔字符成多段,每段允许使用大小写字母、数字或连字符(-),但不能连续使用点号(.)或连字符(-)。不能以点号(.)或连字符(-)开头或结尾。

指定排序

参数格式为name_prefix[begin_number,bits]name_suffix

表 1. 参数说明表
字段名称配置说明示例
name_prefix指定实例名称或者主机名称的前缀。

说明 在有序命名规则中,前缀是必选项,否则当作普通名称处理。

k8s-node-
[begin_number,bits]指定实例名称或者主机名称的有序数值。设置后,实例的名称数值会依次递增。
  • begin_number:有序数值的起始值,取值支持[0,999999],默认值为0

  • bits:有序数值所占的位数,取值支持[1,6],默认值为6

注意

  • [begin_number,bits]字段中不能有空格。

  • 当指定的begin_number位数大于bits的取值时,bits默认为6

  • 相同前后缀的实例名称或主机名称最大支持999999台ECS实例。超过部分的ECS实例都使用999999

[0,6]
name_suffix指定实例名称或者主机名称的后缀。-ecshost
表 2. 参数示例表
输入参数示例生成名称(以3台ECS实例为例)
k8s-node-[]-ecshost或k8s-node-[,]-ecshostk8s-node-000000-ecshost、k8s-node-000001-ecshost、k8s-node-000002-ecshost
k8s-node-[99]-ecshost或k8s-node-[99,]-ecshostk8s-node-000099-ecshost、k8s-node-000100-ecshost、k8s-node-000101-ecshost
k8s-node-[99,1]-ecshostk8s-node-000099-ecshost、k8s-node-000100-ecshost、k8s-node-000101-ecshost
k8s-node-[999998]-ecshostk8s-node-999998-ecshost、k8s-node-999999-ecshost、k8s-node-999999-ecshost
k8s-node-[0,4]k8s-node-0000、k8s-node-0001、k8s-node-0002

自动排序

在创建多台实例时,您可以选择开启自动排序功能,为实例名称和主机名称自动添加有序后缀。有序数字后缀从001开始递增,最大不能超过999。

说明 自动排序功能默认关闭。

表 3. 参数示例表
命名格式(实例名称或主机名)输入参数示例生成名称(以3台ECS实例为例)
普通名称ecsecs001、ecs002、ecs003
指定排序name_prefix[begin_number,bits]name_suffixk8s-node-[]-ecshost或k8s-node-[,]-ecshostk8s-node-000000-ecshost001、k8s-node-000001-ecshost002、k8s-node-000002-ecshost003

说明 指定排序和自动排序同时生效。

指定排序name_prefix[begin_number,bits]k8s-node-[0,4]k8s-node-0000、k8s-node-0001、k8s-node-0002

说明 指定排序格式未设置命名后缀name_suffix,自动排序不生效。


我的网名不再改
4楼 · 2021-12-02 14:37

客户端配置 NAT 后仍无法访问 ECS 或 RDS 远端服务器

此处涉及的内核参数:

  • net.ipv4.tcp_tw_recycle

  • net.ipv4.tcp_timestamps

问题现象

客户端配置 NAT 后无法访问远端 ECS、RDS,包括配置了 SNAT 的 VPC ECS 。同时无法访问连接其他 ECS 或 RDS 等云产品,抓包检测发现远端对客户端发送的 SYN 包没有响应。

原因分析

若远端服务器的内核参数 net.ipv4.tcp_tw_recycle 和 net.ipv4.tcp_timestamps 的值都为 1,则远端服务器会检查每一个报文中的时间戳(Timestamp),若 Timestamp 不是递增的关系,不会响应这个报文。配置 NAT 后,远端服务器看到来自不同的客户端的源 IP 相同,但 NAT 前每一台客户端的时间可能会有偏差,报文中的 Timestamp 就不是递增的情况。

解决思路

  • 远端服务器为 ECS 时,修改参数 net.ipv4.tcp_tw_recycle 为 0。

  • 远端服务器为 RDS 等 PaaS 服务时。RDS 无法直接修改内核参数,需要在客户端上修改参数 net.ipv4.tcp_tw_recycle 和 net.ipv4.tcp_timestamps 为 0。

文档涉及的 Linux 内核参数说明

参数说明
net.ipv4.tcp_max_syn_backlog该参数决定了系统中处于 SYN_RECV 状态的 TCP 连接数量。SYN_RECV 状态指的是当系统收到 SYN 后,作了 SYN+ACK 响应后等待对方回复三次握手阶段中的最后一个 ACK 的阶段。
net.ipv4.tcp_syncookies该参数表示是否打开 TCP 同步标签(SYN_COOKIES),内核必须开启并编译 CONFIG_SYN_COOKIES,SYN_COOKIES 可以防止一个套接字在有过多试图连接到达时引起过载。默认值 0 表示关闭。
当该参数被设置为 1 且 SYN_RECV 队列满了之后,内核会对 SYN 包的回复做一定的修改,即,在响应的 SYN+ACK 包中,初始的序列号是由源 IP + Port、目的 IP + Port 及时间这五个参数共同计算出一个值组成精心组装的 TCP 包。由于 ACK 包中确认的序列号并不是之前计算出的值,恶意攻击者无法响应或误判,而请求者会根据收到的 SYN+ACK 包做正确的响应。启用 net.ipv4.tcp_syncookies 后,会忽略 net.ipv4.tcp_max_syn_backlog
net.ipv4.tcp_synack_retries该参数指明了处于 SYN_RECV 状态时重传 SYN+ACK 包的次数。
net.ipv4.tcp_abort_on_overflow设置该参数为 1 时,当系统在短时间内收到了大量的请求,而相关的应用程序未能处理时,就会发送 Reset 包直接终止这些链接。建议通过优化应用程序的效率来提高处理能力,而不是简单地 Reset。
默认值: 0。
net.core.somaxconn该参数定义了系统中每一个端口最大的监听队列的长度,是个全局参数。该参数和 net.ipv4.tcp_max_syn_backlog 有关联,后者指的是还在三次握手的半连接的上限,该参数指的是处于 ESTABLISHED 的数量上限。若您的 ECS 实例业务负载很高,则有必要调高该参数。listen(2) 函数中的参数 backlog 同样是指明监听的端口处于 ESTABLISHED 的数量上限,当 backlog 大于 net.core.somaxconn时,以 net.core.somaxconn 参数为准。
net.core.netdev_max_backlog当内核处理速度比网卡接收速度慢时,这部分多出来的包就会被保存在网卡的接收队列上,而该参数说明了这个队列的数量上限。


Linux 实例中客户端配置 NAT 后仍无法访问 ECS 或 RDS 远端服务器。户端配置 NAT 后无法访问远端 ECS、RDS,包括配置了 SNAT 的 VPC ECS 。同时无法访问连接其他 ECS 或 RDS 等云产品,抓包检测发现远端对客户端发送的 SYN 包没有响应。


希希
6楼 · 2021-12-03 09:00

检查一下是不是配置出现问题,不行的话重装软件试

相关问题推荐

  • 回答 77

    云计算话题太大了,建议学具体点的可落地的,找个培训班摸两月项目比自学找各种杂资料性价比更高

  • 回答 16

    启动kafka:./kafka-server-start.sh ../config/server.properties 1>/dev/null 2>&1 &     # kafka-server-start.sh 脚本在 kafka_2.12-2.2.0/bin路径下查看已创建的topic列表:./kafka-topics.sh --list --zookeeper localhost:2181查......

  • 回答 39

    编程和UI,一个程序向,每天更多的面对满屏幕的代码,对逻辑思维和数学有基本要求。UI设计则是美术向,网站UI、app应用UI和游戏UI要求又不一样(游戏要求更高)。一个好的UI设计师需要具备平面设计,交互设计,手绘等等。...

  • 回答 4

    交换机不分进线和出线,找个接口插上即可。交换机每一端口都可视为独回立的物理网段(注:答非IP网段),连接在其上的网络设备独自享有全部的带宽,无须同其他设备竞争使用。当节点A向节点D发送数据时,节点B可同时向节点C发送数据,而且这两个传输都享有网络...

  • 回答 6
    已采纳

    静态资源和动态资源的概念:静态资源:我的理解是前端的固定页面,这里面包含HTML、CSS、JS、图片等等,不需要查数据库也不需要程序处理,直接就能够显示的页面。具体形式为:客户端发送请求到web服务器,web服务器拿到对应的文件,返回给客户端,客户端解析...

  • 回答 4
    已采纳

    查看进程--方法:ps -aux | grep 'zookeeper'系统有百返回,说明zookeeper启动。linux上进程有5种状态:运行(正在运行或在运行队列中等待);中断度(休眠中, 受阻, 在等待某个条件的形成或接受到信号);不可中断(收到信号不唤醒和不可运行, 进程必须等...

  • 回答 26

    Linux应用领域非常广泛,各个行业都得到了非常好的应用,从目前市场招聘需求量说,IT行业需求最为广泛,对Linux人才需求量也很高,而且Linux云计算入门简单、容易学习,适合零基础,学习之后可以就业领域有很多,涉及岗位广泛。...

  • 回答 6

    容器退出后会处于终止(exited)状态,此时可以通过 docker ps -a 查看,其中数据不会丢失,还可以通过docker start 来启动,只有删除容器才会清除数据。

  • net.core.netdev_max_backl2021-12-13 14:01
    回答 3

    TCP SYN_REVD, ESTABELLISHED 状态对应的队列TCP 建立连接时要经过 3 次握手,在客户端向服务器发起连接时,对于服务器而言,一个完整的连接建立过程,服务器会经历 2 种 TCP 状态:SYN_REVD, ESTABELLISHED对应也会维护两个队列:一个存放 SYN ...

  • 回答 3

    对于一个TCP连接,Server与Client需要通过三次握手来建立网络连接.当三次握手成功后,我们可以看到端口的状态由LISTEN转变为ESTABLISHED,接着这条链路上就可以开始传送数据了.每一个处于监听(Listen)状态的端口,都有自己的监听队列.监听队列的长度,与如下两方...

  • net.ipv4.tcp_abort_on_ove2021-12-09 14:50
    回答 5
    已采纳

    设置该参数为 1 时,当系统在短时间内收到了大量的请求,而相关的应用程序未能处理时,就会发送 Reset 包直接终止这些链接。建议通过优化应用程序的效率来提高处理能力,而不是简单地 Reset。默认值: 0。...

  • 回答 7

    tcp_syncookies是一个开关,是否打开SYN Cookie功能,该功能可以防止部分SYN***。

  • net.ipv4.tcp_max_syn_back2021-12-07 14:32
    回答 7
    已采纳

    该参数决定了系统中处于 SYN_RECV 状态的 TCP 连接数量。SYN_RECV 状态指的是当系统收到 SYN 后,作了 SYN+ACK 响应后等待对方回复三次握手阶段中的最后一个 ACK 的阶段。

  • 回答 10

    首先是我们将鼠标移动到如下图所示的计算机的图标上,点击右键,选择管理。然后我们点击如下图界面中的服务和应用程序。接下来可以看到它下面有一个我们的目标——服务。服务的话它是按字母排列的,我们往下拉,找到Mysql服务。此时可以看到它是一个手动启动...

  • 回答 6

    解决办法:原因是phpmyadmin文件夹不支持777权限,改成:755权限

没有解决我的问题,去提问