Score:0

เหตุใดจึงไม่สามารถใช้ IP ได้โดยตรงเมื่อ IP ที่แมปกับชื่อโฮสต์เมื่อรายการโฮสต์ใช้งานได้

ธง ru

ฉันได้รับ API สำหรับบริการที่ฉันพยายามส่งข้อความโพสต์จากเซิร์ฟเวอร์ A แต่ไม่สามารถสร้างการเชื่อมต่อได้ จากนั้นฉัน ping ชื่อโดเมนใน API มันใช้งานไม่ได้ ดังนั้นฉันคิดว่าชื่อโดเมนนั้นไม่ได้ถูกแมปกับเว็บไซต์แบบสาธารณะ

เพื่อค้นหา IP ของเว็บไซต์ ฉันส่ง Ping ไปที่ไคลเอนต์ B ในอินทราเน็ต จากนั้นฉันใช้ IP ที่แสดงในข้อความเพื่อแทนที่ชื่อโดเมนและลองโพสต์ใหม่ในเซิร์ฟเวอร์ A มันไม่ได้ผล จากนั้นฉันแมป IP กับชื่อโดเมนใน / etc / โฮสต์ เป็นรายการโฮสต์ในเซิร์ฟเวอร์ A และใช้ชื่อโดเมนเป็นโพสต์ uri และใช้งานได้

ฉันสงสัยว่าเหตุใดจึงไม่ทำงานเมื่อฉันแทนที่ชื่อโดเมนด้วยที่อยู่ IP ใน API ใช้งานได้โดยการเพิ่มรายการโฮสต์เท่านั้นหรือไม่

ฉันยังใหม่กับข้อผิดพลาดของเซิร์ฟเวอร์ ดังนั้นหากคำถามนี้ซ้ำกัน (ฉันคิดว่าเป็นไปได้สูง) โปรดแจ้งให้เราทราบ ขอบคุณ.

Patrick Mevzek avatar
cn flag
`ping` แทบจะไม่เคยเป็นเครื่องมือแก้ไขปัญหาที่เกี่ยวข้องเลย หากคุณต้องการแก้ไขชื่อ คุณสามารถใช้ไคลเอนต์ DNS ใดก็ได้ เช่น `dig`, `host` หรือ `nslookup`
dave_thompson_085 avatar
jp flag
หากคุณใช้ `curl` คุณสามารถแทนรายการ `/etc/hosts` (หรือ DNS fiddle อื่นๆ เช่น dnsmasq) ให้ใช้ตัวเลือกบรรทัดคำสั่ง `--resolve`; ดูหน้าคน และสิ่งใดก็ตามที่สร้างบน libcurl สามารถมีตัวเลือกที่คล้ายกันได้
Score:0
ธง in

เว็บเซิร์ฟเวอร์จำนวนมากใช้ชื่อโฮสต์ที่ส่งไปในคำขอเพื่อพิจารณาว่าควรใช้เว็บไซต์ใด สิ่งนี้ทำให้มีหลายไซต์ใน IP เดียวกัน

ใช่ มักจะต้องใช้ชื่อโฮสต์ที่ถูกต้อง

Patrick Mevzek avatar
cn flag
ยิ่งกว่านั้น "แย่กว่านั้น": หากเป็น HTTPS ชื่อโฮสต์จะต้องเป็นที่รู้จักก่อนทราฟฟิก HTTP นั่นคือส่วนขยาย SNI ภายใน TLS handshake เซิร์ฟเวอร์จำเป็นต้องได้รับข้อมูลนี้จากไคลเอนต์เพื่อให้สามารถเปิดเผยใบรับรองที่เหมาะสมได้ หากไม่มี HTTPS จะไม่มีประโยชน์
in flag
@PatrickMevzek จริง เบราว์เซอร์จะส่งชื่อโฮสต์เสมอ (หากเบราว์เซอร์รองรับ SNI และเซิร์ฟเวอร์ร้องขอ) แต่ชื่อโฮสต์ที่ส่งจะเป็นที่อยู่ IP
Patrick Mevzek avatar
cn flag
"แต่ชื่อโฮสต์ที่ส่งจะเป็นที่อยู่ IP â" ไม่ ไม่ใช่ `N` ใน `SNI` หมายถึงชื่อ... ดู §3 ของ RFC6066 มันสะกดชัดเจนว่าส่วนขยายจะต้องเป็น ใช้สำหรับชื่อโฮสต์ ไม่มีอะไรอื่น มันบอกว่า: " ไม่อนุญาตให้ใช้ที่อยู่ IPv4 และ IPv6 ตามตัวอักษรใน " ชื่อโฮสต์ "
Patrick Mevzek avatar
cn flag
และนี่คือเหตุผลง่ายๆ: เซิร์ฟเวอร์ควรรู้อยู่แล้วว่าลูกค้าติดต่อที่อยู่ IP ใด จึงไม่ต้องการให้ไคลเอ็นต์ส่งข้อมูลนี้ในอีกชั้นหนึ่ง ในอีกทางหนึ่ง เซิร์ฟเวอร์ไม่สามารถทราบได้ว่ามีการจำแนกชื่อเพื่อเข้าถึงที่อยู่ IP เฉพาะนั้น ดังนั้นไคลเอนต์จึงต้องส่ง **ชื่อ** ที่อยู่ตอนเริ่มต้นของกระบวนการในส่วนขยาย TLS ในช่วงเริ่มต้นของแฮนด์เชคสำหรับ เซิร์ฟเวอร์เพื่อทำการเลือกตามความเหมาะสม เช่น ใบรับรองใดที่จะนำเสนอ
in flag
ขอบคุณ วันนี้ฉันได้เรียนรู้สิ่งใหม่เกี่ยวกับ SNI ส่วนหัว HTTP/1.1 มาตรฐานยังคงใช้กับโฮสต์โดยที่ส่วนโฮสต์ของ URL ถูกส่งโดยไม่คำนึงถึง ดังนั้น คุณยังสามารถมี vhosts บน IP ได้ (ไม่สมเหตุสมผลนัก แต่เป็นไปได้)
Patrick Mevzek avatar
cn flag
ฉันไม่เคยบอกว่าคุณไม่มีโฮสติ้งเสมือนบนที่อยู่ IP แน่นอน คุณทำได้ โปรดดู https://1.1.1.1/ สำหรับตัวอย่างที่มีชื่อเสียงพร้อมใบรับรองที่ถูกต้องสมบูรณ์ อย่างไรก็ตามสิ่งเหล่านี้เป็นกรณีขอบ (เช่นเดียวกับใบรับรองสำหรับที่อยู่ IP อย่างน้อยในโลก HTTP พวกเขาเป็น "กระแสหลัก" มากกว่าที่อื่นเช่น RPKI) และโดยทั่วไป HTTPS URL ที่มีที่อยู่ IP แทนที่จะเป็นชื่อโฮสต์เป็นความคิดที่ไม่ดี / สัญญาณของ มีปัญหาที่ไหนสักแห่ง (เช่น ภายหลังไม่มีใบรับรองหรือใบรับรองไม่ถูกต้อง ซึ่งควรหยุดไคลเอ็นต์ในการเชื่อมต่อ)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา