そのため、図のようにトポロジを作成しました。
ルーターには3つのインターフェースがあります。
eth0をインターネット側に(IPを使用)192.168.1.10/24ゲートウェイ192.168.1.254/24)。
eth1をサーバーPCに(ipとして192.168.20.1/28)
eth2をクライアントとして(IPを含む)172.16.20.1/29)
サーバーとクライアントが接続され、ルーターコンピュータからインターネットを取得します。 Server-pcは固定IP(192.168.20.2)、クライアントがルータ-pcのDHCPから自動IPを取得している間
私はクライアントのインターネットを私のサーバーPCのプロキシサーバーにリダイレクトするために私のルーターPCでiptablesを設定したいと思います。したがって、クライアントはインターネットにアクセスするために資格情報を使用する必要があります(私はイカに認証プロキシを設定し、クライアント側でプロキシを手動で設定しました)。
私が実行しているファイアウォールは次のとおりです。
iptables -t nat -A プリセット -p tcp -s 172.16.20.0/29 -j DNAT --to 192.168.20.2
192.168.20.2は私のサーバーのIPアドレスです。では、作成した構成を変更して、必要に応じて機能するのに役立ちますか?
申し訳ありません。私の英語力が悪いです。ありがとうございます。
ベストアンサー1
まず、Debian 6 "squeeze"は2013年から主要なサポートが中止され、長期サポートも2016年から中止されました。 Debian 6 でのこのようなインターネットアクセスのブロックは、制限を迂回するセキュリティホール、要求されたルールセットの実装を妨げる機能の欠如、またはその両方によって、非効率的である可能性が高いです。私強くシステムをサポートされているDebianバージョン(Debian 9 "stretch")にアップグレードすることをお勧めします。
第二に、認証されたプロキシとトランスペアレントプロキシモードを組み合わせると正しく機能しません。問題は最終的にホスト返品認証が必要です(たとえば、HTTPレベルの認証が必要なDAVサーバーにログインするため)。これにより、透明プロキシがその資格情報を食べたり混乱したりします。
代わりに私のアドバイスは次のとおりです。
プロキシを通過しないすべてのトラフィックをブロックします。
iptables -A FORWARD -i eth2 -o eth0 -p tcp --dport 443 -j REJECT iptables -A FORWARD -i eth2 -o eth0 -p tcp --dport 80 -j REJECT
これにより、プロキシを通過しないすべてのインターネットトラフィックがブロックされます。
クライアントにドメイン名を送信するようにDHCPサーバーを構成します。
subnet 172.16.20.1/29 { (...) option domain-name "example.com"; };
(ここではないローカルドメイン名を使用してください
example.com
)wpad.example.com
ルーターを指す必要があるホスト名を知るようにDNSサーバーを構成します(再度、example.com
ドメイン名を変更します)。wpad.dat ファイルを作成し、次の内容を追加します。
function FindProxyForURL(url, host) { return "PROXY 172.16.20.1:3128"; }
これは単純なJavascriptです。ターゲットURLに基づいて異なるプロキシを使用するには、関数を変更するだけです。
その後、ファイルはルータのHTTP経由で「/wpad.dat」として提供されます。ファイルのMIMEタイプがまたはであることを
application/x-ns-proxy-autoconfig
確認してくださいapplication/x-javascript-config
。
これにより、ネットワーク上のブラウザが自動的にプロキシを使用するように設定され(「自動設定の検索」オプションがオンになっている場合(該当する場合))、ユーザーは認証を混同しません。