Linux基礎的調優及安全設置

基礎的調優及安全設置。

a簡單優化Linux

1、關閉Selinux

[root@moban selinux]#cd /etc/selinux/

[root@moban selinux]# sed -i s#SELINUX=enforcing#SELINUX=disabled#g config

[root@moban selinux]# cat config

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#     enforcing - SELinux security policy is enforced.

#     permissive - SELinux prints warnings instead of enforcing.

#     disabled - No SELinux policy is loaded.

SELINUX=disabled

# SELINUXTYPE= can take one of these two values:

#     targeted - Targeted processes are protected,

#     mls - Multi Level Security protection.

SELINUXTYPE=targeted

必須重啓系統,配置文件纔會則永久生效

方法一:臨時生效

[root@moban selinux]# getenforce

Enforcing

[root@moban selinux]# setenforce 0  臨時生效的命令

[root@moban selinux]# getenforce   查看selinux當前的狀態

Permissive

 

查看linux的啓動模式

[root@moban selinux]# cat /etc/inittab

#   0 - halt (Do NOT set initdefault to this) 關機模式

#   1 - Single user mode 單用戶模式  用於修復改密碼

#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)多用戶模式

#   3 - Full multiuser mode  命令行模式

#   4 - unused 沒有使用

#   5 - X11 桌面模式

#   6 - reboot (Do NOT set initdefault to this)  重啓模式

命令總結:

runlevel 查看當前系統的運行級別

init 切換系統運行級別

 

Linux開機啓動程序

[root@X1 ~]#chkconfig –list查看所有開機啓動程序狀態

篩選需要開機啓動的程序,然後關閉未篩選的程序做off動作

[root@X1 ~]# for oldboy in `chkconfig --list|grep "3:on"|awk '{print $1}'|grep -vE "crond|network|sshd|rsyslog"`;do chkconfig $oldboy off;done

查看開機啓動的程序

[root@X1 ~]# chkconfig --list |grep "3:on"

crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off

network         0:off   1:off   2:on    3:on    4:on    5:on    6:off

rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off

sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off

 

grep –E 過濾多個字符串 –i 過濾不區分大小寫

 

設置ssh服務

注意:更改前先備份

cp sshd_config sshd_config.ori

ssh服務的配置文檔

vi /etc/ssh/sshd_config    編輯sshd_config 

####byoldboy#2011-11-24##  

Port 52113                  ssh鏈接默認的端口必須改

PermitRootLogin no           root用戶***都知道,禁止root遠程登錄

PermitEmptyPasswords no     禁止空密碼登錄

UseDNS no                  不使用DNS

GSSAPIAuthentication no

####byoldboy#2011-11-24##

[root@X1 ssh]# /etc/init.d/sshd restart 重啓生效

/etc/init.d/iptables stop             關閉防火牆才能ssh進入

 

netstat –an  查看遠程連接記錄

 

給普通用戶設置權限

 給oldboy用戶添加用戶的權限

[root@X1 ~]# visudo

root    ALL=(ALL)       ALL       99

oldboy  ALL=(ALL)       /usr/sbin/useradd  給oldboy用戶 添加用戶的權限,如果添加多條權限用,隔開

[oldboy@X1 ~]$ sudo useradd qqq 

We trust you have received the usual lecture from the local System

Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.

    #2) Think before you type.

    #3) With great power comes great responsibility.

[sudo] password for oldboy:(oldboy的密碼)

 

[oldboy@X1 ~]$ tail -1 /etc/passwd   

kkk:x:501:502::/home/kkk:/bin/bash

 

 

oldboy用戶權限與root權限一樣

[root@X1 ~]# visudo

oldboy  ALL=(ALL)       NOPASSWD: ALL

 

[oldboy@X1 ~]$sudo –l  查看自己的權限

 

Linux系統的時間同步方法

臨時更改時間

[root@X1 ~]# /usr/sbin/ntpdate time.nist.gov

 7 Jul 16:20:03 ntpdate[38542]: step time server 132.163.4.101 offset 110091.858651 sec

永久更新時間,每五分鐘同步一次

echo 'time sync by oldboy at 2016-7-7' >>/var/spool/cron/root

[root@X1 ~]# echo '*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/unll 2>&1' >>/var/ >>/var/spool/cron/root

 [root@X1 ~]# crontab -l

*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/unll 2>&1

time sync by oldboy at 2016-7-7

ntp服務器的配置  自己找

 

加大服務器的文件描述符

文件描述符說明:

文件描述符在形式上是一個非負整數。實際上,它是一個索引值,指向內核爲每一個進程所維護的該進程打開文件的記錄表。    32768

臨時更改,但是重新登錄就沒有了。

[root@X1 ~]# ulimit -n

1024

[root@X1 ~]# ulimit -HSn 65535

[root@X1 ~]# ulimit -n

65535

永久生效

[root@X1 ~]# echo '*             -         nofile             65535'>>/etc/security/limits.conf

 [root@X1 ~]# ulimit -n

1024

[root@X1 ~]# logout

[oldboy@X1 ~]$ su - root

Password:

[root@X1 ~]# ulimit -n

65535

 

調整內核參數文件/etc/sysctl.conf

對於新部署的機器,需要做一些基本的調優操作,以更改一些默認配置帶來的性能問題

1 修改打開文件數                                      本地鏈接:內核參數的優化

vim /etc/security/limits.conf 

*               soft nofile          65535

*               soft nproc           65535

*                hard nofile         65535

*                hard nproc          65535

cd /etc/security/limits.d/

 vim 90-nofile.conf

* soft nofile 65535

* hard nofile 65535

root soft nofile unlimited

老男孩優化詳解:http://oldboy.blog.51cto.com/2561410/1336488

2 內核方面的調優

cat /etc/sysctl.conf 

#by sun in 20131001

net.ipv4.tcp_fin_timeout = 2

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_keepalive_time =600

net.ipv4.ip_local_port_range = 4000    65000

net.ipv4.tcp_max_syn_backlog = 16384

net.ipv4.tcp_max_tw_buckets = 36000

net.ipv4.route.gc_timeout = 100

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_synack_retries = 1

net.core.somaxconn = 16384

net.core.netdev_max_backlog = 16384

net.ipv4.tcp_max_orphans = 16384

以下參數是對iptables防火牆的優化,防火牆不開會有提示,可以忽略不理。

net.nf_conntrack_max = 25000000

net.netfilter.nf_conntrack_max = 25000000

net.netfilter.nf_conntrack_tcp_timeout_established = 180

net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120

net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60

net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

 [root@X1 ~]# sysctl  -p                使配置生效

修改完畢後,重啓新機器即可。

對參數的解析

下列文件所在目錄:/proc/sys/net/ipv4/

名稱

默認值

建議值

描述

tcp_syn_retries

5

1

對於一個新建連接,內核要發送多少個 SYN 連接請求才決定放棄。不應該大於255,默認值是5,對應於180秒左右時間。。(對於大負載而物理通信良好的網絡而言,這個值偏高,可修改爲2.這個值僅僅是針對對外的連接,對進來的連接,是由tcp_retries1決定的)

tcp_synack_retries

5

1

對於遠端的連接請求SYN,內核會發送SYN  ACK數據報,以確認收到上一個 SYN連接請求包。這是所謂的三次握手( threeway handshake)機制的第二個步驟。這裏決定內核在放棄連接之前所送出的 SYN+ACK 數目。不應該大於255,默認值是5,對應於180秒左右時間。

tcp_keepalive_time

7200

600

TCP發送keepalive探測消息的間隔時間(秒),用於確認TCP連接是否有效。

防止兩邊建立連接但不發送數據的***。

tcp_keepalive_probes

9

3

TCP發送keepalive探測消息的間隔時間(秒),用於確認TCP連接是否有效。

tcp_keepalive_intvl

75

15

探測消息未獲得響應時,重發該消息的間隔時間(秒)。默認值爲75秒。 (對於普通應用來說,這個值有一些偏大,可以根據需要改小.特別是web類服務器需要改小該值,15是個比較合適的值)

tcp_retries1

3

3

放棄迴應一個TCP連接請求前﹐需要進行多少次重試。RFC規定最低的數值是3

tcp_retries2

15

5

在丟棄激活(已建立通訊狀況)TCP連接之前﹐需要進行多少次重試。默認值爲15,根據RTO的值來決定,相當於13-30分鐘(RFC1122規定,必須大於100).(這個值根據目前的網絡設置,可以適當地改小,我的網絡內修改爲了5)

tcp_orphan_retries

7

3

在近端丟棄TCP連接之前﹐要進行多少次重試。默認值是7個﹐相當於 50 - 16分鐘﹐視 RTO 而定。如果您的系統是負載很大的web服務器﹐那麼也許需要降低該值﹐這類 sockets 可能會耗費大量的資源。另外參的考tcp_max_orphans(事實上做NAT的時候,降低該值也是好處顯著的,我本人的網絡環境中降低該值爲3)

tcp_fin_timeout

60

2

對於本端斷開的socket連接,TCP保持在FIN-WAIT-2狀態的時間。對方可能會斷開連接或一直不結束連接或不可預料的進程死亡。默認值爲 60 秒。

tcp_max_tw_buckets

180000

36000

系統在同時所處理的最大 timewait sockets 數目。如果超過此數的話﹐time-wait socket 會被立即砍除並且顯示警告信息。之所以要設定這個限制﹐純粹爲了抵禦那些簡單的 DoS ***﹐不過﹐如果網絡條件需要比默認值更多﹐則可以提高它(或許還要增加內存)(事實上做NAT的時候最好可以適當地增加該值)

tcp_tw_recycle

0

1

打開快速 TIME-WAIT sockets 回收。除非得到技術專家的建議或要求﹐請不要隨意修改這個值。(NAT的時候,建議打開它)

tcp_tw_reuse

0

1

表示是否允許重新應用處於TIME-WAIT狀態的socket用於新的TCP連接(這個對快速重啓動某些服務,而啓動後提示端口已經被使用的情形非常有幫助)

tcp_max_orphans

8192

32768

系統所能處理不屬於任何進程的TCP sockets最大數量。假如超過這個數量﹐那麼不屬於任何進程的連接會被立即reset,並同時顯示警告信息。之所以要設定這個限制﹐純粹爲了抵禦那些簡單的 DoS ***﹐千萬不要依賴這個或是人爲的降低這個限制。如果內存大更應該增加這個值。(這個值Redhat AS版本中設置爲32768,但是很多防火牆修改的時候,建議該值修改爲2000)

tcp_abort_on_overflow

0

0

當守護進程太忙而不能接受新的連接,就象對方發送reset消息,默認值是false。這意味着當溢出的原因是因爲一個偶然的猝發,那麼連接將恢復狀態。只有在你確信守護進程真的不能完成連接請求時纔打開該選項,該選項會影響客戶的使用。(對待已經滿載的sendmail,apache這類服務的時候,這個可以很快讓客戶端終止連接,可以給予服務程序處理已有連接的緩衝機會,所以很多防火牆上推薦打開它)

tcp_syncookies

0

1

只有在內核編譯時選擇了CONFIG_SYNCOOKIES時纔會發生作用。當出現syn等候隊列出現溢出時象對方發送syncookies。目的是爲了防止syn flood***。

tcp_stdurg

0

0

使用 TCP urg pointer 字段中的主機請求解釋功能。大部份的主機都使用老舊的 BSD解釋,因此如果您在 Linux打開它﹐或會導致不能和它們正確溝通。

tcp_max_syn_backlog

1024

16384

對於那些依然還未獲得客戶端確認的連接請求﹐需要保存在隊列中最大數目。對於超過 128Mb 內存的系統﹐默認值是 1024 ﹐低於 128Mb 的則爲 128。如果服務器經常出現過載﹐可以嘗試增加這個數字。警告﹗假如您將此值設爲大於 1024﹐最好修改include/net/tcp.h裏面的TCP_SYNQ_HSIZE﹐以保持TCP_SYNQ_HSIZE*16(SYN Flood***利用TCP協議散佈握手的缺陷,僞造虛假源IP地址發送大量TCP-SYN半打開連接到目標系統,最終導致目標系統Socket隊列資源耗盡而無法接受新的連接。爲了應付這種***,現代Unix系統中普遍採用多連接隊列處理的方式來緩衝(而不是解決)這種***,是用一個基本隊列處理正常的完全連接應用(Connect()Accept() ),是用另一個隊列單獨存放半打開連接。這種雙隊列處理方式和其他一些系統內核措施(例如Syn-Cookies/Caches)聯合應用時,能夠比較有效的緩解小規模的SYN Flood***(事實證明)

tcp_window_scaling

1

1

該文件表示設置tcp/ip會話的滑動窗口大小是否可變。參數值爲布爾值,爲1時表示可變,爲0時表示不可變。tcp/ip通常使用的窗口最大可達到 65535 字節,對於高速網絡,該值可能太小,這時候如果啓用了該功能,可以使tcp/ip滑動窗口大小增大數個數量級,從而提高數據傳輸的能力(RFC 1323)。(對普通地百M網絡而言,關閉會降低開銷,所以如果不是高速網絡,可以考慮設置爲0

tcp_timestamps

1

1

Timestamps 用在其它一些東西中﹐可以防範那些僞造的sequence 號碼。一條1G的寬帶線路或許會重遇到帶 out-of-line數值的舊sequence 號碼(假如它是由於上次產生的)Timestamp 會讓它知道這是個 '舊封包'(該文件表示是否啓用以一種比超時重發更精確的方法(RFC 1323)來啓用對 RTT 的計算;爲了實現更好的性能應該啓用這個選項。)

tcp_sack

1

1

使用 Selective ACK﹐它可以用來查找特定的遺失的數據報--- 因此有助於快速恢復狀態。該文件表示是否啓用有選擇的應答(Selective Acknowledgment),這可以通過有選擇地應答亂序接收到的報文來提高性能(這樣可以讓發送者只發送丟失的報文段)。(對於廣域網通信來說這個選項應該啓用,但是這會增加對 CPU 的佔用。)

tcp_fack

1

1

打開FACK擁塞避免和快速重傳功能。(注意,當tcp_sack設置爲0的時候,這個值即使設置爲1也無效)[這個是TCP連接靠譜的核心功能]

tcp_dsack

1

1

允許TCP發送"兩個完全相同"SACK

tcp_ecn

0

0

TCP的直接擁塞通告功能。

tcp_reordering

3

6

TCP流中重排序的數據報最大數量。 (一般有看到推薦把這個數值略微調整大一些,比如5)

tcp_retrans_collapse

1

0

對於某些有bug的打印機提供針對其bug的兼容性。(一般不需要這個支持,可以關閉它)

tcp_wmemmindefaultmax

4096

16384

131072

8192

131072

16777216

發送緩存設置

min:爲TCP socket預留用於發送緩衝的內存最小值。每個tcp socket都可以在建議以後都可以使用它。默認值爲4096(4K)

default:爲TCP socket預留用於發送緩衝的內存數量,默認情況下該值會影響其它協議使用的net.core.wmem_default 值,一般要低於net.core.wmem_default的值。默認值爲16384(16K)

max: 用於TCP socket發送緩衝的內存最大值。該值不會影響net.core.wmem_max"靜態"選擇參數SO_SNDBUF則不受該值影響。默認值爲131072(128K)。(對於服務器而言,增加這個參數的值對於發送數據很有幫助,在我的網絡環境中,修改爲了51200 131072 204800

tcp_rmemmindefaultmax

4096

87380

174760

32768

131072

16777216

接收緩存設置

tcp_wmem

tcp_memmindefaultmax

根據內存計算

786432

1048576 1572864

low:當TCP使用了低於該值的內存頁面數時,TCP不會考慮釋放內存。即低於此值沒有內存壓力。(理想情況下,這個值應與指定給 tcp_wmem 的第 2 個值相匹配 - 這第 2 個值表明,最大頁面大小乘以最大併發請求數除以頁大小 (131072 * 300 / 4096) )

pressure:當TCP使用了超過該值的內存頁面數量時,TCP試圖穩定其內存使用,進入pressure模式,當內存消耗低於low值時則退出pressure狀態。(理想情況下這個值應該是 TCP 可以使用的總緩衝區大小的最大值 (204800 * 300 / 4096) )

high:允許所有tcp sockets用於排隊緩衝數據報的頁面量。(如果超過這個值,TCP 連接將被拒絕,這就是爲什麼不要令其過於保守 (512000 * 300 / 4096) 的原因了。在這種情況下,提供的價值很大,它能處理很多連接,是所預期的 2.5 倍;或者使現有連接能夠傳輸 2.5 倍的數據。我的網絡裏爲192000 300000 732000)

一般情況下這些值是在系統啓動時根據系統內存數量計算得到的。

tcp_app_win

31

31

保留max(window/2^tcp_app_win, mss)數量的窗口由於應用緩衝。當爲0時表示不需要緩衝。

tcp_adv_win_scale

2

2

計算緩衝開銷bytes/2^tcp_adv_win_scale(如果tcp_adv_win_scale > 0)或者bytes-bytes/2^(-tcp_adv_win_scale)(如果tcp_adv_win_scale BOOLEAN>0)

tcp_low_latency

0

0

允許 TCP/IP 棧適應在高吞吐量情況下低延時的情況;這個選項一般情形是的禁用。(但在構建Beowulf 集羣的時候,打開它很有幫助)

tcp_westwood

0

0

啓用發送者端的擁塞控制算法,它可以維護對吞吐量的評估,並試圖對帶寬的整體利用情況進行優化;對於 WAN通信來說應該啓用這個選項。

tcp_bic

0

0

爲快速長距離網絡啓用 Binary Increase Congestion;這樣可以更好地利用以 GB 速度進行操作的鏈接;對於WAN 通信應該啓用這個選項。

ip_forward

0

NAT必須開啓IP轉發支持,把該值寫1

ip_local_port_range:minmax

32768

61000

1024

65000

表示用於向外連接的端口範圍,默認比較小,這個範圍同樣會間接用於NAT表規模。

ip_conntrack_max

65535

65535

系統支持的最大ipv4連接數,默認65536(事實上這也是理論最大值),同時這個值和你的內存大小有關,如果內存128M,這個值最大81921G以上內存這個值都是默認65536

 

所處目錄/proc/sys/net/ipv4/netfilter/

文件需要打開防火牆纔會存在

名稱

默認值

建議值

描述

ip_conntrack_max

65536

65536

系統支持的最大ipv4連接數,默認65536(事實上這也是理論最大值),同時這個值和你的內存大小有關,如果內存128M,這個值最大81921G以上內存這個值都是默認65536,這個值受/proc/sys/net/ipv4/ip_conntrack_max限制

 

ip_conntrack_tcp_timeout_established

432000

180

已建立的tcp連接的超時時間,默認432000,也就是5天。影響:這個值過大將導致一些可能已經不用的連接常駐於內存中,佔用大量鏈接資源,從而可能導致NAT ip_conntrack: table full的問題。建議:對於NAT負載相對本機的 NAT表大小很緊張的時候,可能需要考慮縮小這個值,以儘早清除連接,保證有可用的連接資源;如果不緊張,不必修改

ip_conntrack_tcp_timeout_time_wait

120

120

time_wait狀態超時時間,超過該時間就清除該連接

ip_conntrack_tcp_timeout_close_wait

60

60

close_wait狀態超時時間,超過該時間就清除該連接

ip_conntrack_tcp_timeout_fin_wait

120

120

fin_wait狀態超時時間,超過該時間就清除該連接

 

文件所處目錄/proc/sys/net/core/

 

名稱

默認值

建議值

描述

netdev_max_backlog

 

1024

16384

每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目,對重負載服務器而言,該值需要調高一點。

somaxconn 

 

128

16384

用來限制監聽(LISTEN)隊列最大數據包的數量,超過這個數量就會導致鏈接超時或者觸發重傳機制。

web應用中listen函數的backlog默認會給我們內核參數的net.core.somaxconn限制到128,而nginx定義的NGX_LISTEN_BACKLOG默認爲511,所以有必要調整這個值。對繁忙的服務器,增加該值有助於網絡性能

wmem_default

 

129024

129024

默認的發送窗口大小(以字節爲單位)

rmem_default

 

129024

129024

默認的接收窗口大小(以字節爲單位)

rmem_max

 

129024

873200

最大的TCP數據接收緩衝

wmem_max

129024

873200

最大的TCP數據發送緩衝

參考文獻

http://yangrong.blog.51cto.com/6945369/1321594

http://www.cnblogs.com/nickleback/articles/3492131.html

http://www.cnblogs.com/LMySQL/p/4673931.html

 

本系列博文完整內容共5篇(網絡狀態),非常重要

第一篇:詳解linux netstat輸出的網絡連接狀態信息

http://oldboy.blog.51cto.com/2561410/1184139

第二篇:庖丁解牛獲取連接狀態數的awk數組命令

http://oldboy.blog.51cto.com/2561410/1184165

第三篇:awk數組命令經典生產實戰應用拓展

http://oldboy.blog.51cto.com/2561410/1184177

第四篇:老男孩培訓第八節課前awk考試題案例(門戶面試題解答)

http://oldboy.blog.51cto.com/2561410/1184206

第五篇:linux生產服務器有關網絡狀態的優化措施

http://oldboy.blog.51cto.com/2561410/1184228

 

 

磁盤空間

[root@X1 ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3       9.6G  2.0G  7.1G  22% /

tmpfs           1.2G     0  1.2G   0% /dev/shm

/dev/sda1       194M   34M  151M  19% /boot

[root@X1 ~]# df -hi

Filesystem     Inodes IUsed IFree IUse% Mounted on

/dev/sda3        620K   78K  542K   13% /

tmpfs            292K     1  292K    1% /dev/shm

/dev/sda1         50K    39   50K    1% /boot

-h實際的物理空間

Size 總共的空間

Avail可用空間

/dev/sda3   IUse%如果滿了 就是可能就是/var/spool/clientmqueue/sendmail文件太多,它是郵件服務郵件臨時存放點。

隱藏系統版本

[root@X1 ~]# cat /etc/issue

CentOS release 6.5 (Final)

Kernel \r on an \m

[root@X1 ~]# >/etc/issue

鎖定關鍵的系統文件

[root@X1 ~]# chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab

/etc/passwd   用戶文件

/etc/shadow   用戶密碼文件

/etc/group     用戶組文件

/etc/gshadow  組的密碼文件

/etc/inittab    開機啓動的文件

[root@X1 ~]# chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab

解鎖關鍵的系統文件

 

Linux基礎優化回顧內容:小結

01)不用root添加普通用戶,通過sudo授權管理。

02)更改默認的遠程連接ssh服務端口及禁止root用戶遠程連接

03)定時自動更新服務器時間

04)配置yum更新源,從國內更新源下載安裝rpm

05)關閉selinuxiptablesiptables工作場景如有wan ip一般要打開,高併發除外)

06)調整文價你描述符的數量,進程及文件的打開都會消耗文件描述符

07)定時自動清理/var/spool/clientmquene/目錄垃圾文件,防止inodes節點被佔滿(SentOS6.4以上版本默認有sendmail,因此可以不配)

08)簡開機自啓動服務(crondsshdnetworkrsyslogsyslog 5.8版本)

09)Linux內核參數優化/etc/sysctl.conf,   執行sysctl –p 生效

10)更改字符集,支持中文,但建議還是英文字符集,防止亂碼問題

11)鎖定關鍵系統文件

[root@X1 ~]# chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab

12)清空/etc/issue,去除系統及內核版本登錄前的屏幕顯示

更多優化細節參見:http://oldboy.blog.51cto.com/2561410/988726

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章