mirror of
https://codeberg.org/postscriptum/gemlog.git
synced 2026-02-18 22:12:40 +00:00
add squid-out-proxy.gmi
This commit is contained in:
parent
0ae35b8213
commit
c84ec21304
2 changed files with 94 additions and 0 deletions
93
public/uk/squid-out-proxy.gmi
Normal file
93
public/uk/squid-out-proxy.gmi
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
# Налаштування вихідного проксі на базі squid
|
||||
|
||||
Якось, був організував собі віртуальну систему, ізольовану від Інтернет засобами VSOCK, з доступом виключно до мережі Yggdrasil. Оскільки мені потрібно звідти якось брати оновлення і робити це безпечно, вирішив на іншій машині, де є Інтернет - підняти вихідний проксі (out-proxy)
|
||||
|
||||
## Сервер
|
||||
|
||||
В Debian, сервер squid ставиться з репозиторію:
|
||||
|
||||
``` bash
|
||||
apt install squid
|
||||
```
|
||||
|
||||
### Налаштування
|
||||
|
||||
Тут в мене передбачається взаємодія між проксі-сервером "a" та клієнтом "b" на IPv6 інтерфейсі:
|
||||
|
||||
``` /etc/squid/debian.conf
|
||||
#/etc/squid/debian.conf
|
||||
|
||||
# інтерфейс, на якому слухати вхідні підключення
|
||||
http_port [aaa:aaaa:aaaa:aaaa:aaaa]:3128
|
||||
|
||||
# налаштування журналів
|
||||
logfile_rotate 0
|
||||
|
||||
# оголошуємо групу "remote", куди входить IP "bbb:bbbb:bbbb:bbbb:bbbb"
|
||||
acl remote src bbb:bbbb:bbbb:bbbb:bbbb
|
||||
|
||||
# оголошуємо набір правил "updates" типу "dstdomain"
|
||||
# мені проксі потрібен тільки для системних оновлень,
|
||||
# окрім iptables, на всяк випадок, я вирішив додати правила на піддомени (у вас може бути інший набір - дивіться /etc/apt/sources.list.d)
|
||||
acl updates dstdomain .debian.org .debian.net .armbian.com .github.com .gitlab.com .crates.io .fastlydns.net .librewolf.net .nodesource.com
|
||||
|
||||
# вмикаємо обмеження у послідовності
|
||||
http_access allow remote updates
|
||||
http_access deny all
|
||||
```
|
||||
|
||||
Запускаємо і дивимось чи все в порядку:
|
||||
|
||||
* `systemctl restart squid` - застосувати зміни конфігурації (перезапуск)
|
||||
* `systemctl enable squid` - автозапуск проксі сервера при старті системи
|
||||
* `systemctl status squid` - статус проксі сервера
|
||||
* `netstat -tulpn | grep 3128` - перевірити, де слухається порт
|
||||
|
||||
### Фаєрвол
|
||||
|
||||
Yggdrasil - це локальна мережа, відповідно до нашого проксі можуть підключитись усі її користувачі (а не тільки наша віртуальна машина)
|
||||
Якщо ви не хочете щоб усі ходили з вашого Інтернет IP на вказані сервери групи "updates", потрібно дозволити доступ тільки конкретній адресі, у нашому випадку це "b". Для керування iptables, я використовую фронт-енд ufw, тому приклад такий:
|
||||
|
||||
```
|
||||
ufw allow from bbb:bbbb:bbbb:bbbb:bbbb to aaa:aaaa:aaaa:aaaa:aaaa port 3128 proto tcp
|
||||
```
|
||||
* переконайтесь що фаєрвол активний і правило додане: `ufw status`
|
||||
|
||||
Також, в мене вимкнені вихідні (пірингові) підключення в Інтернет з машини "a" де працює проксі-сервер, тому я окремо дозволив вихід на 80/443 TCP:
|
||||
|
||||
``` bash
|
||||
ufw allow out 80,443/tcp
|
||||
```
|
||||
|
||||
На Веб-порти, я згодом планую дозволяти тільки конкретні IP по списку. Для цього знадобиться скрипт, що резольвитиме DNS і оновлюватиме правила iptables. Є готові "комбайни" типу Dansguardian, але мені тут не потрібен батьківський контроль з його семантичними фільтрами. Вирішуйте це питання для себе окремо.
|
||||
|
||||
## Клієнт
|
||||
|
||||
На клієнтській машині, в залежності від програмного забезпечення, шукаємо його налаштування і вказуємо там проксі. На прикладі apt в Debian, це буде файл:
|
||||
|
||||
``` /etc/apt/apt.conf.d/proxy.conf
|
||||
#/etc/apt/apt.conf.d/proxy.conf
|
||||
Acquire::http::Proxy "http://[aaa:aaaa:aaaa:aaaa:aaaa]:3128";
|
||||
Acquire::https::Proxy "http://[aaa:aaaa:aaaa:aaaa:aaaa]:3128";
|
||||
```
|
||||
|
||||
Для підключення репозиторіїв утилітою extrepo, використовується команда з префіксом:
|
||||
|
||||
```
|
||||
https_proxy=http://[aaa:aaaa:aaaa:aaaa:aaaa]:3128 extrepo enable librewolf
|
||||
```
|
||||
* або / і `http_proxy`
|
||||
|
||||
І так далі: тут гуглимо для себе, що кому треба.
|
||||
|
||||
Якщо при підключенні бачите помилку групи 400, ймовірно потрібно додати домен до білого списку: йдемо на сервер і змінюємо нашу групу ACL ("updates"), після чого перезапускаємо squid і пробуємо підключитись знову.
|
||||
|
||||
## Посилання
|
||||
|
||||
=> https://devzone.org.ua/post/nalashtuvannia-vykhidnoho-proksi-na-bazi-squid Веб-версія цього матеріалу з коментарями на DevZone
|
||||
|
||||
### Читайте також
|
||||
|
||||
=> linux-isolation-from-direct-internet-connections-based-on-qemu-virtual-machine-manager-with-vsock.gmi Ізоляція Linux від прямих Інтернет з'єднань на базі QEMU / Virtual Machine Manager з VSOCK
|
||||
=> filter-outgoing-connections-with-ufw.gmi Обмеження вихідних з'єднань на Інтернет з ufw
|
||||
=> yggdrasil-is-network-with-distributed-routing.gmi Yggdrasil - мережа з децентралізованою маршрутизацією
|
||||
Loading…
Add table
Add a link
Reference in a new issue