เป็นไปได้ไหมที่จะส่ง Ping ไปยังที่อยู่: พอร์ต?


212

ฉันไม่ได้เข้าสู่เครือข่ายและฉันมีคำถามต่อไปนี้ที่เกี่ยวข้องกับคำสั่งping Linux

ฉันสามารถ ping ที่อยู่ได้หรือไม่ ตัวอย่างเช่น:

miner@raspberrypi ~ $ ping onofri.org
PING onofri.org (67.222.36.105) 56(84) bytes of data.
64 bytes from onofri.org (67.222.36.105): icmp_req=1 ttl=47 time=202 ms
64 bytes from onofri.org (67.222.36.105): icmp_req=2 ttl=47 time=206 ms
64 bytes from onofri.org (67.222.36.105): icmp_req=3 ttl=47 time=215 ms

หรือฉันสามารถ ping ที่อยู่: พอร์ตตัวอย่างเช่น: onofri.org:80 ?

ถ้าฉันลองอันนี้มันไม่ทำงาน:

miner@raspberrypi ~ $ ping onofri.org:80
ping: unknown host onofri.org:80

มันเป็นสิ่งที่เป็นไปได้ ping เช่นที่อยู่: พอร์ต ? ถ้าเป็นไปได้เหตุใดฉันจึงไม่ลองทำงาน


8
คุณพยายามทำอะไรให้สำเร็จ การตรวจสอบการทำงานของบริการที่ถูกต้องนั้นคุณจะต้องสอบถามบริการและประเมินการตอบสนอง ตัวอย่างเช่นเว็บเซิร์ฟเวอร์สามารถยอมรับการเชื่อมต่อของคุณ แต่กลับข้อผิดพลาดเนื่องจากการกำหนดค่าผิดพลาด
— Daniel B

5
นั่นเป็นส่วนหนึ่งของสิ่งที่ฉันชอบเกี่ยวกับ Telnet คุณสามารถเชื่อมต่อกับเว็บเซิร์ฟเวอร์และพิมพ์GET /index.html HTTP\1.1และดู 200 การตอบสนอง (หรือรหัสข้อผิดพลาด) พร้อมกับมาร์กอัปผลลัพธ์
— แฟรงค์โธมัส

7
@ Frankthomas HTTP\1.1? จริงๆ?
— glglgl

5
@Navin อาจจะHTTP/1.1...
— glglgl

3
@glglgl; อะไร? คุณไม่เคยแฮ็คที่สแลชควรไปใช่ไหม? แต่คุณถูกต้องควรเป็นเครื่องหมายทับ
— Frank Thomas

คำตอบ:


20

คุณสามารถใช้Papingการทดสอบพอร์ต TCP ข้ามแพลตฟอร์มจำลองการทำงานของ ping (ping พอร์ต)

(โปรดดูGithubในฐานะ code.google.com ได้ถูกคิดค่าเสื่อมราคาแล้ว)

paping -p 80 google.com

8
คำอธิบายบางอย่างเกี่ยวกับสิ่งที่โปรแกรมนี้จะมีประโยชน์
— David Schwartz

16
สำหรับใครก็ตามที่พบคำตอบนี้อย่างที่ฉันเคยทำเพียงเพื่อหา paping ไม่ได้อยู่ในที่เก็บใด ๆ และเป็นรหัสโบราณที่ไม่แม้แต่จะรวบรวมบน ARM - เลื่อนลงไปไกลกว่าคำตอบ 'hping' มันเป็น drop-in ที่สมบูรณ์แบบสำหรับ ping เมื่อคุณต้องการทดสอบพอร์ตและสามารถเข้าถึงได้ง่ายใน repositories ต่างๆ (เช่น Ubuntu, Arch) รวมถึง ARM
— มาร์ค

ฉันจะติดตั้งได้papingอย่างไร ฉันเคยไปที่ repo แล้ว แต่ไม่มีการเผยแพร่ Ah, ไม่เป็นไร .. รหัส google ไม่สามารถเข้าถึงได้สำหรับฉันในเวลานั้น
— Shayan

310

พอร์ตแนวคิดของUDPและTCP ข้อความปิงจะได้ในทางเทคนิคเรียกว่าICMP Echo RequestและICMP Echo Replyซึ่งเป็นส่วนหนึ่งของICMP ICMP, TCP และ UDP คือ "พี่น้อง"; พวกเขาไม่ได้ขึ้นอยู่กับแต่ละอื่น ๆ แต่เป็นสามโปรโตคอลแยกต่างหากที่ทำงานบน IP

ดังนั้นคุณไม่สามารถpingพอร์ต สิ่งที่คุณสามารถnmapทำคือการใช้เครื่องสแกนพอร์ตเช่น

nmap -p 80 onofri.org

นอกจากนี้คุณยังสามารถใช้telnet onofri.org 80ตามคำแนะนำในคำตอบอื่น ๆ (มันจะให้ข้อผิดพลาดหากพอร์ตถูกปิดหรือกรอง)


22
+1 คุณเข้าใจถูกต้อง ICMP ถูกสร้างขึ้นบน IP ซึ่งมีแนวคิดของที่อยู่ IP แต่ไม่ใช่พอร์ต TCP และ UDP นั้นอยู่เหนือ IP และเป็นโปรโตคอลที่เพิ่ม "พอร์ต" ICMP, TCP และ UDP ทั้งหมดอยู่ที่ "ระดับ" เดียวกันในแง่ของโปรโตคอลที่ดำเนินการโดย
— Jason C

14
+1 หลายคนคิดว่าถ้าพวกเขาไม่สามารถ ping สิ่งที่พวกเขาไม่สามารถเชื่อมต่อกับมัน ... แต่อย่างที่คุณพูด ICMP นั้นแตกต่างจาก TCP และ UDP: ถ้าคุณตั้งใจจะให้บริการพูดเว็บเพจบน TCP 80 เกินกว่าที่คุณจะต้องเปิด TCP 80 บนไฟร์วอลล์เท่านั้นไม่มีอะไรอื่น (ดังนั้น Ping ไปยัง IP เดียวกันสามารถ (... ควร!) ถูกบล็อกเป็นต้น)
— Olivier Dulac

6
เพียงเพื่อให้ข้อมูลมีความถูกต้อง ICMP ไม่ใช่โปรโตคอลเลเยอร์การส่งผ่านเช่น TCP หรือ UDP เช่นเดียวกับโปรโตคอลจำนวนมากมันไม่เหมาะกับโมเดลแนวคิดเครือข่ายทั้งหมด แต่โดยทั่วไปถือว่าเป็นโปรโตคอลเลเยอร์เครือข่าย / Internetwork เช่นเดียวกับ IP บางครั้งมันก็ถูกเรียกว่าโปรโตคอล L3.5
— YLearn

2
@BenjiWiebe เห็นด้วย แต่อีกครั้งเพื่อความถูกต้องคำสั่งควรทำซึ่งเป็นเหตุผลที่ฉันเพิ่มมัน สิ่งที่กล่าวมาทั้งหมดนั้นเกี่ยวข้องกับ ICMP, TCP และ UDP ความคิดเห็นที่ได้รับการโหวตสูงสุดแม้จะพูดได้ว่าพวกเขาทั้งหมดนั้นอยู่ในระดับเดียวกัน แม้ว่าสิ่งนี้จะไม่สร้างความแตกต่างให้กับผู้ใช้ทั่วไป แต่ก็มีผู้ใช้ที่ไม่ได้เยี่ยมชมเว็บไซต์นี้เป็นจำนวนมาก
— YLearn

4
@OlivierDulac ฉันไม่ทราบว่าคุณควรบล็อกหรือไม่ เว็บเซิร์ฟเวอร์ส่วนใหญ่ที่ฉันรู้ว่าเปิดทิ้งไว้ ICMP ทำให้อินเทอร์เน็ตดำเนินไปได้ ทำไมคุณถึงต้องการให้คนคิดว่าพวกเขาไม่สามารถติดต่อคุณได้ถ้าพวกเขาทำได้?
— Cruncher

86

ฉันใช้Telnetเนื่องจากมีอยู่ในแพลตฟอร์มจำนวนมากโดยไม่มีการดาวน์โหลดเพิ่มเติม

เพียงใช้คำสั่ง telnet เพื่อเชื่อมต่อกับพอร์ตที่คุณต้องการทดสอบ หากคุณได้รับข้อความด้านล่างหรือข้อความจากบริการของตัวเองแสดงว่าพอร์ตยังมีชีวิตอยู่

Minty16 ~ $ telnet localhost 139
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

หากคุณทราบลำดับคำสั่งสำหรับบริการที่คุณกำลังเชื่อมต่อคุณสามารถพิมพ์คำสั่ง ( HTTP / FTP GETเป็นต้น) และสังเกตการตอบสนองและผลลัพธ์ในเทอร์มินัล สิ่งนี้มีประโยชน์มากสำหรับการทดสอบบริการเนื่องจากจะแสดงข้อมูลข้อผิดพลาดที่ส่งถึงลูกค้าเช่นข้อผิดพลาด HTTP 500

หากคุณได้รับข้อความว่าการเชื่อมต่อถูกปฏิเสธพอร์ตจะถูกปิด

Minty16 ~ $ telnet localhost 5000
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

8
นอกจากนี้หากหน้าจอเป็นสีดำสนิทแสดงว่าคุณกำลังเชื่อมต่อด้วย
— Tensigh

ข้อเสนอแนะที่ยอดเยี่ยม ฉันเคยใช้สิ่งนี้เพื่อทดสอบว่าเว็บเซิร์ฟเวอร์ทำงานเมื่อเว็บเบราว์เซอร์ไม่ใช่ตัวเลือกที่ง่ายหรือไม่
— แบรนดอน

@Brandon ชอบเมื่อ sshing เป็นเครื่องจักร dev ^. ^
— Cruncher

เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ในเบราว์เซอร์นั้นง่ายกว่ามากเพราะพวกเขาจะยังคงส่งส่วนหัวคำขอ HTTP ที่เหมาะสมทั้งหมด แต่คุณสามารถตรวจสอบการตอบสนอง HTTP แบบเต็มได้ จากนั้นอีกครั้งหากคุณต้องการปรับแต่งการร้องขอด้วยเช่นกัน telnet เป็นวิธีที่จะไป
— การแข่งขัน Lightness ใน Orbit

ฉันคิดว่าคำตอบทั้งหมดที่นี่พลาดข้อมูลที่สำคัญที่สุด ในทางเทคนิคแล้วจะไม่สามารถ "ping" พอร์ตดังนี้ได้หรือไม่ คุณสามารถสร้างการเชื่อมต่อ TCP / UDP และนับจำนวนมิลลิวินาทีที่ใช้ในการสร้างการเชื่อมต่อ
— David

47

ใช่ใช้HPingเพื่อทำสิ่งนี้:

$ sudo hping -S -p 80 google.com
HPING google.com (p5p1 77.237.27.37): S set, 40 headers + 0 data bytes
len=46 ip=77.237.27.37 ttl=58 id=25706 sport=80 flags=SA seq=0 win=29200 rtt=7.5 ms
len=46 ip=77.237.27.37 ttl=58 id=25707 sport=80 flags=SA seq=1 win=29200 rtt=7.4 ms
len=46 ip=77.237.27.37 ttl=58 id=25708 sport=80 flags=SA seq=2 win=29200 rtt=8.5 ms
len=46 ip=77.237.27.37 ttl=58 id=25709 sport=80 flags=SA seq=3 win=29200 rtt=7.8 ms
^C
--- google.com hping statistic ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 7.4/7.8/8.5 ms

โปรดทราบว่ามันต้องมีสิทธิ์รูต (หรือความสามารถของ SELinux) เพื่อสร้างแพ็กเก็ต IP ดิบเช่นเดียวกับ ping (ซึ่งเป็นไปได้มากที่ suid บนระบบของคุณ)


3
ฉันหวังว่านี่คือ "คำตอบที่ยอมรับ" hping หาได้ง่ายใน repos หลาย ๆ อันไม่เหมือนกับ paping ซึ่งเป็นรหัส crufty โบราณที่ไม่ได้คอมไพล์บน ARM นอกจากนี้ยังแตกต่างจาก NMAP การที่ haping ส่งคืนรหัสสถานะที่สามารถทดสอบได้ง่ายจากเชลล์สคริปต์ดังนั้นจึงเป็นสิ่งทดแทนที่สมบูรณ์แบบสำหรับการใช้งาน ping ขอบคุณสำหรับคำตอบนี้ความอับอายที่ฉันไม่ได้เลื่อนลงมามากพอที่จะเห็นมันและต้องไปหามันจากเว็บไซต์อื่นแทน
— มาร์ค

ฉันไม่สามารถติดตั้ง hping ใน Ubuntu .. ไม่พบแพคเกจ .. แต่ฉันได้พบhping3มันเหมือนกันhping3หรือไม่ @ d33tah
— Shayan

โอเคฉันพยายามhping3แล้วมันส่ง Ping ไปที่พอร์ตทั้งหมด .. ไม่สำคัญว่าปิดหรือเปิด .. ฉันจะรู้ได้อย่างไรว่าพอร์ตนั้นปิดหรือเปิด?
— Shayan

46

คุณสามารถใช้ netcat เพื่อเชื่อมต่อกับพอร์ตเฉพาะเพื่อดูว่าคุณได้รับการเชื่อมต่อหรือไม่ แฟล็ก -v จะเพิ่ม verbosity เพื่อแสดงว่าพอร์ตเปิดหรือปิด แฟล็ก -z จะทำให้ netcat หยุดทำงานเมื่อมีการเชื่อมต่อ คุณสามารถใช้รหัสออกผ่านทาง $ ได้หรือไม่ เพื่อดูว่ามีการสร้างการเชื่อมต่อหรือไม่

$ nc -zv localhost 22
localhost [127.0.0.1] 22 (ssh) open
$ echo $?
0
$ nc -zv localhost 23
localhost [127.0.0.1] 23 (telnet) : Connection refused
$ echo $?
1

นอกจากนี้คุณสามารถใช้ mtr พร้อมกับแฟล็ก -T สำหรับ tcp และแฟล็ก -P เพื่อระบุพอร์ต สิ่งนี้จะทำสิ่งที่คล้ายกับ traceroute ผ่าน TCP แทนที่จะเป็นเพียง ICMP อย่างไรก็ตามนี่อาจเกินความเป็นจริง

ถอนหายใจ ฉันต้องแก้ไขเพื่อเพิ่มบิตนี้เนื่องจากเราไม่สามารถใส่รหัสในความคิดเห็น Knoppix อาจทำอะไรบางอย่างที่แตกต่างกับเวอร์ชั่นของ netcat แต่นี่คือสิ่งที่ฉันได้จาก Linux Mint

$ date;nc -z -w 1 www.google.com 8000;date
Fri Jun 20 15:55:26 PDT 2014
Fri Jun 20 15:55:27 PDT 2014
$ date;nc -z -w 4 www.google.com 8000;date
Fri Jun 20 15:55:33 PDT 2014
Fri Jun 20 15:55:37 PDT 2014

$ nc -h
[v1.10-40]

ปัญหาคือถ้าคุณลองnc -z www.google.com 8000 มันอาจใช้เวลานาน - 5 วินาทีบวก ถ้าฉันทำ-w 1แล้วมันใช้เวลา 5 วินาที ถ้าฉันทำเช่น-w 3นั้นจะใช้เวลานานกว่า 3 เท่า .. เคอร์เซอร์ 15 กะพริบ 15 วินาที -w 1ถูกกำหนดให้เป็นหนึ่งวินาที แต่ผ่านการทดสอบบน cygwin.,. 5 วินาที มันเร็วมากเมื่อมีเซิร์ฟเวอร์บนพอร์ต แต่จะช้าไปนิดหน่อยเมื่อไม่มี
— barlop

สาปแช่งไม่มีการขึ้นบรรทัดใหม่ในความคิดเห็น ... ดูเหมือนว่าจะเป็นข้อผิดพลาดกับ cygwin การทดสอบกับ linux Mint แสดงให้เห็นถึงความล่าช้าอย่างไรก็ตามระบุไว้หลายวินาที วิ่งเพื่อทดสอบ: date; nc-zw5 www.google.com 8000; date
— Falsenames

ฉันยังโหวตขึ้น @BenjiWiebe ด้วยคำขอ nmap NC ง่ายกว่าที่จะใส่ลงในสคริปต์ แต่จะง่ายกว่ามากเมื่อใช้ nmap แบบเห็นภาพ
— Falsenames

ลองเป็น knoppix nc -zv -w 1 www.google.com คุณจะทำให้ลองได้ครั้งเดียวได้อย่างไร เมื่อฉันลองใช้มันใช่ -w 1 ใช้ได้ แต่ทุก ๆ วินาทีมันจะลองจนกว่าฉันจะกด Ctrl-C
— barlop

ไม่แน่ใจว่า 'nc -zv -w 1 รุ่น Knoppix www.google.com 80' กำลังทำอะไร ใช้งานได้ดีกับระบบของฉันค้นหาหนึ่งครั้งและลดลงเหมือน -z ควรทำ นอกจากนี้หากไม่มีหมายเลขพอร์ตที่ระบุไว้ Mine ก็ไม่สามารถระบุได้ว่าไม่มีพอร์ตที่ระบุ
— Falsenames

18

คุณสามารถใช้nping(ส่วนหนึ่งของnmap):

$ nping -p 80 localhost

Starting Nping 0.6.00 ( http://nmap.org/nping ) at 2014-06-23 11:57 CEST
SENT (0.0015s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (0.0016s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (1.0027s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (1.0027s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (2.0038s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (2.0039s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (3.0050s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (3.0050s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (4.0061s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (4.0062s) Handshake with localhost:80 (127.0.0.1:80) completed

Max rtt: 0.032ms | Min rtt: 0.008ms | Avg rtt: 0.012ms
TCP connection attempts: 5 | Successful connections: 5 | Failed: 0 (0.00%)
Tx time: 4.00575s | Tx bytes/s: 99.86 | Tx pkts/s: 1.25
Rx time: 4.00575s | Rx bytes/s: 49.93 | Rx pkts/s: 1.25
Nping done: 1 IP address pinged in 4.01 seconds

6
nping --tcp -p 80 localhost
— K-Gun

ฉันทดสอบพอร์ตใด ๆ (พอร์ตที่ไม่ได้เปิด) และฉันยังคงได้รับการจับสองครั้งตลอดเวลา ...
— Shayan

8

คุณสามารถทำสิ่งนี้ได้ในเชลล์โดยใช้ Python ในการซับแบบสั้น ๆ :

$ portping() { python <<<"import socket; socket.setdefaulttimeout(1); socket.socket().connect(('$1', $2))" 2> /dev/null && echo OPEN || echo CLOSED; }
$ portping 8.8.8.8 54
CLOSED
$ portping 8.8.8.8 53
OPEN

7

เพียงเพื่อการอ้างอิงต้องการแบ่งปันโพสต์โดย Vivek Gite: https://www.cyberciti.biz/faq/ping-test-a-specific-port-of-machine-ip-address-using-linux-unix/# แสดงความคิดเห็น-920398

เขาแสดงวิธีการต่าง ๆ ซึ่งบางส่วนถูกโพสต์แล้วที่นี่ แต่สิ่งที่น่าประหลาดใจที่สุดสำหรับฉันคือไม่มีอะไรมากไปกว่าbash:

(echo >/dev/tcp/{host}/{port}) &>/dev/null && echo "opened" || echo "closed"
(echo >/dev/udp/{host}/{port}) &>/dev/null && echo "opened" || echo "closed"
(echo >/dev/tcp/www.cyberciti.biz/22) &>/dev/null && echo "Opened 22" || echo "Closed 22"
(echo >/dev/tcp/www.cyberciti.biz/443) &>/dev/null && echo "Opened 443" || echo "Closed 443"

หรือรุ่นที่ง่ายมาก: เพียงดูผลลัพธ์ของรูปแบบคำสั่งต่อไปนี้:

echo >/dev/{tcp|udp}/{host}/{port}

มีประโยชน์เมื่อทำงานกับภาชนะบรรจุนักเทียบท่าแบบสุ่ม


looking at the output- ตรวจสอบรหัสส่งคืน$?เท่านั้นที่จะเป็นประโยชน์ นอกจากนี้ยังแขวนอยู่บนพอร์ตปิดอาจจะหมดเวลาบางส่วนสามารถกำหนดค่าได้ทุกที่ ...
— vp_arth

วิธีนี้ดูเรียบร้อย แต่echo >/dev/tcp/{hostname}/{portnumber}จะไม่เสร็จสิ้นเมื่อปิดพอร์ต และecho >/dev/tcp/{hostname}/{portnumber}ไม่แสดงอะไรเลยแม้ว่าพอร์ตจะเปิดอยู่และฉันสามารถดูได้จากเบราว์เซอร์
— miguelmorin

สวัสดีคุณ mmorin คุณใช้ระบบปฏิบัติการอะไร บน Ubuntu มันจะทำงานตามที่คาด: Connection refusedถ้าพอร์ตถูกปิดฉันได้รับ มิฉะนั้นจะไม่แสดงอะไรเลยและecho $?แสดงรหัสออก1
— Jacek

3

ฉันเพิ่มwatchเครื่องมือที่นี่:

watch nmap -p22,80 google.com

Every 2,0s: nmap -p22,80 google.com   Mon Jun 15 16:46:33 2015

Starting Nmap 6.40 ( http://nmap.org ) at 2015-06-15 16:46 NOVT
Nmap scan report for google.com (127.0.0.1)
Host is up (0.0012s latency).
rDNS record for 127.0.0.1: google.com
PORT     STATE  SERVICE
22/tcp open   ssh
80/tcp closed http

Nmap done: 1 IP address (1 host up) scanned in 0.18 seconds

3

มันง่ายด้วย nmap

ตัวอย่าง:

#sintaxis
nmap -p [port] hostName
#first is command, after scan ports, type port - port or range ports, and ip or name of website...

## Scan port 80
nmap -p 80 onofri.org

## Scan TCP port 80
nmap -p T:80 onofri.org

## Scan UDP port 53
nmap -p U:53 onofri.org

## Scan two ports ##
nmap -p 80,443 onofri.org

## Scan port ranges ##
nmap -p 80-200 onofri.org

## Combine all options ##
nmap -p U:53,111,137,T:21-25,80,139,8080 onofri.org
nmap -p U:53,111,137,T:21-25,80,139,8080 server1.cyberciti.biz
nmap -v -sU -sT -p U:53,111,137,T:21-25,80,139,8080 onofri.org

## Scan all ports with * wildcard ##
nmap -p "*" 192.168.1.1

## Scan top ports i.e. scan $number most common ports ##
nmap --top-ports 5 onofri.org
nmap --top-ports 10 onofri.org

สำหรับข้อมูลเพิ่มเติมดูที่:

พิมพ์ในบรรทัดคำสั่งนี้: man nmap

http://www.cyberciti.biz/networking/nmap-command-examples-tutorials/ http://www.tecmint.com/nmap-command-examples/


1

คุณกำลังพยายามทดสอบการสื่อสารหรือรับการตอบสนองจากพอร์ต 80 บนโหนดนั้นหรือไม่? PINGจะพยายามสร้างการสื่อสารไปยังโฮสต์เฉพาะผ่าน ICMP ซึ่งไม่มีส่วนเกี่ยวข้องกับพอร์ต

ลองใช้http://nmap.org/แทนเพื่อตรวจสอบข้อมูลพอร์ตและทดสอบการสื่อสาร:

nmap -v -p 80 onofri.org

1
ไม่แน่ใจว่าคุณใช้ nmap เวอร์ชันใดอยู่ ในระบบของฉันมันต้องใช้ -v และ -p เพื่อแยกเช่น 'nmap -v -p 80 onofri.org' นี่เป็นเพราะ -v และ -vv หมายถึงสิ่งที่แตกต่างกัน -v ใช้ v มากขึ้นเป็นอาร์กิวเมนต์
— Falsenames
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.