Вітаю! Нарешті виділив час, щоб продовжити писати, сьогодні ми розглянемо налаштування 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 залежно від порту.
Дякую за увагу!
Залишайте свої питання в коментарях буду радий відповісти.