web-dev-qa-db-ja.com

IPTABLES:透過的なSquidを介したVPNユーザーのルーティング

誰かが私を助けてくれることを願っています-私はこれで髪を引き裂いてきました!

Pptpdとsquidをセットアップしました。これらのユーザーにインターネットへのアクセスを許可したいのですが、squidプロキシを介してhttpトラフィックを送信したいと思います。

うまくいけば、この大まかな図が、私が達成しようとしていることのアイデアをあなたに与えるでしょう:

VPN users connect to pptpd (via eth0)
    \ | /
      |
      |
     / \
 http   everything else
   |     |
   |     |
   |     |
squid    |
   |     |
    \   /
     \ /
      |
     NAT
      |
  internet  (via eth0)

次のiptablesルールを設定すると、ユーザーはインターネットに接続できます。

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

イカに直接接続することもでき、期待通りに動作します。

今、私は別の単純なルールがすべてのhttpトラフィックをsquid経由でリダイレクトすることを望んでいました:

iptables -t nat -A PREROUTING -i ppp+ -p tcp --dport 80 -j REDIRECT --to-port 3128

しかし、これは機能していないようです(ppp +がワイルドカードの正しいフォーマットであることも期待しています)。 Httpトラフィックはリダイレクトされず、プロキシをバイパスします。

誰かがこれを機能させる方法を提案できますか?

私は恐れているこのことについてはあまりよく知りません。また、システムをデバッグする方法についてのいくつかの推奨事項も気に入っています。どのログファイルを確認するか、tcpdumpコマンドなど。iptablesのドキュメントは非常に戸惑います。

ありがとう!

2
Jack

ルールは正しいので、実際に一致しているかどうかを確認する必要があります。

iptables -t nat -vnL
2
topdog