このようないくつかのポート転送ルールがあります
iptables -t nat -A PREROUTING -p tcp --dport 46000 -j DNAT --to-destination 172.16.8.2:46000
iptables -A FORWARD -p tcp -d 172.16.8.2 --dport 46000 -j ACCEPT
同じ転送ルールを2行ではなく1行で追加する方法があるので、同じデータを2回入力する必要はありません。私はこのようなルールを意味します:
出来ますか?
DNATごとに1つのコマンドだけでこれを実行することはできません–以下を参照しない限り...ただし、データを一度入力することは可能です。
DNATされて転送される接続のマーク範囲1024〜2047を定義しましょう。
マングル内の各DNAT一致条件を持つ1行:
iptables -t mangle -A PREROUTING -p tcp --dport 46000 -j MARK --set-mark 0x400
iptables -t mangle -A PREROUTING -p tcp --dport 46001 -j MARK --set-mark 0x401
iptables -t mangle -A PREROUTING -p tcp --dport 46002 -j MARK --set-mark 0x402
Natごとに1つのコマンド:
iptables -t nat -A PREROUTING -m mark --mark 0x400 -j DNAT \
--to-destination 172.16.8.2:46000
iptables -t nat -A PREROUTING -m mark --mark 0x401 -j DNAT \
--to-destination 172.16.8.2:46001
iptables -t nat -A PREROUTING -m mark --mark 0x402 -j DNAT \
--to-destination 172.16.8.2:46002
フィルター内のすべてに対して1つのコマンド:
iptables -A FORWARD -m mark --mark 0x400/0x400 -j ACCEPT
ところで:変更されていない場合、-j DNAT
の宛先ポートを指定する必要はありません。
編集1:
接続を明示的に許可せずに行う場合、DNATされたすべてを許可することに問題がない場合は、これを行うことができます。その場合、あなたはあなたに固執するでしょう
iptables -t nat -A PREROUTING -p tcp --dport 46000 -j DNAT --to-destination 172.16.8.2:46000
ただし、すべてに対してFORWARDルールは1つしかありません。
iptables -A FORWARD -m conntrack --ctstate DNAT -j ACCEPT