Squid-Kit-Transparenter-Proxy nftables auf einem anderen Host

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Schaubild

Vorraussetzung


Voraussetzungen

  • Clients im Netz: 172.26.213.0/24
  • Proxy-Host: 10.88.213.4
  • Ziel: HTTP/HTTPS-Verkehr per Policy Routing an Squid weiterleiten, dort per REDIRECT + intercept abfangen

Firewall-Konfiguration

Die Datei /etc/nftables.conf ergänzen
table inet fwmark {
	chain prerouting {
		type filter hook prerouting priority mangle; policy accept;
		ip saddr 172.26.213.0/24 tcp dport { 80, 443 } meta mark set 0x00000001
	}
}
Neu laden
  • nft -f /etc/nftables.conf
Kontrolle
  • nft list ruleset
Policy Routing aktivieren
Die Datei /etc/networ/interfaces ergänzen
#LAN
auto enp0s8
iface enp0s8 inet static
 address 172.26.213.1/24
 post-up ip rule add fwmark 1 lookup 100
 post-up ip route add default via 10.88.213.4 table 100
Netzwerk neu starten

Proxy-Konfiguration (nftables REDIRECT)

Tabelle und Kette anlegen
  • nft add table ip nat
  • nft add chain ip nat prerouting '{ type nat hook prerouting priority dstnat; policy accept; }'
HTTP und HTTPS lokal umleiten
  • nft add rule ip nat prerouting tcp dport 80 redirect to :3129
  • nft add rule ip nat prerouting tcp dport 443 redirect to :3130

Squid-Konfiguration

vi /etc/squid/squid.conf

http_port 3129 intercept
https_port 3130 ssl-bump intercept cert=/etc/squid/certs/squid_proxyCA.pem key=/etc/squid/certs/squid_proxyCA.key generate-host-certificates=on options=NO_SSLv3,NO_TLSv1,NO_TLSv1_1
ssl_bump bump all

Hinweise

  • Squid übernimmt die Verbindungen lokal über redirect + intercept
  • Zertifikat muss existieren und lesbar für den Squid-Benutzer sein
  • Root-CA muss auf Clients importiert werden, um HTTPS-Warnungen zu vermeiden

Diagnose

  • tail -f /var/log/squid/access.log
  • tail -f /var/log/squid/cache.log
  • nft list ruleset
  • ip rule show
  • ip route show table 100