Добрый день Вообще-то все описано 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 mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru