2

基本的に今日はSquidとiptablesから始めました(googleはあなたの友達です)。このようなものは私の死になりそうです。

Ubuntu9.04サーバーに透過プロキシとしてSquid3をセットアップしました。プロキシボックスをデフォルトゲートウェイなどとして使用すると、うまく機能します。このセットアップのiptableルールはチュートリアルの一部でした。:P

残念ながら、httpsサイト(Gmailや基本的にポート443の何かなど)にアクセスできません。これは、Squidがキャッシュできないもの(この場合はhttpsトラフィック)が気に入らないためです。

基本的にhttpsサイトにアクセスしてSkypeを使用できるように、iptableルールを追加したいと思います。基本的に、これらのタイプのトラフィックがSquidプロキシを経由せずに通過できるようにしますか?(いわばバイパス)

誰かがこれを行う方法を知っているか、それを理解するのに役立つソースへのリンクを持っているでしょうか?

ありがとうございました。

4

3 に答える 3

5

実際に自分の手首を噛むことを検討し、一晩中IPを夢見て+ブルートフォースグーグル/何でも試してみた後、デジタルフィンガーを手に入れることができ、実際に機能するものを組み合わせることができました。技術的な理由はわかりませんので、セットの説明があれば教えてください!:D

PS:説明のすべてはコマンドラインを介して行われます

PS:これは最終的な解決策ではありませんが、私自身の質問に答える上で有効な解決策です。

ここにあります:

ステップ1:ボックスでIP転送を有効にする必要がありました:

vim /etc/sysctl.conf

//以下を見つけてコメントを外します

net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=1

ステップ2:ループバックルールを追加します(これは、すべてのポートがカバーされている場合に当てはまります。明らかに多くのアプリがそれを必要としていますか?

iptables -I INPUT -i lo -j ACCEPT

手順3.ポート443をバイパスするためのルールを追加します:(eth1はインターネットインターフェイス、xxxx / eth0はLANインターフェイス)

iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t filter -A FORWARD -i eth0 -p tcp --dport 443 -j ACCEPT

iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source x.x.x.x

ステップ4.最後に、Squidを透過的にするルール:(xxxxはLANインターフェイスのIPです)

iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination x.x.x.x:3128

iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
于 2010-04-09T12:30:41.280 に答える
3
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source x.x.x.x

それは間違いです。TCP/UDP/etcインターンLANからインターネットに送信するすべてのパケットが、パブリックIPではなくプライベートLAN IP(おそらく192.178.xx)をソースIPとして使用することを意味します。

それはあなたを助けるかもしれません:

PREROUTING == DestinationNAT -> From Internet to Intern LAN

POSTROUTING == SourceNAT -> From Intern LAN to Internet


iptables -t nat -A PREROUTING -i intern -p tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -A INPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -i intern -p tcp --dport 3128 
iptables -A OUTPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -o extern -p tcp --dport 80
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -i extern -p tcp --sport 80
iptables -A OUTPUT -j ACCEPT -m --state ESTABLISHED,RELATED -o intern -p tcp --sport 80

443をバイパスするには、次の方法で十分です。

iptables -I FORWARD -p tcp --dport 443 -j ACCEPT

system/squid/firewallまた、ネットワークからインターネットへのルーターでもある場合は、次のことを忘れないでください。

iptables -t nat -A POSTROUTING -o extern -j SNAT --to-source Public_external_IP
于 2011-09-27T14:33:07.210 に答える
1

それらの説明のために...

手順1では、マシンをルーターとして設定します。これは、それ自体以外のマシン宛てのIPトラフィックを受け入れまたは転送するLinuxマシンに必要です。これがないと、ネットワークスタックの最下位レベルでトラフィックが拒否され、NATはその処理を実行する機会さえ得られません。

ステップ2は、質問されている問題とは関係ありません。プロキシに関係のないルーター操作に必要な場合と不要な場合があります。

ステップ3では、マシンは通常、ルーターとしてポート443を中継します。SNATの代わりにMASQUERADEを使用すると、POSTROUTINGルールを改善できます。

ステップ4両方の行が異なる方法で同じことを行います。DNATとREDIRECTの違いがわからない場合は、最初の行で問題が発生する可能性があります。簡単にするために、REDIRECTのみを使用してください。

http://wiki.squid-cache.org/ConfigExamples/Intercept/LinuxRedirectを読むことで、多くの問題を回避できたはずです。

そのwikiページで説明されているセットアップから欠落している重要なマングルテーブルルールもあります。

于 2016-09-27T21:27:15.707 に答える