TCP Tunneling Applications Pros and Cons (Explained by Example)

แชร์
ฝัง
  • เผยแพร่เมื่อ 31 พ.ค. 2024
  • 💻 More software engineering videos • Software Engineering b...
    Tunneling is the process of encapsulating content from a protocol A into another protocol B, usually because protocol A is blocked or unavailable. In this video we will explain how TCP tunneling works, the applications of TCP tunnels and the pros and cons. Coming up!
    * TCP Tunneling
    * Applications
    * Pros and Cons
    TCP Tunneling
    Here is how TCP Tunneling works.
    Lets say your goal is to access a website that your ISP proxy blocks www.server2.com this is hosted on server2 on port 80. Lets say there is another Server1 that you have access to and Server1 have direct access to Server2. So if you can make Server1 make the request on your behave to Server2 and somehow deliver the results back to you, you just created a tunnel between You and Server1.
    Here is how it actually works.
    You create a legit tcp connection over a known protocol such as SSH between you and Server1. You then create a tcp packet that is intended for Sever2 so you tag it with Server2:80. Then you package that packet into another TCP packet intended for Server1! Huh ! Server1:22. You then forward the packet over, your ISP police will see that there is a packet intended to Server1 on port 22. Proxy approves and forwards it over not knowing that you are smuggling content in that packet. Also the proxy cant even look in the content because its encrypted with RSA. Server1 unpacks the package, decrypt and discover that its an other tcp packet. Here is where the shady stuff happen. Server1 now looks and see that the smuggled package is intended for Server2:80, created a connection and delivers the package it, it changes the source ip to its self and keeps track somehow of that. Once it receives the package it knows that this package has to go back to tunnel. The client now have access to the blocked site! What does this look like guys? Yes you guessed it its a VPN.
    It’s literally like smuggling content inside a package 📦 that looks legitimate.
    Server1 and Server2 can be the same server
    There are many types of tunneling
    Local port forwarding: Remote connection,
    Socks Proxy: forward pretty much anything (VPN)
    Reverse Tunneling : Expose local web server publically
    Applications
    VPN
    Securing an insecure connection
    Anonymity
    Bypass firewall
    SOCKS 4 proxy
    redirect all your traffic regardless of the port to an internal proxy instead which tunnels it. Dynamic port forwarding
    Pros
    Secure connection
    Access blocked services
    Anonymity
    Expose internal traffic
    Cons
    TCP meltdown (TCP over TCP)
    Slow retransmission
    Stateful
    Local port forwarding
    Just one app gets forwarded when the local port is requested
    Socks
    All apps goes through the proxy
    Http tunneling
    TCP VS UDP 1:00
    11:00 OSI model
    15:40 private vs public ip
    18:35 proxy vs reverse proxy
    24:30 TLS
    11:20 local
    16:20 reverse
    20:40 socks
    Stay Awesome!
    Hussein
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 68

  • @hnasr
    @hnasr  ปีที่แล้ว

    Get my Fundamentals of Networking for Effective Backends udemy course Head to network.husseinnasser.com for a discount coupon (link redirects to udemy with coupon applied)

  • @christianjohansson9309
    @christianjohansson9309 4 ปีที่แล้ว +7

    Thanks! These videos are great. Think I've watched them all soon 😁

  • @rongliao9255
    @rongliao9255 4 ปีที่แล้ว +3

    Great tutorial with clear concise explanation! Plus, really good examples!

  • @TarunKumar-en8si
    @TarunKumar-en8si 3 ปีที่แล้ว +1

    This was very well explained. It is only a matter of time before your channel blows up. Subscribed!

  • @StuxNETozor
    @StuxNETozor 3 ปีที่แล้ว +6

    You're a great teacher Hussein, thanks for sharing knowledge !

    • @hnasr
      @hnasr  3 ปีที่แล้ว +1

      ❤️

  • @dexterflodstrom9975
    @dexterflodstrom9975 3 ปีที่แล้ว

    Awesome video! Really easy to understand, thanks a lot man

  • @jarinlima
    @jarinlima 4 ปีที่แล้ว +1

    Hi bro, I really loved your video and your way of explaining, it is a topic that had taken me a lot of work to understand and now I understand it thanks to you, greetings from Guatemala! I subscribe immediately

    • @hnasr
      @hnasr  4 ปีที่แล้ว +1

      Hey Jarin, I absolutely appreciate your comment. Glad I could simplify the topic. Love to all my subscribers from Guatemala 🇬🇹 the land of great coffee ☕️

  • @utsabbanerjee9672
    @utsabbanerjee9672 2 ปีที่แล้ว

    I am glad that you talk about random stuff

  • @balamca416
    @balamca416 3 ปีที่แล้ว

    Awesome videos, you are great teacher, i will watch all videos.

  • @stephenschneider5240
    @stephenschneider5240 3 ปีที่แล้ว

    Thanks for breaking this down so even I can understand

  • @bihireboris3407
    @bihireboris3407 4 ปีที่แล้ว

    big thanks bro to those computer science lessons bro, for self teaching developers we only get lessons to make pages run we don't get access to those info 👌👌

    • @hnasr
      @hnasr  4 ปีที่แล้ว +1

      bihire boris thank you ! I really like to share whatever new info I learn and there is endless sea 🌊 of good software engineering out there! Appreciate the support

  • @richardcoleman4686
    @richardcoleman4686 ปีที่แล้ว

    Really well done video. Thanks for sharing.

  • @kenilpatel7841
    @kenilpatel7841 3 ปีที่แล้ว +1

    Really great video!!
    But just one question: Why would S2 entertain request coming from S1 but not from other clients (C1 in this case)?

  • @SaidNuriUYANIK
    @SaidNuriUYANIK 4 ปีที่แล้ว

    Great video and explanation, thank you so much

    • @hnasr
      @hnasr  4 ปีที่แล้ว

      Said Nuri UYANIK thanks Said!

  • @vladislavkaras491
    @vladislavkaras491 6 หลายเดือนก่อน

    Really great video!
    Thanks!

  • @ArchiDimon
    @ArchiDimon 2 ปีที่แล้ว

    Awesome content! Your channel is the first place I go to learn any new concept - before diving deeper into the docs.
    Great teaching skills!

  • @glenndwiyatcita1663
    @glenndwiyatcita1663 3 ปีที่แล้ว +1

    Thank you for the video, Hussein. 🙇🏻‍♂️ I'm a wee confused of the concept terminologies though: how is it different from VPN? Is tunnelling protocol actually the underlying protocol of VPN?

  • @munshiyadav4405
    @munshiyadav4405 7 หลายเดือนก่อน

    Great tutorials 😍😍I am enjoying it alot

  • @matteodefanti1654
    @matteodefanti1654 3 ปีที่แล้ว

    In your opinion, what is the mechanism of teamviewer or anydesk?
    Thanks

  • @ecw0647
    @ecw0647 3 ปีที่แล้ว

    This is very interesting. I use VMware a lot and my concern would be that tunneling might provide a way to negate the benefits of the VM. Is that something someone should worry about?

  • @anshikagupta4931
    @anshikagupta4931 2 ปีที่แล้ว +1

    I ditched Netflix for you !!! Are you a CDN ? I literally love the way you deliver content !

  • @rogerward0
    @rogerward0 3 ปีที่แล้ว

    lol I love your explanations. Thanks for the great vid.

    • @hnasr
      @hnasr  3 ปีที่แล้ว

      Thanks Roger!

  • @djnoteazy
    @djnoteazy 3 ปีที่แล้ว

    On the Pros and Cons slide... Isn't it should be STATELESS since you have to reconnect to the server if connection brakes?

  • @thatshay3217
    @thatshay3217 4 ปีที่แล้ว +2

    this helped thanks so much

    • @hnasr
      @hnasr  4 ปีที่แล้ว +1

      That's Hay happy to help! 😊

  • @Ms.Robot.
    @Ms.Robot. 3 ปีที่แล้ว

    I like this one. ❤ It was good. 😍

  • @mozartgodson
    @mozartgodson 4 ปีที่แล้ว

    God bless you bro....

    • @hnasr
      @hnasr  4 ปีที่แล้ว

      Godson Rajamanickam 🙏

  • @ianurbina9777
    @ianurbina9777 3 ปีที่แล้ว

    Thanks!

  • @sahilsharma-hj4gq
    @sahilsharma-hj4gq 3 ปีที่แล้ว +1

    I think you are talking about LUCY movie bro in the end.

  • @thegame8538
    @thegame8538 2 ปีที่แล้ว

    I am trying to find a place to buy SSH Tunnel no-login servers. Have any ideas?

  • @MrOtmix
    @MrOtmix 4 ปีที่แล้ว +1

    Thanks! This video is great. i have a question : is possible to connect to my local server using IP public (Router) with a specific port ? my machine has a Privat IP

    • @hnasr
      @hnasr  4 ปีที่แล้ว +1

      Dzino XP hey! Sure you can. If you opened that port on your router th-cam.com/video/92b-jjBURkw/w-d-xo.html

    • @MrOtmix
      @MrOtmix 4 ปีที่แล้ว

      @@hnasr Thanks sir, but i install xamp and i make change to port of apache at 8012 and open the port on my router so my router ip is for exmple 1.1.1.1 and my local ip is 192.168.1.2 , but when i type 1.1.1.1:8012 dont works "The connection has timed out" but it's work when i type 192.168.1.2:8012 and also work fine with ngrok

    • @MrOtmix
      @MrOtmix 4 ปีที่แล้ว

      Any solution ?

  • @IgorAherne
    @IgorAherne 4 ปีที่แล้ว +1

    Thanks man

    • @hnasr
      @hnasr  4 ปีที่แล้ว

      Your welcome Igor 🙏

  • @palaniappanrm6277
    @palaniappanrm6277 4 ปีที่แล้ว

    So when you connect to VPN from laptop/mobile, essentially what happens is a local port forwarding to that IP address. That actually makes sense. But how do we get a private IP of that VPN network once the connection gets established? In that case, it means we're already connected in that network locally. Then why do we need this local port forwarding? Not needed right? I hope I'll not confusing you.

    • @hnasr
      @hnasr  4 ปีที่แล้ว

      I talk about VPN here and explain I think answers your questions th-cam.com/video/npnqyRT77Zc/w-d-xo.html

  • @pkcc9381
    @pkcc9381 4 ปีที่แล้ว

    Awesome videos. Can you please make a Video on Onion Routing, How does it bring Anonymity.

    • @hnasr
      @hnasr  4 ปีที่แล้ว

      That is a great suggestion! Ill add it to my todo!

  • @dheelakaperera3741
    @dheelakaperera3741 4 ปีที่แล้ว

    Hey how to surf internet from only using youtube server i am free to use youtube from data charges and i want to surf other websites also how can i do itn plz guide me

  • @pajotrus
    @pajotrus 4 ปีที่แล้ว

    A great video, I've learnt a lot, but I have on doubt: 12:40 - this mini server (the entry to the tunnel) is actually an IpSec client? (I'm watching VPN vs Proxy video right now)

    • @hnasr
      @hnasr  4 ปีที่แล้ว +1

      Correct! Either an IPSec or SOCKS proxy. Anything that can does the VPNing.

  • @nathanbenton2051
    @nathanbenton2051 3 ปีที่แล้ว

    Really awesome videos! Is there ever UDP tunneling?

    • @hnasr
      @hnasr  3 ปีที่แล้ว +1

      You made me research that haha not sure there is because tunneling require a two way connection.. i suppose you can create a UDP tunnel if you manage it at the application side?
      But you 100% sure you can tunnel UDP traffic through a TCP tunnel .

  • @255pixels9
    @255pixels9 4 ปีที่แล้ว

    Hey Hussein. You are awesome! I am stuck with a reverse port forwarding tunnel method.. your suggestion would help:
    I have computers A (dynamic IP), S (Server with Public IP) and C (client with dynamic IP). Trying to access A from C via S.
    I first created a SSH Key on A. Copied the public key from A to S. Then used the private key to create reverse ssh tunnel from A to S at random port 55000. It connects fine.
    Then I create a SSH Key on C. Copied the public key from C to S. Then used the private key to SSH to S at port 55000 as follows:
    SSH -i PRIVKEY -p 55000 Server
    It says permission denied public Key.. I am unable to get past this.. How to connect from C to A.. I need a programmatic solution.. Can't find a way through this..

    • @hnasr
      @hnasr  4 ปีที่แล้ว

      Hey thanks for your message.
      You didn’t specify which port you want to connect on machine A. Am going to assume 80.
      I think it should be enough to do the reverse tunneling ssh between A and S having S use a the public ip/port 55000 that map to a port 80 on your computer A . Now machine C just connects normally (http) to machine S On port 55000 and that will tunnel requests to your A machine..

    • @255pixels9
      @255pixels9 4 ปีที่แล้ว

      @@hnasr sorry I forgot to mention. It's port 22 on which I want to connect.. So that I can do SSH into A from terminal on C.

  • @ankuragarwal9712
    @ankuragarwal9712 ปีที่แล้ว

    in local port forwarding we are trying to connect to a server1 :3389 but how does the client knows that the tunnel through which it can go is server2:22

    • @ankuragarwal9712
      @ankuragarwal9712 ปีที่แล้ว

      still the same thing is happening right?.....even server2:22 is also sitting beside a firewall.....so how do client can interact with server2:22 but not server1:3389

  • @elikelik3574
    @elikelik3574 4 ปีที่แล้ว

    Thanks for the interesting content. I have a question, I red somewhere that in vpn connection first time it uses tcp but inside tunnel it uses udp that is why it is not so slow. But u said it used tcp over tcp or u did not mean vpn connection? By the way it would super helpful if you beside presentation show us real life example or maybe in packet Tracer something like that :D

    • @hnasr
      @hnasr  4 ปีที่แล้ว +1

      Elik Elik thanks for the suggestion. As for your comment that VPN tunnels in udp Im not sure if thats true, otherwise you will be losing data like crazy.
      The slowness is due to extra layer of encryption, multiple hops and packet packaging.
      Cheers hope that helps

  • @jacoborb5
    @jacoborb5 3 ปีที่แล้ว

    Do you know an udp tunneling tool ?

  • @mostinho7
    @mostinho7 3 ปีที่แล้ว

    7:45
    Local port forwarding vs reverse port forwarding

  • @Storabrost
    @Storabrost 3 ปีที่แล้ว

    "Go ahead sir!" LOL

  • @pinhead3030
    @pinhead3030 4 ปีที่แล้ว +1

    those two dislikes are from hackers i bet

  • @turner7777
    @turner7777 2 ปีที่แล้ว

    isnt this just using S1 as a proxy ? 8:00

  • @shubham_srt
    @shubham_srt 2 ปีที่แล้ว

  • @RaviSharma-br3lq
    @RaviSharma-br3lq 3 ปีที่แล้ว

    If u know hindi make video in hindi

  • @hellelo.5840
    @hellelo.5840 ปีที่แล้ว

    TCP Smuggling.