Unix SSH Tunnel and DNS over HTTPS
# Part I
1. Поднимаем Linux виртуалку на azure/aws, прописываем все необходимые рулы для того, чтобы порт 22 был доступен с вашего IP (или вообще со всех IP).
2. Получаем свой ssh ключ, либо нагенериваем и подкладываем на свою машину.
4. Далее устанавливаем на свою машину:
* sshuttle - Transparent proxy server that works as a poor man's VPN. Forwards over ssh. Doesn't require admin. Works with Linux and MacOS. Supports DNS tunneling.
```bash
- Ubuntu 16.04 or later:
apt-get install sshuttle
- Debian stretch or later:
apt-get install sshuttle
- Arch Linux:
pacman -S sshuttle
- Fedora:
dnf install sshuttle
- NixOS:
nix-env -iA nixos.sshuttle
- From PyPI:
sudo pip install sshuttle
- Clone:
git clone https://github.com/sshuttle/sshuttle.git
cd sshuttle
sudo ./setup.py install
- FreeBSD:
# ports
cd /usr/ports/net/py-sshuttle && make install clean
# pkg
pkg install py36-sshuttle
It is also possible to install into a virtualenv as a non-root user.
- From PyPI:
virtualenv -p python3 /tmp/sshuttle
. /tmp/sshuttle/bin/activate
pip install sshuttle
- Clone:
virtualenv -p python3 /tmp/sshuttle
. /tmp/sshuttle/bin/activate
git clone https://github.com/sshuttle/sshuttle.git
cd sshuttle
./setup.py install
- Homebrew:
brew install sshuttle
- Nix:
nix-env -iA nixpkgs.sshuttle
```
5. Проверяем, что есть доступ по SSH: ssh -i ~/.ssh/root.pem -p 22 ec2-user@1.1.1.1
* ~/.ssh/root.pem - путь к твоему ключу, 22 - порт, ec2-user - имя пользователя, 1.1.1.1 - IP виртуалки.
> 22 порт может быть доступен (пока). Скоро и у БТК(byfly) может отвалиться.
6. На своей машине: sudo sshuttle --ssh-cmd 'ssh -i /Users/ramzay/.ssh/root.pem -p 22' -r ec2-user@1.1.1.1 0.0.0.0/0
* macOS: /Users/{username}/.ssh/root.pem - полный путь к твоему ключу.
* Linux: /home/{username}/.ssh/root.pem - полный путь к твоему ключу.
* 0.0.0.0/0 - не менять.
# Part II
DNS over HTTPS (Catalina)
1. Скачиваем:
```bash
brew install dnscrypt-proxy
```
2. Тестируем, что резолвится сайт по имени:
```
dnscrypt-proxy -resolve {name_of_site_for_test}
```
3. Если всё ок - запускаем сервис
```bash
brew services start dnscrypt-proxy
```
4. Прописываем только что поднятый dns:
1. Apple
2. System preferences
3. Advanced...
4. DNS
5. "+" слева снизу
6. 127.0.0.1