เปลี่ยนเส้นทางปริมาณการใช้งานเว็บทั้งหมดผ่าน TLS โดยไม่ใช้ VPN


10

สมมติฐาน:

เซิร์ฟเวอร์:

  • ฉันมีเซิร์ฟเวอร์ Debian Squeeze ที่สามารถออกสู่อินเทอร์เน็ตสาธารณะด้วยที่อยู่ IPv4 แบบคงที่
  • ฉันมีสิทธิ์เข้าถึงแบบไม่ จำกัด เพื่อแก้ไขซอฟต์แวร์บนเซิร์ฟเวอร์
  • เซิร์ฟเวอร์สามารถฟังพอร์ตต่าง ๆ ตั้งกฎของไฟร์วอลล์ใหม่โดยทั่วไปไม่มีข้อ จำกัด เกี่ยวกับสิ่งที่เซิร์ฟเวอร์สามารถทำได้

ลูกค้า:

  • ฉันสามารถเรียกใช้โปรแกรม Firefox, Java, โปรแกรม .NET และบาง executables พื้นเมืองที่ไม่จำเป็นต้องมีการเข้าถึงผู้ดูแลระบบบนของท้องถิ่นระบบ (กล็อคลงสก์ท็อป Windows ด้วยสิทธิผู้ดูแลระบบไม่ได้)
  • ฉันสามารถติดตั้ง Addons ลงใน Firefox ได้
  • ฉันสามารถฟังพอร์ตใดก็ได้บนlocalhostอินเทอร์เฟซแบบวนรอบ ( ) ดังนั้นโปรแกรมดังกล่าวสามารถผูกกับพอร์ตท้องถิ่นและดำเนินการเครือข่าย I / O โดยพลการโดยไม่ต้องผ่านพร็อกซี
  • การเข้าถึงอินเทอร์เน็ตสาธารณะทั้งหมดจะถูกกำหนดเส้นทางผ่านพร็อกซี HTTP ที่ จำกัด ซึ่งบล็อกเว็บไซต์จำนวนมากและทำการตรวจสอบสถานะอย่างระมัดระวัง บนพอร์ต 80 อนุญาตเฉพาะ HTTP (ไม่มี TLS / SSL) บนพอร์ต 443 อนุญาตให้CONNECTใช้ SSL / TLS ตามโฮสต์ระยะไกลซึ่งไม่ได้ถูกบล็อกโดยชื่อโดเมน / ที่อยู่ IP
  • พร็อกซี HTTP ที่ จำกัดไม่ได้ทำการตรวจสอบแพ็คเก็ตในระดับลึกของการเชื่อมต่อ TLS ซึ่งได้รับอนุญาตผ่านพร็อกซีและจะไม่ดำเนินการ Man ในการโจมตีระดับกลางในการเชื่อมต่อเหล่านั้น
  • เซิร์ฟเวอร์ที่กล่าวถึงข้างต้นที่ฉันเข้าถึงไม่ได้ถูกบล็อกโดยพรอกซี

เป้าหมาย:

ฉันต้องการที่จะเส้นทางทั้งหมด HTTP และ HTTPS คำขอปล่อยออกมาโดย Firefox, ผ่านเซิร์ฟเวอร์ดังกล่าวข้างต้นผ่าน SSL / TLS

หมายเหตุอื่น ๆ เกี่ยวกับ "เป้าหมาย":

  • แม้ว่าไซต์ปลายทาง (ตัวอย่างเช่นhttp://superuser.com) ไม่ได้ใช้ SSL / TLS กับเซิร์ฟเวอร์ของฉันฉันยังคงต้องการใช้ SSL / TLS จากไคลเอนต์ของฉันไปยังเซิร์ฟเวอร์ของฉันและให้เซิร์ฟเวอร์ของฉันทำการร้องขอ HTTP - ไม่ว่าจะเข้ารหัสหรือไม่ - - ไปยังปลายทางที่ต้องการ
  • ฉันไม่สนใจว่าเซิร์ฟเวอร์ของฉันดูที่ปริมาณการใช้งาน SSL "ชัดเจน" ในคำอื่น ๆ ที่ฉันไม่จำเป็นต้องมีการเข้ารหัสเต็มรูปแบบ end-to-end SSL https://google.comจากลูกค้าท้องถิ่นของฉันทุกทางกับเซิร์ฟเวอร์ระยะไกลถ้าเซิร์ฟเวอร์ระยะไกลจะถูกเข้าถึงได้โดยเช่น กล่าวอีกอย่างก็คือฉันไว้วางใจเซิร์ฟเวอร์เพื่อรักษาความลับของข้อมูล
  • ฉันยินดีที่จะติดตั้งซอฟต์แวร์หรือส่วนเสริมของ Firefox ที่ไม่ต้องการสิทธิ์ผู้ดูแลระบบและสามารถทำงานบน Windows 7 แบบ 32 บิต
  • ซอฟต์แวร์โอเพ่นซอร์สเป็นที่ต้องการมากกว่ากรรมสิทธิ์และฟรีแวร์เป็นที่ต้องการมากกว่าซอฟต์แวร์ที่ต้องการค่าธรรมเนียมใบอนุญาต
  • ซอฟต์แวร์ที่มีอยู่เป็นที่ต้องการมากกว่าที่จะใช้รหัสซอฟต์แวร์ใหม่แม้ว่าฉันยินดีที่จะเขียนรหัสหากเป็นวิธีเดียว

ฉันกำลังมองหา "ทางออก" ที่อธิบายอย่างหลวม ๆ ซึ่งอธิบาย:

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

สิ่งที่ฉันพยายามที่ไม่ทำงาน

  • การติดตั้งsquidบนเซิร์ฟเวอร์ของฉันฉันพยายามตั้งค่าพร็อกซี HTTP มาตรฐานของตัวเองบนเซิร์ฟเวอร์ของฉัน สิ่งนี้ไม่ได้ผลเพราะเมื่อฉันขอเว็บไซต์ใน Firefox ผ่าน HTTP ปกติFirefox จะพยายามเข้าถึงเซิร์ฟเวอร์ของฉันผ่าน HTTP ปกติด้วยเช่นกัน! สิ่งนี้ไม่สามารถทำได้เนื่องจากพร็อกซีในเครือข่ายท้องถิ่นของฉันสามารถตรวจสอบและ / หรือบล็อกทราฟฟิก HTTP ปกติระหว่างไคลเอนต์ของฉันและเซิร์ฟเวอร์ได้
  • VPNs ใช้งานไม่ได้แม้แต่ OpenVPN ผ่าน TLS ที่ฟังพอร์ต 443 เพราะฉันไม่มีสิทธิ์ในคอมพิวเตอร์ที่จะติดตั้งtunอะแดปเตอร์เครือข่ายที่สามารถทำการกำหนดเส้นทางเลเยอร์ 3 ได้ฉันไม่สามารถกำหนดเส้นทางเลเยอร์ 2 ได้ (เช่นtap) กล่าวโดยย่อ: ฉันต้องการสิทธิ์ของผู้ดูแลระบบในการติดตั้ง OpenVPN และแม้ว่าฉันจะมีสิทธิ์ของผู้ดูแลระบบเหล่านั้นเป็นการชั่วคราว บริษัท ก็คงจะไม่ยินดีหากพวกเขาพบว่ามีการติดตั้ง โปรแกรม Java หรือ. NET นั้นสังเกตเห็นได้น้อยกว่ามากโดยเฉพาะเมื่อไม่ได้ติดตั้งใน Add / Remove Programs และไม่มีองค์ประกอบเคอร์เนลไดรเวอร์เช่น OpenVPN

คุณลองถุงเท้าไหม คุณสามารถกำหนดได้ที่พอร์ต 443 ในเซิร์ฟเวอร์ของคุณ
Ashian

คุณสามารถใช้วิธีแก้ปัญหาที่อธิบายไว้ในบทความนี้: HTTP VPN ของคนจนได้หรือไม่? โปรดทราบว่าลิงก์ไปยังHTTPTunnelไม่ถูกต้อง
harrymc

1
delegate.orgอาจช่วยได้
Arjan

@Ashian ไม่ SOCKS จะไม่ทำงานเว้นแต่จะถูกห่อด้วย TLS SOCKS ไม่ได้เป็นโปรโตคอลที่ใช้ HTTP ดังนั้นเมื่อมันโดนพร็อกซีภายในมันจะถูกบล็อก และถ้าผมมีความสามารถที่จะเรียกใช้ผ่าน TLS ผมก็อาจจะใช้โปรโตคอลที่แตกต่างกัน ปัญหาแรกของฉันคือการตั้งค่าอุโมงค์ TLS ในลักษณะที่ Firefox สามารถใช้งานได้ ฉันยังไม่เห็นคำอธิบายของวิธีการดังกล่าว
allquixotic

@harrymc: ชื่อคำถามว่าผ่าน TLS HTTP Tunnel กำหนดเส้นทางแพ็กเก็ต IP ผ่านHTTPซึ่งไม่ได้เข้ารหัสและไม่ใช้ TLS บทความบอกว่าการเชื่อมต่อไม่ได้เข้ารหัส ไม่มีทางที่พร็อกซีของฉันจะปล่อยให้ผ่าน นอกจากนี้ฉันไม่มีsocatสิทธิ์ผู้ดูแลระบบบนกล่องไคลเอนต์ Windows
allquixotic

คำตอบ:


5

ฉันคิดออก : Dตอบสนองการแก้ปัญหานี้ทั้งหมดของความต้องการของฉันและตรงทั้งหมดในเป้าหมายของฉันอย่างสมบูรณ์แบบ ประสิทธิภาพไม่เลวร้ายนักเมื่อเทียบกับระดับของการอ้อมที่จำเป็นต่อการบรรลุเป้าหมาย

วิธีการทั่วไปจึง:

  1. ตั้งค่า Local Certificate Authority (CA) และสร้าง RSA "คีย์เซิร์ฟเวอร์" และ "รหัสลูกค้า" (ฉันใช้การเข้ารหัส 256 บิต) สำหรับเรื่องนี้ฉันใช้Easy-RSAเวอร์ชั่น 3.0.0-rc2

  2. เรียกใช้พร็อกซี HTTP มาตรฐาน bog ใด ๆ บน "กล่องเดเบียน" (เซิร์ฟเวอร์บนอินเทอร์เน็ตสาธารณะ) ตรวจสอบให้แน่ใจว่าได้รับฟังบนlocalhostเท่านั้น (ไม่ควรเปิดรับอินเทอร์เน็ตสาธารณะ) สำหรับวัตถุประสงค์ของฉันฉันใช้Privoxyแต่Squidจะทำงานได้ดี เนื่องจากเป็นเพียงการฟังบน localhost ไม่จำเป็นต้องมีการตรวจสอบสิทธิ์ (เว้นแต่จะมีกระบวนการที่ทำงานในกล่องของคุณที่คุณไม่เชื่อถือ; ในกรณีนี้yikes ... )

  3. ดาวน์โหลดstunnelและติดตั้งลงบนไคลเอนต์และเซิร์ฟเวอร์ กระบวนการในการทำเช่นนี้จะเป็นระบบปฏิบัติการเฉพาะ ในกรณีของฉันฉันเลือกรวบรวม stunnel จากแหล่งที่มา (หวาดระแวง ... ) สำหรับ Windows ซึ่งเป็นกระบวนการที่เกี่ยวข้องค่อนข้างฉันจะไม่ให้รายละเอียดที่นี่ ทางฝั่งเซิร์ฟเวอร์มันมีอยู่ใน package manager :)

  4. การกำหนดค่าของ Stunnel ค่อนข้างน่ากลัวในตอนแรก แต่มันง่ายกว่าที่คิด! โดยพื้นฐานแล้วบนเซิร์ฟเวอร์คุณต้องมี "stunnel.conf ของเซิร์ฟเวอร์" ด้านล่าง บนไคลเอนต์คุณต้องมี "stunnel.conf" ของลูกค้าด้านล่าง

  5. เริ่ม Privoxy เริ่ม stunnel บนเซิร์ฟเวอร์ชี้ไปที่ไฟล์ปรับแต่ง เริ่ม stunnel บนไคลเอ็นต์ชี้ไปที่ไฟล์ปรับแต่ง ไม่มีอะไรพิเศษจริง ๆ เกี่ยวกับการกำหนดค่าของ Privoxy ค่าเริ่มต้นนั้นใช้ได้สำหรับฉัน

  6. ใน Firefox เบราว์เซอร์ที่คุณเลือกทางฝั่งไคลเอ็นต์ตั้งค่าพร็อกซี HTTP และ HTTPS ให้เหมือนกับพอร์ตของ stunnel ที่ไคลเอ็นต์ของคุณกำลังรับฟังอยู่ - อาจคล้ายกับ localhost: 8080

ฉันควรทราบว่าถ้าพร็อกซีของเครือข่ายท้องถิ่นของคุณต้องการการรับรองความถูกต้องบางอย่างคุณจะต้องรับ stunnel เพื่อรับรองความถูกต้องสำหรับคุณหรือใช้พร็อกซีสกัดกั้นในพื้นที่อื่นแล้วเชื่อมโยงเข้าด้วยกัน การรับรองความถูกต้องของพร็อกซี่ -> LAN พร็อกซี / เกตเวย์ -> อินเทอร์เน็ต -> stunnel ของเซิร์ฟเวอร์ของคุณ -> privoxy

นั่นเป็นการคัดลอกจำนวนมาก แต่ใช้งานได้!

;This is the *client's* stunnel.conf.
[https]
accept = localhost:9020
connect = your.lan.proxy:80
client = yes
protocol = connect
;protocolHost should be the same as the "accept" for the server
protocolHost = 1.2.3.4:443
;Same CAfile, different cert and key pair
CAfile = ca.crt
cert = client.crt
key = client.key
;VERY IMPORTANT!!! Make sure it's really your server and not a MITM attempt by your local network by making sure that the certificate authority "ca.crt" really signed the server's cert
verify = 2
;More performance tweaks...
sessionCachetimeout = 600
sessionCacheSize = 200
TIMEOUTidle = 600

.

;This is the *server's* stunnel.conf.
[https]
;1.2.3.4 is a publicly-routable, static IP address that can be connected to by your box that's under the firewall
accept = 1.2.3.4:443
;localhost:8118 is an example of where your local forwarding HTTP(S) proxy might reside.
connect = localhost:8118
CAfile = ca.crt
cert = server.crt
key = server.key
;VERY IMPORTANT!!! Without this, anyone in the world can use your public stunnel port as an open proxy!
verify = 2
;Set some timeouts higher for performance reasons
sessionCacheTimeout = 600
sessionCacheSize = 200
TIMEOUTidle = 600

เมื่อกำหนดค่าทุกอย่างแล้วผลลัพธ์สุดท้ายก็จะกลายเป็นดังนี้:

  1. เว็บเบราว์เซอร์ของคุณเชื่อมต่อกับlocalhost:9020(stunnel) และถือว่าเป็นพร็อกซีที่สามารถยอมรับการเชื่อมต่อ HTTP และ / หรือ HTTPS
  2. เมื่อ stunnel ได้รับการเชื่อมต่อจากเบราว์เซอร์ของคุณจะเข้าถึงผ่านพร็อกซี / เกตเวย์ของไฟร์วอลล์เพื่อสร้างเซสชัน TLS กับเซิร์ฟเวอร์ระยะไกลของคุณ ณ จุดนี้ลูกค้าของคุณจะตรวจสอบใบรับรอง PKI ของเซิร์ฟเวอร์ของคุณและในทางกลับกัน
  3. เมื่อสร้างเซสชัน TLS กับเซิร์ฟเวอร์ระยะไกลของคุณแล้ว stunnel จะส่งผ่านข้อมูลที่มาจากเบราว์เซอร์ของคุณเช่นคำขอ HTTP หรือคำขอช่องสัญญาณ SSL ผ่านพร็อกซีในพื้นที่และไปยังเซิร์ฟเวอร์ของคุณโดยตรง ช่องนี้ถูกเข้ารหัสดังนั้นเครือข่ายท้องถิ่นของคุณไม่สามารถบอกได้ว่าข้อมูลมีอะไรพวกเขาสามารถเดาได้โดยทำการวิเคราะห์การจราจร
  4. เมื่อstunnelอินสแตนซ์ที่ทำงานบนเซิร์ฟเวอร์ของคุณเริ่มรับข้อมูลจะเปิดการเชื่อมต่อไปยังเช่นlocalhost:8118ที่ซึ่งพร็อกซีเซิร์ฟเวอร์ HTTP (S) ของคุณในกรณีของฉัน Privoxy กำลังรับฟังอยู่
  5. จากนั้น Privoxy จะทำหน้าที่เหมือน HTTP พร็อกซีเซิร์ฟเวอร์การส่งต่อปกติและส่งต่อคำขอของคุณไปยังอินเทอร์เน็ตสาธารณะผ่าน ISP ของเซิร์ฟเวอร์

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


2

ฉันได้ลองตั้งค่านี้ในเครื่องท้องถิ่นของฉันและฉันสามารถมั่นใจได้ว่า "พร็อกซี จำกัด " จะได้รับCONNECT DEBIAN_IP:443 HTTP/1.1แต่จะไม่เห็นใบรับรองใด ๆ ดังนั้นฉันไม่แน่ใจว่าสิ่งนี้จะทำงานได้หรือไม่

สมมติว่า: Debian ของคุณมีApacheหรือSquidจะทำ proxying และเซิร์ฟเวอร์ SSH บนพีซีไคลเอนต์ของคุณคุณต้องการputtyซึ่งเป็นโปรแกรมที่ไม่ต้องการสิทธิ์ผู้ดูแลระบบในการรันไม่จำเป็นต้องติดตั้งและสามารถเรียกใช้จาก pendrive ได้

อันดับแรก Debian ของคุณ:

ทำให้ SSH ของคุณฟังพอร์ต443เพียงเพิ่ม (หรือเปลี่ยนพอร์ตปัจจุบันของคุณบริการ) Port 443บน/etc/ssh/sshd_configและยังช่วยให้การส่งต่อ TCP (เพิ่มAllowTcpForwarding yesในไฟล์นั้น)

กำหนดค่า Squid หรือ Apache ของคุณเพื่อทำพร็อกซี่ เนื่องจากสิ่งนี้จะถูกใช้ผ่านอุโมงค์ SSH เท่านั้นจึงจะต้องฟังบนอินเตอร์เฟสลูปแบ็ค ในกรณีที่คุณใช้ Apache:

Listen 127.0.0.1:8080
ProxyRequests On
<Proxy *>
  Order deny,allow
</Proxy>

เซิร์ฟเวอร์เสร็จแล้วมากำหนดค่าพีซีไคลเอนต์ของคุณ:

บน putty กำหนดค่า IP สาธารณะ Debian ของคุณเป็นHostและ443เป็นพอร์ต ตรวจสอบให้แน่ใจว่าSSHยังคงเลือกอยู่ เปลี่ยนการConnection -> Proxyตั้งค่าเลือกHTTPและเติมการตั้งค่า "จำกัด พร็อกซี" ของคุณ เปลี่ยนแปลงConnectionการตั้งค่าและสถาปนา keepalive ของ-30 เปลี่ยนเป็น60 Connection -> SSH -> Tunnelsในวันsource portสถาปนา8080และ,Destination localhost:8080ออกจากที่เลือกและกดLocal Addคุณ shoud L8080 locahost:8080เห็นในพื้นที่ดังกล่าวข้างต้นบางสิ่งบางอย่างเช่น เปลี่ยนกลับไปเป็นการSessionตั้งค่าจดชื่อในแถวแรกSaved sessionsและบันทึกการตั้งค่าที่น่าเบื่อเหล่านี้ทั้งหมดเพื่อช่วยจัดระเบียบการเชื่อมต่อใหม่ในวันต่อไปนี้

ตอนนี้คุณสามารถลองOpenเชื่อมต่อกับ Debian ของคุณได้แล้ว หากคุณเห็นข้อความแจ้งผู้ใช้เราก็แค่ทำขั้นตอนนี้ให้เสร็จ ถ้าไม่ ... เราจะต้องค้นหาวิธีอื่น

ใน Firefox ตั้งlocalhostที่พอร์ต8080เป็นพร็อกซีของคุณ


น่าเสียดายที่สิ่งนี้ใช้ไม่ได้เนื่องจากโปรโตคอลของ SSH ไม่ได้ใช้ SSL / TLS เมื่อพร็อกซีที่ จำกัด ในฝั่งไคลเอ็นต์ของฉันทำการดมกลิ่นของการเชื่อมต่อผ่านพอร์ต 443 มันจะรู้ทันทีว่าไม่ใช่ซ็อกเก็ต TLS และลดลง ได้รับฉันสามารถห่อเป็น TLS ได้ แต่นั่นไม่ใช่คำตอบของคุณ
allquixotic

ฉันทำการทดสอบด้วย HTTP พร็อกซี (BURP) และทำงานได้ดังนั้นจึงคุ้มค่ากับการลอง การห่อ SSH ผ่าน TLS และทำให้มันใช้งานได้อาจจะเป็นเรื่องยุ่งยาก แต่ ...
NuTTyX

SSH over TLS ไม่จำเป็นต้องใช้การอ้อม หากคุณมีซ็อกเก็ต TLS อยู่แล้วคุณไม่จำเป็นต้องใช้ SSH จริงๆ ดูคำตอบของฉันด้านล่าง (หมายเหตุ: ฉันไม่รู้เกี่ยวกับคำตอบนี้จนกระทั่งเมื่อไม่นานมานี้ดังนั้นจึงไม่เหมือนกับที่ฉันตอบคำถามของคุณแล้วโพสต์คำตอบฉันค้นพบคำตอบนี้เมื่อ 25 นาทีที่แล้ว)
allquixotic

ดีใจที่คุณแก้ไขมัน
NuTTyX

1

คุณครึ่งทางด้วยการตั้งค่าพร็อกซีบนเซิร์ฟเวอร์ของคุณ อีกครึ่งหนึ่งเป็น SSL บนเซิร์ฟเวอร์และพร็อกซีท้องถิ่นของไคลเอ็นต์ที่ใช้ผงสำหรับเชื่อมต่อกับพร็อกซี HTTP ที่เปิดใช้งาน SSL ของคุณและตั้งค่า Firefox เป็นพร็อกซีทุกอย่างเป็น 127.0.0.1

ฉันเพิ่งทำ google อย่างรวดเร็วสำหรับการตั้งค่าโป๊วและพบสิ่งนี้: https://mariobrandt.de/archives/technik/ssh-tunnel-bypassing-transparent-proxy-using-apache-170/


เพื่อความเป็นธรรมเขาเข้าไปดูรายละเอียดเพิ่มเติมพร้อมโพสต์ของเขา ขอบคุณสำหรับการโหวต
joe

@ krowe ไม่มีคำตอบของฉันในคำว่า "Apache" หรือ "PuTTY"
allquixotic

ไม่ไม่รบกวนฉันเลยที่คุณตอบคำถามนี้ได้! ฉันแค่ตีความความคิดเห็นของคุณโดยบอกว่าฉันได้คำตอบของเขาหรือคัดลอกมันออกมาเมื่อความจริงแล้วฉันไม่ได้รับประโยชน์มากจากคำตอบนี้เมื่อฉันกำลังมองหาวิธีแก้ปัญหา ในการหวนกลับบล็อกที่เชื่อมโยงกับดูเหมือนจะเป็นทางเลือกที่ถูกกว่ากับคำตอบที่ฉันโพสต์ แต่ฉันไม่แน่ใจว่ามันจะแตกต่างกันในประสิทธิภาพการทำงานคุณสมบัติ ฯลฯ (อาจจะดีกว่าหรือแย่ลง)
allquixotic

+1 ฉันชอบอันนี้เพราะฉันใช้เว็บเซิร์ฟเวอร์อยู่ดี
krowe
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.