私は依存ポータル(たとえば、別のポータルを構築しています。;))今、コア機能であるiptablesルールを処理しようとしています。これに基づいて、ipset
nameという有効なMacアドレスのリストがありますallow-mac
。これは現在の構成です(質問自体を除く)。
echo 1 >/proc/sys/net/ipv4/ip_forward
ipset create allow-mac hash:mac counters
ipset add allow-mac XX:XX:XX:XX:XX:XX
IPT="/usr/sbin/iptables"
WAN="eth0"
LAN="eth1"
$IPT -P FORWARD DROP
$IPT -t nat -A POSTROUTING -o $WAN -j MASQUERADE
$IPT -I FORWARD -i $LAN -m set --match-set allow-mac src -j ACCEPT
これはうまくいきますが、うまくいきません!したがって、FORWARD
基本チェーンを次に変更してルールを逆に変更すると、ACCEPT
次のようになります。
$IPT -P FORWARD ACCEPT
$IPT -I FORWARD -i $LAN -m set ! --match-set allow-mac src -j DROP
目的の結果が得られ、リストに既知のMACアドレスを持つクライアントのみを渡すことができます。
私の質問は最初の設定ではなぜ機能しませんか? 2番目の欠落している機能はモジュールがcounters
追加されましたが、クライアントの「アップロード」トラフィックが計算された場合、ダウンロードトラフィックもどのように計算できますか(別のカウンタで)。
答え1
最初のルールセットは、指定された発信トラフィックのみを許可するため、-i $LAN
応答はフィルタリングされます。 -i $LAN`を削除すると機能しますか?
ただし、この場合、トラフィック全体(アップロード+ダウンロード)が計算されます。アップロードとダウンロードを別々に計算するには、次の2つのタグポリシーを作成する必要があります。
- 一つはアップロード用です。ソースコードMacタグ付き
- 一つはダウンロード用です。目的地Macタグ付き。