非常に奇妙な問題があります。 2つのネットワークインターフェースを持つサーバーがありますeth0
。eth1
各インターフェイスは異なるネットワークに接続されています。すべてのネットワークにはインターネットゲートウェイがあります。さまざまなサーバーがあります国を離れる接続:http(ウェブサイトをスクラップするためのサーバーの一部のスクリプト)、nfsクライアント、Sambaクライアント、dnsクライアント、および電子メールゲッターなどがあります。
詳しくは説明しないため、アウトバウンドhttp、nfs、samba、およびdnsトラフィックのみを要求し、他のすべてのトラフィックはeth0
通過するようにこれらのアウトバウンドクライアントを分割する必要がありますeth1
。
私はGoogle検索をいくつか読んでいましたが、それはiptables
私に必要なようですが、実際には手がかりはありません。私はインバウンドファイアウォールルールの管理にのみ慣れていますufw
。
誰かがいくつかのサンプルルールから始めて、システムが起動時にこれらのルールを採用する方法を教えてください。理想的には、SSH接続をロックせずに(Iできる物理的にアクセスできますが、望ましくありません)。
編集する1つのアカウントから1つのインターフェイスにすべてのアウトバウンドトラフィックを制限できる場合は、クライアントを2人のユーザーに分割できます。紙では簡単に見えるかもしれません。
ベストアンサー1
別々のルーティングテーブルとそのテーブルを使用して、タグ付きパケットをルーティングし、iptables / netfilterに特定のパケットを表示させるポリシーを設定しました。
テーブルを作成します。
echo 1 known >> /etc/iproute2/rt_tables
ルーティングルールの作成(ip
次のコマンドIP ルート 2):
ip rule add from all fwmark 1 table known
「通知済み」というテーブルを作成し、タグが1のすべてのパケットが「既知の」テーブルに従ってルーティングされるというルーティングルールを作成します。既知のプロトコルリストのためであるため、既知の名前と呼ばれます。必要に応じて名前を付けることができます。これで、正しい方法でルーティングされるように既知のテーブルを設定しました。
ip route add default dev eth0 table known
iptablesルールを生成します。
iptables -t mangle -I PREROUTING -p tcp --dport 111 -j MARK --set-mark 1
iptables -t mangle -I PREROUTING -p tcp --dport 2049 -j MARK --set-mark 1
この例では、NFSポート(111、2049)のパケットを1としてマークします。このルールを "mangle" iptable に追加します。これはルーティングテーブルとは異なり、変更できません。マングルテーブルは、NAT以外の方法でパケットを変更するように設計されています。
次に、他のインターフェイスを介して他のすべてをルーティングするために、標準のルーティングテーブルにパスを追加します。
ip route add default dev eth1
これを正しく理解するには、セクション4とセクション11をお読みください。LARTC オペレーションガイド。