

<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Transparent &#8211; OmnesPRO GmbH</title>
	<atom:link href="https://www.omnespro.ch/post/tag/transparent/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.omnespro.ch</link>
	<description></description>
	<lastBuildDate>Sat, 20 Jun 2026 16:59:08 +0000</lastBuildDate>
	<language>de-CH</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://www.omnespro.ch/wp-content/uploads/2023/07/cropped-OmnesPRO-final-large-32x32.png</url>
	<title>Transparent &#8211; OmnesPRO GmbH</title>
	<link>https://www.omnespro.ch</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>transparenter Reverse-Proxy mit SNIProxy</title>
		<link>https://www.omnespro.ch/post/transparenter-reverse-proxy-mit-sniproxy/</link>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Wed, 27 Dec 2023 21:14:29 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[gewusstwie]]></category>
		<category><![CDATA[hint]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[HTTPS]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[SNI]]></category>
		<category><![CDATA[tom.aeby@omnespro.ch]]></category>
		<category><![CDATA[Transparent]]></category>
		<category><![CDATA[Webserver]]></category>
		<guid isPermaLink="false">https://omnespro.fuertests.ch/post/transparenter-reverse-proxy-mit-sniproxy/</guid>

					<description><![CDATA[Vor einer Weile haben wir uns mit SNIProxy als einem sehr einfachen Reverse Proxy&#160;befasst. Ein Nachteil, den die Verwendung von Reverse Proxies f&#252;r Web-Zugriffe oft hat, ist, dass aus Sicht des dahinterliegenden Webservers Requests nicht vom eigentlichen Client zu kommen scheinen, sondern eben vom Proxy-Rechner. Das ist unpraktisch, da in Logs und Statistiken so der [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Vor einer Weile haben wir uns mit <a href="https://www.omnespro.ch/post/einfacher-reverse-proxy-als-weiche-zu-mehreren-webservern-und-verteilte-ssl-zertifikate">SNIProxy als einem sehr einfachen Reverse Proxy&#160;befasst</a>. Ein Nachteil, den die Verwendung von Reverse Proxies f&#252;r Web-Zugriffe oft hat, ist, dass aus Sicht des dahinterliegenden Webservers Requests nicht vom eigentlichen Client zu kommen scheinen, sondern eben vom Proxy-Rechner. Das ist unpraktisch, da in Logs und Statistiken so der eigentliche Client nicht auftaucht.</p>
<p>&#010;&#010;</p>
<p>Manche Proxies kennen M&#246;glichkeiten, um dieses Problem zu umgehen. SNIProxy l&#228;sst sich in einem transparenten Modus betreiben, in dem die Quell-Adresse der Verbindungen beibehalten wird.</p>
<p>&#010;&#010;</p>
<h3>SNIProxy im transparenten Modus</h3>
<p>&#010;&#010;</p>
<p>SNIProxy in den transparenten Modus zu versetzen ist auf den ersten Blick ganz einfach: &#220;ber die Konfigurationsdirektive <em>source client</em>&#160;im passenden Listener teilt man dem SNIProxy mit, er m&#246;chte doch bitte als Quell-Adresse f&#252;r die Verbindungen gegen innen die urspr&#252;ngliche IP des Clients verwenden, z.B. so:</p>
<p>&#010;&#010;</p>
<pre><code>listen 192.168.1.15 80 {&#010;   proto http&#010;   source client&#010;....&#010;</code></pre>
<p>&#010;&#010;</p>
<p>Als Beispiel verwenden wir 192.168.1.15 als IP f&#252;r den Proxy. Es gibt dabei allerdings die eine oder andere H&#252;rde zu umschiffen:</p>
<p>&#010;&#010;</p>
<ul>&#010;&#009;</p>
<li>Der transparente Modus funktioniert nur bei Listenern, die nur eine IP-Version verwenden. Es ist also notwendig, separate Listener f&#252;r IPv4- und IPv6-Verbindungen einzurichten. In obigem Beispiel geben wir explizit die Adresse an, auf die der Listener h&#246;ren soll, d.h. wir legen uns in diesem Beispiel auf IPv4 fest.</li>
<p>&#010;&#009;</p>
<li>Die Antwort-Pakete der Webserver, auf die SNIProxy weiterverbindet, m&#252;ssen durch den Proxy-Rechner geroutet werden. Im einfachsten Fall wird dieser als Router aufgesetzt und die Webserver erhalten ihn als Default-Gateway.</li>
<p>&#010;&#009;</p>
<li>Auf dem Proxy-Rechner selbst muss per IPTables daf&#252;r gesorgt werden, dass die Pakete auch tats&#228;chlich durch den transparenten Proxy laufen.<br />&#010;&#009;&#009;&#160;</li>
<p>&#010;</ul>
<p>&#010;&#010;</p>
<h3>iptables und Policy Route&#160;auf dem Proxy-Rechner</h3>
<p>&#010;&#010;</p>
<p>Damit der Transparentmodus richtig funktioniert, m&#252;ssen Pakete passend geleitet werden. Dies geschieht durch eine separate Routing-Tabelle, auf die Pakete per Markierung durch iptables geleitet werden:</p>
<p>&#010;&#010;</p>
<pre><code>iptables -t mangle -N DIVERT&#010;iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT&#010;iptables -t mangle -A DIVERT -j MARK --set-mark 1&#010;iptables -t mangle -A DIVERT -j ACCEPT&#010;&#010;ip rule add fwmark 1 lookup 100&#010;ip route add local 0.0.0.0/0 dev lo table 100&#010;</code></pre>
<p>&#010;&#010;</p>
<p>Auf dem Proxy-Rechner muss ausserdem Forwarding eingeschaltet sein, z.B. durch folgende Eintr&#228;ge in /etc/sysctl.conf:</p>
<p>&#010;&#010;</p>
<pre><code>net.ipv4.ip_forward=1&#010;net.ipv6.conf.all.forwarding=1&#010;</code></pre>
<p>&#010;&#010;</p>
<h3>&#010;&#009;Webtraffic auf den Webservern durch den Proxy umleiten</h3>
<p>&#010;&#010;</p>
<p>Im einfachsten Fall wird ganz einfach die Default-Route der Webserver auf den Proxy gelegt. Das ist nicht immer praktikabel. Eine Variante davon ist, lediglich die Antworten des Webservers &#252;ber den Proxy umzuleiten. Auch dies gelingt mit einer Policy-Route und einer iptables-Markierung, etwa so:</p>
<p>&#010;&#010;</p>
<pre><code>iptables -t mangle -A OUTPUT -p tcp --sport 443 -j MARK --set-mark 0x8&#010;iptables -t mangle -A OUTPUT -p tcp --sport 80 -j MARK --set-mark 0x8&#010;&#010;ip rule add fwmark 8 lookup 101&#010;ip route add 192.168.1.15 dev eth0 table 101&#010;ip route add default via 192.168.1.15 table 101&#010;</code></pre>
<p>&#010;&#010;</p>
<p>Auch hier gegen wir als Beispiel wieder vom auf der Adresse 192.168.1.15 laufenden Proxy aus und leiten alle ausgehenden Pakete mit Quellport 80 oder 443 auf diesen um.</p>
<p>&#010;</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
