Skip to content

Instantly share code, notes, and snippets.

@dwallraff
Created December 26, 2018 04:07
Show Gist options
  • Save dwallraff/83917600dc2cba417d1fc28f3f7f0eb2 to your computer and use it in GitHub Desktop.
Save dwallraff/83917600dc2cba417d1fc28f3f7f0eb2 to your computer and use it in GitHub Desktop.
apt-get through a socks5 proxy ?????

Should work through the config

Acquire::socks::proxy "socks5://server:port";
To keep apt.conf clean and avoid problems at Linux upgrade I created a new file (/etc/apt/apt.conf.d/12proxy) and added the config file to it.

Maybe UDP tunneling?

Performing UDP tunneling through an SSH connection

Step by step
Open a TCP forward port with your SSH connection

On your local machine (local), connect to the distant machine (server) by SSH, with the additional -L option so that SSH with TCP port-forward:

    local# ssh -L 6667:localhost:6667 server.foo.com
  

This will allow TCP connections on the port number 6667 of your local machine to be forwarded to the port number 6667 on server.foo.com through the secure channel.
Setup the TCP to UDP forward on the server

On the server, we open a listener on the TCP port 6667 which will forward data to UDP port 53 of a specified IP. If you want to do DNS forwarding like me, you can take the first nameserver's IP you will find in /etc/resolv.conf. But first, we need to create a fifo. The fifo is necessary to have two-way communications between the two channels. A simple shell pipe would only communicate left process' standard output to right process' standard input.

    server# mkfifo /tmp/fifo
    server# nc -l -p 6667 < /tmp/fifo | nc -u 192.168.1.1 53 > /tmp/fifo
  

This will allow TCP traffic on server's port 6667 to be forwarded to UDP traffic on 192.168.1.1's port 53, and responses to come back.
Setup the UDP to TCP forward on your machine

Now, we need to do the opposite of what was done upper on the local machine. You need priviledged access to bind the UDP port 53.

    local# mkfifo /tmp/fifo
    local# sudo nc -l -u -p 53 < /tmp/fifo | nc localhost 6667 > /tmp/fifo
  

This will allow UDP traffic on local machine's port 53 to be forwarded to TCP traffic on local machine's port 6667.
Enjoy your local DNS server :)

As you've probably guessed it now, when a DNS query will be performed on the local machine, e.g. on local UDP port 53, it will be forwarded to local TCP port 6667, then to server's TCP port 6667, then to server's DNS server, UDP port 53 of 192.168.1.1. To enjoy DNS services on your local machine, put the following line as first nameserver in your /etc/resolv.conf:

    nameserver 127.0.0.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment