Как установить метку на пакете при передаче его в туземной таблице перед маршрутизацией?

GNU sort имеет-m, который может, вероятно, выручить Вас. Давайте предположим, что у Вас есть 200 .gz-файлов, которые Вы хотите отсортировать и объединить. Затем Вы могли использовать Параллель GNU, чтобы сделать:

seq 1 200 | parallel mkfifo /tmp/{}
ls *.gz | nice parallel -j200 'zcat {} | sort >/tmp/$PARALLEL_SEQ' &
seq 1 200 | parallel -X sort -m /tmp/{} >/tmp/sorted

Если ввод-вывод является проблемой, и память не является проблемой, использование-S для первого sort для проверки все остается в памяти. Также можно хотеть использовать lzop каждый раз Вы пишете в диск (-compress-program=lzop): Диски часто являются ограничивающим фактором, таким образом, lzopping на лету может дать Вам дополнительную скорость. Или Вы могли сделать псевдодиск и установить-T на тот dir.

2
задан 7 June 2013 в 17:05
1 ответ

Невозможно сделать это с помощью только одной команды для каждого DNAT - если ... см. Ниже. Но можно ввести данные только один раз.

Давайте определим диапазон отметок 1024–2047 для соединений, которые получают DNAT-адрес и перенаправляют.

Одна строка с каждым условием соответствия DNAT в mangle:

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

Одна команда для каждого in nat:

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

Одна команда для всех в фильтре:

iptables -A FORWARD -m mark --mark 0x400/0x400 -j ACCEPT

BTW: Нет необходимости указывать порт назначения для -j DNAT , если он не изменен.

Редактировать 1:

Вы можете сделать это, если вы не разрешаете соединения явно, если вас устраивает разрешение всего, что было DNATted. В этом случае вы должны придерживаться своего

iptables -t nat -A PREROUTING -p tcp --dport 46000 -j DNAT --to-destination 172.16.8.2:46000

, но иметь только одно правило FORWARD для всех:

iptables -A FORWARD -m conntrack --ctstate DNAT -j ACCEPT
3
ответ дан 3 December 2019 в 10:50

Теги

Похожие вопросы