Re: Проброс https на порт, отличный от 443
oradba25
nginx-forum на forum.nginx.org
Вт Окт 31 00:36:06 UTC 2017
Добрый день
Вообще-то все описано
https://www.nginx.com/blog/ip-transparency-direct-server-return-nginx-plus-transparent-proxy
У меня для Linux нарисована такая инструкция, может есть какие-то
неточности:
-- NGINX должен осуществлять привязку к локальному сокету любого адреса
(внешнего адреса клиента), поэтому он должен работать с правами root (что
есть весьма несекурно, тем более что он торчит наружу):
user root
...
server {
...
proxy_bind $remote_addr transparent;
...
}
-- Маршрутизировать все требуемые пакеты внутри себя (не выпускать наружу).
Правила сохранены в /etc/sysconfig/iptables, маршрутизация в route-eth0,
rule-eth0 каталога /etc/sysconfig/network-scripts. (Чтоб правила
подхватились в CentOS 7 надо запретить NetworkManager.service,
Firewall.service и разрешить network.service, iptables.service, либо
научиться настраивать Firewall.service):
iptables -t mangle -N DIVERT # Новая
цепочка
iptables -t mangle -A DIVERT -j MARK --set-mark 0x1/0xffffffff # Просто
маркируем пакет
iptables -t mangle -A DIVERT -j ACCEPT # И
пропускаем
iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT # Все пакеты
для уже открытых сокетов отправляются в DIVERT, где просто помечаются
iptables -t mangle -A PREROUTING -p tcp -m multiport --sport
443,10443,8080,8081 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 0
# Все ответы
от серверов помечаем и пробрасываем на localhost:0
ip rule add fwmark 1 lookup 100 # Все
маркированные пакеты обрабатываем таблицей маршрутизации 100
ip route add local 0.0.0.0/0 dev lo table 100 # Где просто
обрабатываем их локально
ip route flush cache
-- На проксируемых (upstream) серверах возвращать ответы на NGINX,
независимо от адреса назначения (Default route to NGINX). Для этого можно
поднять фиктивный интерфейс, куда и ходит именно NGINX в той же подсети.
HTTP-сервер должен слушать этот адрес. Это прописывается в файлах
ifcfg-eth0:0, route-eth0:0, rule-eth0:0 каталога
/etc/sysconfig/network-scripts:
ip addr add IP_адрес_интерфейса/27 brd broadcast_интерфейса dev eth0 label
eth0:0 # Адрес куда ходит NGINX
ip rule from IP_адрес_интерфейса table 100
# Все пакеты с этого адреса обрабатываются таблицей
маршрутизации 100
ip route IP_адрес_интерфейса dev eth0 proto kernel scope link src
IP_адрес_интерфейса table 100 # Где прописан сам этот адрес
ip route default via IP_адрес_сервера_NGINX dev eth0 table 100
# И дефолтовый маршрут на NGINX
ip route flush cache
Posted at Nginx Forum: https://forum.nginx.org/read.php?21,276241,277142#msg-277142
Подробная информация о списке рассылки nginx-ru