Друкарня від WE.UA

HTTP проксі-сервер на декілька маршрутів

Вітаю! Нарешті виділив час, щоб продовжити писати, сьогодні ми розглянемо налаштування HTTP проксі-сервера з вибором маршрути та прив’язкою до порту.

В попередній статті ми розглянули базове налаштування проксі-сервера, також в цій статті ми використаємо маршрутизацію пакетів на основі політики маршрутизації.


Технічне завдання:

Короткий опис:
Налаштувати проксі сервер з декількома IP, щоб залежно від вказаного порту користувач виходив в інтернет через певний IP.

В наявності :
сервер з інстальованою Ubuntu 22.04;
до сервера під’єднано 3 IP адреси, 1 без тегу та 2 додаткові з тегом;

Коментар:
Оскільки це проксі сервер я хотів би мати доступ до нього через ip яка без тегу, а ось виходити в інтернет через ip який з тегом.


Почнемо реалізацію

Для початку ми під’єднаємо IP що з тегом до сервера використовуємо, налаштуємо netplan:

   vlans:
    vlan.401: # створюємо інтерфейс 
      id: 401 # тег
      link: eth0 # основний наш інтерфейс
      dhcp4: false # налаштування ми не будемо 
      addresses: [10.4.1.2/30] # наш IP
      routes: 
      - to: default # маршрут за замовчання
        via: 10.4.1.1 # IP основного шлюзу
        table: 401 # таблиця маршрутизації
      routing-policy: # політика маршрутизації
      - from: 10.4.1.0/30 # всі пакети цієї мережі будемо відправляти 
        table: 401 # в нашу таблицю маршрутизації

    vlan.402:
      id: 402
      link: eth0
      dhcp4: false
      addresses: [10.4.2.2/30]
      routes: 
      - to: default
        via: 10.4.2.1
        table: 402
      routing-policy:
      - from: 10.4.2.0/30
        table: 402

Дозволяємо ipv4 forward:

sed -i 's/.*net.ipv4.ip_forward.*/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
sysctl -p

Тепер налаштуємо squid, відкриваємо основний файл конфігурації та приводимо його до наступного вигляду

# видаляємо заголовки X-Forwarded-For
forwarded_for delete
# відключаємо додавання заголовку via
via off
# порти на які ми будемо звертатися
http_port 10401
http_port 10402

# забороняємо передавати заголовок Cache-Control
request_header_access Cache-Control deny all
# налаштування списки доступу
acl port_10401 localport 10401
acl port_10402 localport 10402

access_log /var/log/squid/access.log

auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic realm proxy
acl auth_users proxy_auth REQUIRED
# вказуємо маршрут на основі списків доступу
tcp_outgoing_address 10.4.1.2 port_10401
tcp_outgoing_address 10.4.2.2 port_10402

http_access allow auth_users
http_access deny

Створюємо користувачів:

# виконавши команду ми повинні вказати паролль для користувача 
# (-c якщо файла не існує)
htpasswd -c /etc/squid/passwd proxyuser
# пароль користувача
New password:
# повторіть пароль користувача
Re-type new password:

Можемо ще трохи додати параметрів, щоб TCP/IP Fingerprint був Windows

cat >> /etc/sysctl.conf <<EOF
net.ipv4.tcp_timestamps=0
net.ipv4.tcp_window_scaling=0
EOF
sysctl -p

Основні налаштування закінчили, підсумуємо що виконали:

  • Під'єднали додаткові IP;

  • Налаштували проксі сервер для роботи з додатковими IP залежно від порту.

Дякую за увагу!
Залишайте свої питання в коментарях буду радий відповісти.

Статті про вітчизняний бізнес та цікавих людей:

Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Олег Ковалєвський
Олег Ковалєвський@oleh.k

3Довгочити
4Підписники
Підтримати
На Друкарні з 20 березня

Більше від автора

  • SQUID, HTTP проксі-сервер

    Squid - це проксі-сервер і система кешування, яка дозволяє контролювати та моніторити вхідний і вихідний інтернет-трафік в мережі. Основна функція Squid - це обслуговування запитів від клієнтів (зазвичай веб-браузерів) та пересилання їх до віддалених серверів.

    Теми цього довгочиту:

    Linux

Це також може зацікавити:

  • Піднімаємо Exit Node на Linux сервері за допомогою Tailscale VPN.

    Tailscale сервіс для обʼєднання декількох девайсів в VPN на протоколі WireGuard. Tailscale дуже легко налаштовується якщо треба обʼєднати декілька ПК/ноутів на різних ОС, і доволі легко (порівнюючи з OpenVPN) якщо треба додати сервер.

    Теми цього довгочиту:

    Vpn
  • Чому вхід під root в Linux — це катастрофа, що чекає свого часу

    Використання root-доступу може здатися зручним способом обійти обмеження дозволів, але насправді це створює серйозні ризики безпеки для вашої системи. Якщо ваш дистрибутив Linux все ще дозволяє входити під обліковим записом root, ось чому ви ніколи не повинні цього робити.

    Теми цього довгочиту:

    Linux
  • Командний рядок у деяких відомих програмах

    Від початку комп’ютерної ери взаємодія з програмами відбувалась через введення команд з клавіатури. Згодом всі головні програми перейшли на графічний інтерфейс, але дещо й залишилось

    Теми цього довгочиту:

    Linux

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Це також може зацікавити:

  • Піднімаємо Exit Node на Linux сервері за допомогою Tailscale VPN.

    Tailscale сервіс для обʼєднання декількох девайсів в VPN на протоколі WireGuard. Tailscale дуже легко налаштовується якщо треба обʼєднати декілька ПК/ноутів на різних ОС, і доволі легко (порівнюючи з OpenVPN) якщо треба додати сервер.

    Теми цього довгочиту:

    Vpn
  • Чому вхід під root в Linux — це катастрофа, що чекає свого часу

    Використання root-доступу може здатися зручним способом обійти обмеження дозволів, але насправді це створює серйозні ризики безпеки для вашої системи. Якщо ваш дистрибутив Linux все ще дозволяє входити під обліковим записом root, ось чому ви ніколи не повинні цього робити.

    Теми цього довгочиту:

    Linux
  • Командний рядок у деяких відомих програмах

    Від початку комп’ютерної ери взаємодія з програмами відбувалась через введення команд з клавіатури. Згодом всі головні програми перейшли на графічний інтерфейс, але дещо й залишилось

    Теми цього довгочиту:

    Linux