23

マルチポート拡張では、指定できるポート数に制限(15)があります。

しかし、1 つのルールでさらに多くのポート番号を指定する必要があるため、次のように 1 つのルールで複数のマルチポートを使用しようとしました。

iptables -A INPUT -p tcp -m multiport --destination-ports 59100 -m multiport --destination-ports 3000 -m state --state NEW -j REJECT --reject-with tcp-reset

の結果iptables -L INPUT -n

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0           multiport dports 59100 multiport dports 3000 state NEW reject-with tcp-reset

しかし、クライアントから接続しようとすると、両方のポートが拒否されないことがわかりました。

バージョンは v1.4.2-rc1 です。

回避策はありますか、または 1 つのルールで 15 を超えるポートを指定する必要がある場合はどうすればよいですか。

4

5 に答える 5

38

この制限の回避策として、2 つのルールを使用してすべてのケースをカバーします。

たとえば、これらの 18 個のポートを許可または拒否する場合:

465,110,995,587,143,11025,20,21,22,26,80,443,3000,10000,7080,8080,3000,5666

以下のルールを使用します。

iptables -A INPUT -p tcp -i eth0 -m multiport --dports 465,110,995,587,143,11025,20,21,22,26,80,443 -j ACCEPT

iptables -A INPUT -p tcp -i eth0 -m multiport --dports 3000,10000,7080,8080,3000,5666 -j ACCEPT

上記のルールは、シナリオでも機能するはずです。最初のルールと 2 番目のルールの両方で 15 ポートの制限に達した場合は、別のルールを作成できます。

于 2012-07-03T06:43:01.843 に答える
3

複数のルールを使用して OR のようなセマンティクスを実装する必要があります。これは、ルール内で一致が常に AND で結合されるためです。または、ポート インデックス ipsets に対して照合を行うこともできます ( ipset create blah bitmap:port)。

于 2012-03-30T16:46:18.203 に答える
0

私の知る限り、複数の一致を書き込むことは論理 AND 演算です。したがって、ルールが意味するのは、宛先ポートが「59100」および「3000」の場合、tcp-reset で接続を拒否することです。回避策は、-import オプションを使用することです。manページを見てください。

于 2012-03-30T12:32:18.250 に答える
-3
enable_boxi_poorten

}

enable_boxi_poorten() {
SRV="boxi_poorten"
boxi_ports="427 5666 6001 6002 6003 6004 6005 6400 6410 8080 9321 15191 16447 17284 17723 17736 21306 25146 26632 27657 27683 28925 41583 45637 47648 49633 52551 53166 56392 56599 56911 59115 59898 60163 63512 6352 25834"


case "$1" in
  "LOCAL")
         for port in $boxi_ports; do $IPT -A tcp_inbound -p TCP -s $LOC_SUB --dport $port -j ACCEPT -m comment --comment "boxi specifieke poorten";done
     # multiports gaat maar tot 15 maximaal :((
     # daarom maar for loop maken
     # $IPT -A tcp_inbound -p TCP -s $LOC_SUB -m state --state NEW -m multiport --dports $MULTIPORTS -j ACCEPT -m comment --comment "boxi specifieke poorten"
     echo "${GREEN}Allowing $SRV for local hosts.....${NORMAL}"
    ;;
  "WEB")
     for port in $boxi_ports; do $IPT -A tcp_inbound -p TCP -s 0/0 --dport $port -j ACCEPT -m comment --comment "boxi specifieke poorten";done
     echo "${RED}Allowing $SRV for all hosts.....${NORMAL}"
    ;;
  *)
     for port in $boxi_ports; do $IPT -A tcp_inbound -p TCP -s $LOC_SUB --dport $port -j ACCEPT -m comment --comment "boxi specifieke poorten";done
     echo "${GREEN}Allowing $SRV for local hosts.....${NORMAL}"
    ;;
 esac

}
于 2012-10-04T13:46:51.227 に答える