banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận mạng và thiết bị mạng Thảo luận về cơ chế hoạt động của Teamviewer.  XML
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 02/01/2011 18:54:30 (+0700) | #1 | 228443
pmquang
Member

[Minus]    0    [Plus]
Joined: 21/06/2010 06:00:51
Messages: 40
Offline
[Profile] [PM]
Như đã biết thì teamviewer là một công cụ hỗ trợ để điều khiển một máy khác cũng chạy teamviewer.

Em đã có một vấn đề thế này mà hiện tại thì em vẫn chưa giải thích được.
Teamviewer hoạt động thế nào. Teamviewer hoạt động có thông qua các server trung gian không.
-Nếu không thì 2 máy chạy teamviewer giao tiếp với nhau ở dưới 2 cái Nat như thế nào.
-Còn nếu có thì tại sao nó lại hoạt động khá hiệu quả. (nhanh)

Em đã làm thử nghiệm như sau:
Máy em và máy thằng bạn ở cùng trong một Lan cùng chạy teamviewer.Dĩ nhiên phải có một server nào đó để cấp phát ID + Pass cho các client teamviewer. Sau đó e kết nối với máy thằng bạn và điều khiển máy nó. Vấn đề xảy ra khi em ngắt mạng Internet (Dĩ nhiên 2 máy vẫn nhận nhau trong mạng Lan). Và máy e vẫn điều khiển được máy nó. ---> Chỗ này e quả thật không hiểu. Nếu 2 máy giao tiếp trực tiếp với nhau thì khi 2 client Teamviewer ở dưới 2 cái NAT thì nó giao tiếp thế nào đây. smilie
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 02/01/2011 20:21:09 (+0700) | #2 | 228446
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

pmquang wrote:

Teamviewer hoạt động thế nào. Teamviewer hoạt động có thông qua các server trung gian không.
 

Bạn lên homepage của nó đọc tài liệu kết hợp với việc dùng Wireshark thử xem.

pmquang wrote:

Em đã làm thử nghiệm như sau:
Máy em và máy thằng bạn ở cùng trong một Lan cùng chạy teamviewer.Dĩ nhiên phải có một server nào đó để cấp phát ID + Pass cho các client teamviewer. Sau đó e kết nối với máy thằng bạn và điều khiển máy nó. Vấn đề xảy ra khi em ngắt mạng Internet (Dĩ nhiên 2 máy vẫn nhận nhau trong mạng Lan). Và máy e vẫn điều khiển được máy nó. ---> Chỗ này e quả thật không hiểu. Nếu 2 máy giao tiếp trực tiếp với nhau thì khi 2 client Teamviewer ở dưới 2 cái NAT thì nó giao tiếp thế nào đây. smilie  

Bạn có chọn vào "Accept incomming LAN connections" không: http://support.teamviewer.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=40
Let's build on a great foundation!
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 02/01/2011 20:44:00 (+0700) | #3 | 228448
pmquang
Member

[Minus]    0    [Plus]
Joined: 21/06/2010 06:00:51
Messages: 40
Offline
[Profile] [PM]

pmquang wrote:


Teamviewer hoạt động thế nào. Teamviewer hoạt động có thông qua các server trung gian không.



Bạn lên homepage của nó đọc tài liệu kết hợp với việc dùng Wireshark thử xem.
 

Homepage e cũng lên đọc rồi. Chỉ toàn là hướng dẫn sử dụng. Cái e thật sự muốn biết là cơ chế ẩn dưới nó cơ.
E tìm thì cũng chỉ có thế này. Cũng có thể e tìm chưa kĩ smilie

Does it work behind firewalls and NAT routers?

Yes! That is what we made TeamViewer for: TeamViewer will allow you to share your desktop over any kind of internet-/LAN-connection and over almost any firewall.
 




Em đã làm thử nghiệm như sau:
Máy em và máy thằng bạn ở cùng trong một Lan cùng chạy teamviewer.Dĩ nhiên phải có một server nào đó để cấp phát ID + Pass cho các client teamviewer. Sau đó e kết nối với máy thằng bạn và điều khiển máy nó. Vấn đề xảy ra khi em ngắt mạng Internet (Dĩ nhiên 2 máy vẫn nhận nhau trong mạng Lan). Và máy e vẫn điều khiển được máy nó. ---> Chỗ này e quả thật không hiểu. Nếu 2 máy giao tiếp trực tiếp với nhau thì khi 2 client Teamviewer ở dưới 2 cái NAT thì nó giao tiếp thế nào đây. smilie


Bạn có chọn vào "Accept incomming LAN connections" không: http://support.teamviewer.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=40
 


Hì hì. Lúc chạy e để tham số mặc định nên dĩ nhiên là nó bị deactive.
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 04/01/2011 10:04:51 (+0700) | #4 | 228578
[Avatar]
chiro8x
Member

[Minus]    0    [Plus]
Joined: 26/09/2010 00:38:37
Messages: 661
Location: /home/chiro8x
Offline
[Profile] [PM] [Yahoo!]
Chà điều bạn nói có vẽ thú vị đây, liệu có khi nào nó dùng TCP để cấp ID sau đó sử dụng UDP giữa hai máy không nhỉ smilie). Cái này phải vọc WireShark mới biết được. Cảm ơn vì cảm hứng mới ^^!.
while(1){}
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 04/01/2011 14:41:16 (+0700) | #5 | 228602
pmquang
Member

[Minus]    0    [Plus]
Joined: 21/06/2010 06:00:51
Messages: 40
Offline
[Profile] [PM]
Tình hình là mới thi xong môn đầu. Rảnh một tí bắt gói tin coi chơi.
Nhưng quá trình trao đổi dữ liệu xảy ra khá phức tạp. Đến giờ vẫn chưa biết cơ chế nó là gì. smilie

+ Đầu tiên client kết nối tới một server và được server và báo cho server này một cái key. Server thông báo lại một cái key. Kết thúc.
+ Sau đó client lại tiếp tục kết nối tới 3 server khác trong quá trình kết nối tới partner. Tới đây thì e đoán nó đang tiến hành mã hoá dữ liệu để cấp phát ID và pass và xác thực đối phương. ( Chỗ này dữ liệu bị mã hoá hết nên chỉ đoán thôi.)
+ Coi xuống phía dưới thì đúng là 2 client kết nối trực tiếp với nhau thông qua giao thức UDP. Dùng 2 port là 18974 và 61127. Vấn đề là trên modem không có NAT 2 cổng này. smilie. Đáng lẽ chỗ này nó phải bị drop chứ nhỉ. Nếu không trong giao thức uTorrent nó đòi mở Port Forwarding làm chi nhỉ.

Thêm cái file capture bắt được wireshark cho anh em nào thích nghiên cứu coi chơi
http://www.mediafire.com/?r4nswyn4aod5wma
smilie
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 04/01/2011 18:09:34 (+0700) | #6 | 228619
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]
@pmquang: việc kết nối giữa 2 máy mà ở giữa là hai cái NAT không phải là không được (bao gồm cả symmetric NAT). Bạn nên tìm hiểu về port knocking.
Mind your thought.
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 04/01/2011 19:15:06 (+0700) | #7 | 228629
pmquang
Member

[Minus]    0    [Plus]
Joined: 21/06/2010 06:00:51
Messages: 40
Offline
[Profile] [PM]
@pmquang: việc kết nối giữa 2 máy mà ở giữa là hai cái NAT không phải là không được (bao gồm cả symmetric NAT). Bạn nên tìm hiểu về port knocking.
 

Theo gợi ý của anh StarGhost e đã tìm hiểu qua về port knocking và có một số nhận xét như sau.

Thứ nhất:
Port knocking là một phương pháp theo dõi log trên firewall và dựa vào log để có thể mở một số port tuỳ ý theo giao ước có trước. --> Cần có một cái deamon giám sát những cái này -->cần phải có một chế độ hỗ trợ và phải cài đặt một số thứ trên firewall. Nhưng e không đụng gì tới router nên chắc không phải.

Thứ hai:
Theo phương pháp làm việc của port knocking muốn kết nối tới một host mặc định bị đóng port, cần phải gửi một số gói tin tới một số một số port bị đóng của firewall nhằm mục đích knocking. Khi thoả mãn một số điều kiện thì firewall sẽ mở 1 port nào đó. Nhưng với con firewall cùi mía của FPT thì e nghĩ nó không hỗ trợ mấy cái này. Hơn nữa làm sao bên kia biết đường mà knocking. (cái này chắc phải thoả thuận trước) Nhưng do bị khoá đường vào telnet nên cũng không coi được log của router nên cũng chưa dám khẳng định gì. smilie.

Mong các anh góp ý thêm.
Tham khảo:
http://lion.cs.uiuc.edu/courses/cs397hou/lectures/PortKnocking.ppt
http://www.portknocking.org
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 04/01/2011 20:10:48 (+0700) | #8 | 228634
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]
@pmquang: mình nói port knocking chỉ là một gợi ý, chứ mình không nói là dùng nó để vượt qua NAT. Port knocking là khái niệm đối với firewall, nhưng bạn hoàn toàn có thể ứng dụng ý tưởng của nó để vượt qua NAT. Bạn hơi phức tạp hoá vấn đề. Ý tưởng của port knocking rất đơn giản: gửi một loạt packets có chủ đích đến firewall để nó mở một (vài) port(s) nào đó. Vậy nếu bây giờ là NAT thay vì firewall thì sao?
Mind your thought.
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 04/01/2011 20:33:13 (+0700) | #9 | 228635
pmquang
Member

[Minus]    0    [Plus]
Joined: 21/06/2010 06:00:51
Messages: 40
Offline
[Profile] [PM]

Vậy nếu bây giờ là NAT thay vì firewall thì sao?
 


Em chưa hiểu ý anh lắm. Không phải cơ chế NAT cũng là một dạng firewall sao. Mặc định thì router sẽ đong tất cả các cổng. Khi một host trong LAN muốn ra ngoài thì phải đi ra theo NAT động. Còn một gói tin muốn đi xuyên ngược lại vào mạng LAN thì phải có một cổng external mở trên router. Nếu không thì gói tin sẽ bị drop. Nhưng vấn đề là router có hiểu các knocking của phía bên kia không.
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 05/01/2011 06:13:00 (+0700) | #10 | 228681
pmquang
Member

[Minus]    0    [Plus]
Joined: 21/06/2010 06:00:51
Messages: 40
Offline
[Profile] [PM]
Thảo luận thêm:

+Bây giờ giả sử mình muốn viết một phần mềm giống teamviewer thì phải làm sao. (giống cả về phương thức và cách làm việc) Điều kiện cần có là gì. Phải tìm hiểu những gì trước. Và đây cũng là đích hướng tới cho câu hỏi thảo luận trên kia.

+Giả sử như dùng port knocking thì cài đặt thực tế ra sao. Liệu có khả thi. ...

Mong các anh góp ý thêm. smilie
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 05/01/2011 07:54:06 (+0700) | #11 | 228685
protectHat
Member

[Minus]    0    [Plus]
Joined: 09/08/2008 11:02:35
Messages: 176
Location: DMZ
Offline
[Profile] [PM]
Cái này thì mình không chắc nhưng mình nghĩ skype cũng làm việc với một kiểu tương tự. Ngay khi được cấp key rồi thì thay vì đi lên máy chủ, 2 máy có skype sẽ tìm kiếm các máy ở giữa ( không biết nó làm cách nào) để làm trung gian rồi chuyển gói tin qua. Với cách làm này thì 2 máy trong cùng lan có thể gửi file đạt tốc độ hơn 5M/s. Nếu tv cũng làm như vậy thì sẽ truyền được gói tin lớn đi mà không sợ server quá tải. Mặt khác là nếu cùng mạng sẽ nhanh hơn rất nhiều (vd như cùng Lan, cùng IPs, cùng WAN)
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 05/01/2011 19:59:18 (+0700) | #12 | 228787
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]

pmquang wrote:

Em chưa hiểu ý anh lắm. Không phải cơ chế NAT cũng là một dạng firewall sao. Mặc định thì router sẽ đong tất cả các cổng. Khi một host trong LAN muốn ra ngoài thì phải đi ra theo NAT động. Còn một gói tin muốn đi xuyên ngược lại vào mạng LAN thì phải có một cổng external mở trên router. Nếu không thì gói tin sẽ bị drop. Nhưng vấn đề là router có hiểu các knocking của phía bên kia không. 


Bạn vẫn sử dụng khái niệm port knocking một cách quá cứng nhắc. Như mình đã đề cập ở trên, cái bạn cần sử dụng là ý tưởng chủ đạo của port knocking, tức là gửi một/vài packets có chủ đích dẫn đến việc thiết bị trung gian (ở đây là NAT) mở port(s). Câu hỏi đặt ra là ai gửi và gửi những gì, có cần thiết server trung gian nào đó ở ngoài Internet hay không, tại sao cần, và cần bao nhiêu. Ngoài ra, NAT và firewall là hai khái niệm hoàn toàn khác nhau. NAT hoạt động theo xu hướng cho phép tạo kết nối, còn firewall thì ngược lại, nó ngăn chặn kết nối.
Mind your thought.
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 05/01/2011 21:20:27 (+0700) | #13 | 228801
pmquang
Member

[Minus]    0    [Plus]
Joined: 21/06/2010 06:00:51
Messages: 40
Offline
[Profile] [PM]

Bạn vẫn sử dụng khái niệm port knocking một cách quá cứng nhắc. Như mình đã đề cập ở trên, cái bạn cần sử dụng là ý tưởng chủ đạo của port knocking, tức là gửi một/vài packets có chủ đích dẫn đến việc thiết bị trung gian (ở đây là NAT) mở port(s). Câu hỏi đặt ra là ai gửi và gửi những gì, có cần thiết server trung gian nào đó ở ngoài Internet hay không, tại sao cần, và cần bao nhiêu. Ngoài ra, NAT và firewall là hai khái niệm hoàn toàn khác nhau. NAT hoạt động theo xu hướng cho phép tạo kết nối, còn firewall thì ngược lại, nó ngăn chặn kết nối.
 


Theo e được hiểu. NAT là một khái niệm người ta chế ra nó với mục đích ban đầu và duy nhất là để tiết kiệm IPv4 trong tình trạng IPv4 khan hiếm so với nhu cầu.

Chính người nghĩ ra NAT cũng không ngờ nó lại có ích trong việc chặn các gói tin bất hợp pháp từ bên ngoài. Cái này thầy dạy -- e nhớ sơ sơ. Vậy nên mới liên tưởng đến việc NAT và firewall. Nếu có sai thì mọi người góp ý thêm. smilie

Còn chuyện port knocking. E vẫn không biết là e cứng nhắc chỗ nào. :d. Em chỉ cần biết tập trung vào vấn đề chính ở đây là cơ chế của teamviewer. Nếu nó hoạt động dựa trên port knocking thì rõ ràng chuyện gửi "vài gói tin có chủ đích dẫn đến việc thiết bị trung gian mở port" là chuyện phải được theo dõi trên router. Nếu không bình thường router chỉ cần drop gói tin đó đi mà không quan tâm gì cả. Anh có thể nói rõ hơn không.
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 05/01/2011 21:36:49 (+0700) | #14 | 228803
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]

pmquang wrote:
Nếu không bình thường router chỉ cần drop gói tin đó đi mà không quan tâm gì cả.  

Bạn cứng nhắc chính là ở chỗ này. Bạn cho rằng router sẽ drop gói tin vì bạn nghĩ rằng nó được gửi từ ngoài Internet, theo nguyên tắc của port knocking, nhưng có nhất thiết phải vậy chăng?
Mind your thought.
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 05/01/2011 21:50:16 (+0700) | #15 | 228805
pmquang
Member

[Minus]    0    [Plus]
Joined: 21/06/2010 06:00:51
Messages: 40
Offline
[Profile] [PM]

pmquang wrote:

Nếu không bình thường router chỉ cần drop gói tin đó đi mà không quan tâm gì cả.
 


Bạn cứng nhắc chính là ở chỗ này. Bạn cho rằng router sẽ drop gói tin vì bạn nghĩ rằng nó được gửi từ ngoài Internet, theo nguyên tắc của port knocking, nhưng có nhất thiết phải vậy chăng?
 


Vậy theo a, mềm dẻo là như thế nào.
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 05/01/2011 23:46:10 (+0700) | #16 | 228817
[Avatar]
huan_ng
Member

[Minus]    0    [Plus]
Joined: 04/03/2005 23:10:38
Messages: 259
Offline
[Profile] [PM] [Yahoo!]

Em đã làm thử nghiệm như sau:
Máy em và máy thằng bạn ở cùng trong một Lan cùng chạy teamviewer.Dĩ nhiên phải có một server nào đó để cấp phát ID + Pass cho các client teamviewer. Sau đó e kết nối với máy thằng bạn và điều khiển máy nó. Vấn đề xảy ra khi em ngắt mạng Internet (Dĩ nhiên 2 máy vẫn nhận nhau trong mạng Lan). Và máy e vẫn điều khiển được máy nó. ---> Chỗ này e quả thật không hiểu. Nếu 2 máy giao tiếp trực tiếp với nhau thì khi 2 client Teamviewer ở dưới 2 cái NAT thì nó giao tiếp thế nào đây. smilie


Bạn có chọn vào "Accept incomming LAN connections" không: http://support.teamviewer.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=40
 


Hì hì. Lúc chạy e để tham số mặc định nên dĩ nhiên là nó bị deactive .  

Cái này vô lý bà cố luôn. Nếu đã disconnect internet thì 2 máy ko thể "connect" = TV được, lúc này (no internet) muốn "connect" phải dùng local IP (ID/pass sẽ biến mất vì ko kết nối được TV server), ngoại trừ bạn chọn accept cho incoming LAN connection trên máy host. Bạn có thể deactivated trên máy remote nhưng ko thể deactivated trên máy host mà lại "connect" được trong khi ko có internet. Phi lý.
Not much but not nothing
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 06/01/2011 01:15:08 (+0700) | #17 | 228821
pmquang
Member

[Minus]    0    [Plus]
Joined: 21/06/2010 06:00:51
Messages: 40
Offline
[Profile] [PM]
Cái này vô lý bà cố luôn. Nếu đã disconnect internet thì 2 máy ko thể "connect" = TV được, lúc này (no internet) muốn "connect" phải dùng local IP (ID/pass sẽ biến mất vì ko kết nối được TV server), ngoại trừ bạn chọn accept cho incoming LAN connection trên máy host. Bạn có thể deactivated trên máy remote nhưng ko thể deactivated trên máy host mà lại "connect" được trong khi ko có internet. Phi lý.
 

chính những câu nói của bạn mới phi lý. Bạn không thấy mình đã phân tích rồi sao.

Mình tiếp nhân IP và pass trước. Tiến hành kết nối rồi mới ngắt mạng. Lúc ngắt mạng xong thì vẫn điều khiển được.

Máy A -- > router --> router --> B

Máy chạy teamviewer dĩ nhiên là IP local rồi. Bạn hiểu vấn đề không vậy. Gói tin từ A sang B dĩ nhiên là dùng IP của router phía A.

Máy B nhận được dĩ nhiên là có IP source là IP của router A. Còn lúc ngắt mạng có thể sẽ là thế này

Máy A --> router --> Máy B

Lúc này IP đích máy A gửi sẽ là IP của router luôn. Và gói tin máy B nhận sẽ có IP source là của router. Lúc này có mạng hay không cũng chả quan trọng. Vì nó không thông qua một trung gian nào nữa.

PS: Mình không rảnh để bịa ra vấn đề để thảo luận bạn nhé. Không thì bạn có thể trải nghiệm thực tế rồi hẵng nói nhé.

Nói rõ thêm một tí là ngắt mạng ở đây là rút line ADSL của router ra. Chứ không tắt nó đi.
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 06/01/2011 11:22:50 (+0700) | #18 | 228856
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

pmquang wrote:

Teamviewer hoạt động có thông qua các server trung gian không?
 

Câu trả lời chắc chắn là có.

pmquang wrote:

Teamviewer hoạt động thế nào?
 

Mình tìm hiểu thì được biết có một kỹ thuật tên là hole punching. Ở đây, mình đồ rằng TeamViewer dùng UDP hole punching.

TeamViewer A <---> NAT 1 <---> Server S <---> NAT 2 <---> TeamViewer B

- A gửi một UDP packet đến S, trong đó chứa private IP + source port của A
- S có được thông tin trên + public IP của A (từ NAT 1)
- B cũng làm tương tự
- Bây giờ dựa vào kỹ thuật hole punching, A sẽ thử kết nối trực tiếp đến B (qua UDP):
  • Đầu tiên, A gửi một request đến S, yêu cầu kết nối đến B
  • S trả về public + private IP của B và gửi public + private IP của A đến B
  • A và B thử gửi trực tiếp UDP datagrams qua đầu còn lại

Mấu chốt vấn đề là ở chỗ: packet đầu tiên gửi từ A đến public IP của B đi qua NAT 1. NAT 1 nhận thấy src IP + port giống với session đã có giữa A và S, chỉ có dst khác nhau, nên nó sẽ dùng lại cái "tuple" trước đó.

Tóm tắt: http://tools.ietf.org/html/rfc3027#section-5.0
Chi tiết: http://www.brynosaurus.com/pub/net/p2pnat/
Let's build on a great foundation!
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 06/01/2011 17:41:54 (+0700) | #19 | 228879
pmquang
Member

[Minus]    0    [Plus]
Joined: 21/06/2010 06:00:51
Messages: 40
Offline
[Profile] [PM]

quanta wrote:

pmquang wrote:

Teamviewer hoạt động có thông qua các server trung gian không?
 

Câu trả lời chắc chắn là có.

pmquang wrote:

Teamviewer hoạt động thế nào?
 

Mình tìm hiểu thì được biết có một kỹ thuật tên là hole punching. Ở đây, mình đồ rằng TeamViewer dùng UDP hole punching.

TeamViewer A <---> NAT 1 <---> Server S <---> NAT 2 <---> TeamViewer B

- A gửi một UDP packet đến S, trong đó chứa private IP + source port của A
- S có được thông tin trên + public IP của A (từ NAT 1)
- B cũng làm tương tự
- Bây giờ dựa vào kỹ thuật hole punching, A sẽ thử kết nối trực tiếp đến B (qua UDP):
  • Đầu tiên, A gửi một request đến S, yêu cầu kết nối đến B
  • S trả về public + private IP của B và gửi public + private IP của A đến B
  • A và B thử gửi trực tiếp UDP datagrams qua đầu còn lại

Mấu chốt vấn đề là ở chỗ: packet đầu tiên gửi từ A đến public IP của B đi qua NAT 1. NAT 1 nhận thấy src IP + port giống với session đã có giữa A và S, chỉ có dst khác nhau, nên nó sẽ dùng lại cái "tuple" trước đó.

Tóm tắt: http://tools.ietf.org/html/rfc3027#section-5.0
Chi tiết: http://www.brynosaurus.com/pub/net/p2pnat/ 


Em coi lại trong file capture của wireshark thì thấy 2 cổng dùng để giao tiếp của A và B hoàn toàn không có cổng nào trùng với các cổng mà dùng để kết nối tới server.
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 06/01/2011 19:01:27 (+0700) | #20 | 228884
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]
@quanta: rất cám ơn quanta vì cái tên hole punching. Kĩ thuật này thực ra vô cùng đơn giản, mình cũng không ngờ rằng người ta có đặt tên cho nó, nên buộc phải dùng ý tưởng của port knocking để đưa ra gợi ý. smilie

@pmquang: Bạn nên kiểm tra các UDP packets gửi từ A và B đến server rồi so sánh với các UDP packets giữa A và B.

@all: mình để ý thấy trong link bạn quanta đưa có đề cập rằng kĩ thuật này không mấy hiệu quả với symmetric NATs. Các bạn nghĩ xem liệu có cách nào bypass symmetric NATs không? smilie
Mind your thought.
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 06/01/2011 19:18:55 (+0700) | #21 | 228885
pmquang
Member

[Minus]    0    [Plus]
Joined: 21/06/2010 06:00:51
Messages: 40
Offline
[Profile] [PM]

StarGhost wrote:

@pmquang: Bạn nên kiểm tra các UDP packets gửi từ A và B đến server rồi so sánh với các UDP packets giữa A và B.
 


Em đã coi kĩ lại lần nữa. Hoàn toàn đúng như vậy. Lúc đầu e cũng có ý tưởng vượt NAT kiểu thế này. Cho một máy bên trong gửi một gói tin ra bên ngoài với ip đích giả. Rồi bên kia connect lại. theo đường này. Vì lúc này bảng NAT chắc có lưu một đường đi vào. smilie. Thậm chí tụi e còn viết phần mềm để test thử. Nhưng có lẽ lúc gửi gói tin ra, khi phát hiện không có địa chỉ IP thật nên khi nhận gói tin ICMP lỗi về thì router đã xoá luôn bảng NAT đó nên bên kia connect không được. smilie.

Thank all.
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 06/01/2011 19:48:12 (+0700) | #22 | 228888
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]
@pmquang: vậy cái NAT trên router của bạn hoạt động như thế nào bạn có biết không? Còn về việc nhận ICMP lỗi rồi xoá NAT entry thì bạn cần phải thử nghiệm thực tế rồi mới nên đưa ra kết luận.

Ngoài ra, bạn upload cái network dump của teamviewer lên đây thử coi.
Mind your thought.
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 06/01/2011 20:16:16 (+0700) | #23 | 228889
pmquang
Member

[Minus]    0    [Plus]
Joined: 21/06/2010 06:00:51
Messages: 40
Offline
[Profile] [PM]

StarGhost wrote:
@pmquang: vậy cái NAT trên router của bạn hoạt động như thế nào bạn có biết không? Còn về việc nhận ICMP lỗi rồi xoá NAT entry thì bạn cần phải thử nghiệm thực tế rồi mới nên đưa ra kết luận.

Ngoài ra, bạn upload cái network dump của teamviewer lên đây thử coi. 


Hì ở trên e đã dùng từ rất cẩn thận là "có lẽ" , "chắc", nên những gì e nói chỉ là phỏng đoán và tìm cách chứng mình bằng thực nghiệm mà thôi. smilie.
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 06/01/2011 21:45:23 (+0700) | #24 | 228892
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

pmquang wrote:

Em coi lại trong file capture của wireshark thì thấy 2 cổng dùng để giao tiếp của A và B hoàn toàn không có cổng nào trùng với các cổng mà dùng để kết nối tới server.  

Thật không vậy? Bạn filter thử với udp.srcport eq 61127 hoặc udp and ip.src==192.168.1.105 rồi nhìn kỹ lại xem.

Let's build on a great foundation!
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 06/01/2011 21:54:21 (+0700) | #25 | 228893
pmquang
Member

[Minus]    0    [Plus]
Joined: 21/06/2010 06:00:51
Messages: 40
Offline
[Profile] [PM]

quanta wrote:

pmquang wrote:

Em coi lại trong file capture của wireshark thì thấy 2 cổng dùng để giao tiếp của A và B hoàn toàn không có cổng nào trùng với các cổng mà dùng để kết nối tới server.  

Thật không vậy? Bạn filter thử với udp.srcport eq 61127 hoặc udp and ip.src==192.168.1.105 rồi nhìn kỹ lại xem.
 


Sory anh. Em coi kĩ lại và xác nhận lại ở trên rồi. Hoạt động đúng như anh nói.


[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 07/01/2011 10:47:02 (+0700) | #26 | 228916
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

StarGhost wrote:

@all: mình để ý thấy trong link bạn quanta đưa có đề cập rằng kĩ thuật này không mấy hiệu quả với symmetric NATs. Các bạn nghĩ xem liệu có cách nào bypass symmetric NATs không? smilie  

Mình gợi mở thêm một chút để mọi người thảo luận cho xôm:
- Có những loại NATs nào? Symmetric NAT khác gì với những loại NATs còn lại? Tại sao kỹ thuật hole punching đơn thuần lại không "ăn thua" với Symmetric NAT?
- Port prediction là gì? Có thể ứng dụng trong trường hợp này không?
- Ngoài ra, có thể dùng "mẹo" nào khác không?
Let's build on a great foundation!
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 07/01/2011 11:55:56 (+0700) | #27 | 228918
pmquang
Member

[Minus]    0    [Plus]
Joined: 21/06/2010 06:00:51
Messages: 40
Offline
[Profile] [PM]

quanta wrote:

pmquang wrote:

quanta wrote:

PS: Mà lạ lắm nhé: chiều hôm qua và sáng nay mình mở mớ packet bạn upload lên còn nhìn thấy rõ ràng UDP packet gửi qua lại giữa A và B mà giờ filter các kiểu lại không thấy. Tài thật! smilie 

E tải lại vẫn thấy bình thường mà. smilie
 

Frame số bao nhiêu vậy bạn? Mình tìm lại vẫn không thấy.
 


Bắt đầu là frame thứ 200. smilie. Một đống packet udp luôn mà anh. smilie.

[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 07/01/2011 12:16:01 (+0700) | #28 | 228922
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

pmquang wrote:

Bắt đầu là frame thứ 200. smilie. Một đống packet udp luôn mà anh. smilie.
 

UDP packet gửi qua lại giữa A và B cơ mà, kiểu thế này này:


Let's build on a great foundation!
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 07/01/2011 13:32:30 (+0700) | #29 | 228931
pmquang
Member

[Minus]    0    [Plus]
Joined: 21/06/2010 06:00:51
Messages: 40
Offline
[Profile] [PM]

quanta wrote:

pmquang wrote:

Bắt đầu là frame thứ 200. smilie. Một đống packet udp luôn mà anh. smilie.
 

UDP packet gửi qua lại giữa A và B cơ mà, kiểu thế này này:


 


Hì hì. Dị chắc anh nhớ nhầm. File capture của hông có cái dạng đó đâu anh. Chỉ đơn thuần là kết nối teamviewer bình thường giữa 2 máy trên mạng thôi. smilie.
[Up] [Print Copy]
  [Discussion]   Thảo luận về cơ chế hoạt động của Teamviewer. 07/01/2011 18:18:17 (+0700) | #30 | 228955
pmquang
Member

[Minus]    0    [Plus]
Joined: 21/06/2010 06:00:51
Messages: 40
Offline
[Profile] [PM]

quanta wrote:

pmquang wrote:

Coi xuống phía dưới thì đúng là 2 client kết nối trực tiếp với nhau thông qua giao thức UDP. Dùng 2 port là 18974 và 61127.
 

Và mình chắc chắn rằng sau khi đọc post đó của bạn, mình có thử download mớ packet kia về và kiểm tra thì thấy đúng thế thật.

pmquang wrote:

Chỉ đơn thuần là kết nối teamviewer bình thường giữa 2 máy trên mạng thôi. smilie

Screenshot mình show ở trên cũng có được từ việc dump packet trong quá trình kết nối TeamViewer bình thường giữa 2 máy trong LAN mà. Ý bạn bất thường là thế nào?

 


Bình thường tức là đại trà và nhiều người sử dụng. smilie. Chưa hiểu ý anh lắm nhưng ở cái post thứ 5 e chỉ đơn thuần là mô tả lại việc 2 máy ở 2 nơi khác nhau trên mạng "teamview" thế nào thôi. Bịa là bịa cái gì anh. smilie.

Còn cái chuyện mà kết nối teamviewer ở trong mạng Lan thì chuyện đó xảy ra lâu rồi ở nhà thằng bạn 2 đứa nổi hứng thí nghiệm. Giờ bận quá nên chưa có điều kiện làm với bắt gói tin lại. smilie.

Từ trực tiếp ở đây e dùng ý là không thông qua server teamviewer. Chứ không phải ám chỉ 2 máy trong Lan kết nối trực tiếp với nhau. smilie.
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
2 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|