Folosesc Iptables pentru a direcționa traficul https de la Internet către o rețea internă prin HAproxy.
Regulile Iptables NAt sunt:
iptables -i eth0 -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 10.0.0.7
iptables -i eth0 -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.0.7
iptables -t nat -A POSTROUTING -j MASQUERADE
au fost 10.0.0.0/24 este un VPN Wireguard (IP-ul serverului este 10.0.0.1, IP-ul haproxy este 10.0.0.7)
Apoi vreau să văd IP-ul de origine conectat în HAproxy, dar pot vedea numai IP-ul serverului VPN:
# coada -f /var/log/haproxy
14 iulie 18:27:02 localhost haproxy[13304]: 10.0.0.1:57539 [14/Jul/2021:18:27:02.199] fe-frontend-https~ fe-frontend-https/<NOSRV> -1/- 1/-1/-1/0 503 99 - - SC-- 1/1/0/0/0 0/0 „GET /.env HTTP/1.1
Cum pot proxy traficul într-un mod transparent, astfel încât HAproxy să poată înregistra IP-ul extern de origine?
Mulțumiri
editat:
Toate regulile Iptables:
# iptables -L --line-numbers -v
INTRARE în lanț (politica ACCEPTĂ 757M pachete, 641G octeți)
num pkts octeți target prot opt in out sursă destinație
1 0 0 ACCEPT udp -- virbr10 oriunde oriunde udp dpt:domeniu
2 0 0 ACCEPT tcp -- virbr10 oriunde oriunde tcp dpt:domeniu
3 83841 27M ACCEPT udp -- virbr10 oriunde oriunde udp dpt:bootps
4 0 0 ACCEPT tcp -- virbr10 oriunde oriunde tcp dpt:67
5 12 1008 ACCEPT icmp -- orice orice 10.0.0.0/8 oriunde icmp echo-request
6 0 0 ACCEPT icmp -- orice orice 10.0.0.0/8 oriunde icmp echo-reply
Lanț FORWARD (politica ACCEPTĂ 482M pachete, 578G octeți)
num pkts octeți target prot opt in out sursă destinație
1 589M 441G ACCEPT pe toate -- orice virbr10 oriunde 192.168.100.0/24 ctstate RELATED,STABLISHED
2 744M 637G ACCEPT pe toate -- virbr10 orice 192.168.100.0/24 oriunde
3 0 0 ACCEPT toate -- virbr10 virbr10 oriunde oriunde
4 0 0 REJECT all -- orice virbr10 oriunde oriunde respingere-cu icmp-port-inaccesibil
5 296 11864 REJECT all -- virbr10 oriunde oriunde respingere-cu icmp-port-inaccesibil
IEȘIRE în lanț (politica ACCEPTĂ 753M pachete, 664G octeți)
num pkts octeți target prot opt in out sursă destinație
1 83839 28M ACCEPT udp -- orice virbr10 oriunde oriunde udp dpt:bootpc
# iptables -L -n -t nat -v
PRERUUTARE în lanț (politica ACCEPTĂ 31 de milioane de pachete, 1964 de milioane de octeți)
pkts bytes target prot opt in out source destination
23743 1296K DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 la:10.0.0.7
3935 182K DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 la:10.0.0.7
INTRARE în lanț (politica ACCEPT 0 pachete, 0 octeți)
pkts bytes target prot opt in out source destination
POSTROUTING în lanț (politica ACCEPTĂ 9549 pachete, 531K octeți)
pkts bytes target prot opt in out source destination
0 0 RETURN all -- * * 192.168.100.0/24 255.255.255.255
4660 280K MASQUERADE tcp -- * * 192.168.100.0/24 !192.168.100.0/24 masq porturi: 1024-65535
7729 704K MASQUERADE udp -- * * 192.168.100.0/24 !192.168.100.0/24 masq porturi: 1024-65535
2 168 MASQUERADE toate -- * * 192.168.100.0/24 !192.168.100.0/24
0 0 RETURN all -- * * 192.168.100.0/24 224.0.0.0/24
0 0 RETURN all -- * * 192.168.100.0/24 255.255.255.255
0 0 MASQUERADE tcp -- * * 192.168.100.0/24 !192.168.100.0/24 masq porturi: 1024-65535
0 0 MASQUERADE udp -- * * 192.168.100.0/24 !192.168.100.0/24 masq porturi: 1024-65535
0 0 MASQUERADE toate -- * * 192.168.100.0/24 !192.168.100.0/24
19M 1143M MASQUERADE toate -- * * 0.0.0.0/0 0.0.0.0/0
0 0 MASQUERADE toate -- * * 0.0.0.0/0 0.0.0.0/0
0 0 MASQUERADE toate -- * * 0.0.0.0/0 0.0.0.0/0
IEȘIRE în lanț (politica ACCEPT 20209 pachete, 2137K octeți)
pkts bytes target prot opt in out source destination
(în mare parte sunt reguli NAT implicite pentru libvirt)