Двусторонняя переадресация, как мост с iptables

В оболочке Korn, как и в оболочке Bourne, кавычки и обратные кавычки (архаичная форма подстановки команд )может быть непревзойденной, и вы должны помочь токенизатору определить, где заканчиваются обратные кавычки. Внутри обратных кавычек есть еще один уровень обработки обратной косой черты.

echo "`date"

работает и совпадает с:

echo "`date`"
echo "$(date)"

И:

echo `echo "foo`

работает и совпадает с:

echo `echo "foo"`
echo $(echo "foo")

Если да:

grep "`date +"%b %d"`"

Это взято как grepслово, а затем"`date +"(незакрытые обратные кавычки внутри двойных кавычек )объединены с %bи затем %dобъединены с другими незакрытыми обратными кавычками внутри двойных -кавычек:"`". Так что это как

grep "$(date +)"%b %d"$()"

(за исключением того, что по какой-то причине, в то время как echo "``"или echo "$()"не вызвали бы ошибку, в echo "`"оболочка попытается выполнить команду с пустым именем (, как если бы вы написали echo "$("")").

Итак, здесь вам нужно использовать обратную косую черту, чтобы помочь синтаксическому анализатору:

grep "`date +\"%b %d\"`"

Эти обратные косые черты фактически удалены. Именно date +"%b %d"оценивается подоболочкой при подстановке команд.

Здесь, поскольку kshпринимает незакрытые кавычки, вы могли бы также сделать:

grep "`date +\"%b %d"

(не то чтобы я бы советовал это делать ).

Таким же образом можно получить вложенные обратные кавычки, как в:

echo "`echo \"\`echo \\\"a  b\\\"\`\"`"

Хороший пример того, почему никто никогда не использует этот синтаксис и использует $(...)более новую форму (, введенную kshв начале 80-х):

echo "$(echo "$(echo "a  b")")"

Теперь, что касается вашей конкретной проблемы, похоже, вы хотите перечислить ABC.LOG*файлы в текущем каталоге, которые последний раз -изменялись сегодня. Для этого вы можете сделать:

touch -t "$(date +%Y%m%d0000)".start-of-day &&
  find. ! -name. -prune -name 'ABC.LOG.*' \
    -newer.start-of-day -type f -exec ls -lrtd {} + &&
  rm -f.start-of-day
0
27.11.2019, 09:56
2 ответа

Вы должны указать, что Вы хотите. Мост не выполняет NAT, и Интернет не работает, как Ethernet, где работает мост.
Если вы хотите иметь интернет-шлюз с Nat и пересылать свои пакеты в соответствии с таблицами IP-маршрутизации ваших ящиков Linux, ваши маршруты iptables выглядят вполне нормально. Вам просто нужно убедиться, что IP-переадресация включена на этом блоке, а для ноутбука установлен шлюз по умолчанию с адресом eth1 блока Linux.


Так что после Ваших обновлений :Вам бридж не нужен. Достаточно шлюза.
1. убедитесь, что интерфейсы linux box находятся в разных подсетях. Или, в качестве альтернативы, убедитесь в его таблицах маршрутизации, что он имеет маршрут по умолчанию на eth0 через интернет-маршрутизатор шлюза, а другой трафик для локальной сети (, в которой находится ваш ноутбук, например ), отправляется в eth1.
2, создайте статическую IP-конфигурацию на своем ноутбуке с IP-адресом в той же сети, что и eth1, и с маршрутизатором по умолчанию, настроенным на адрес интерфейса, если eth1. Или настройте dhcp-сервер на Linux для того же.
3. Убедитесь, что IP-переадресация включена на вашем компьютере с Linux.

1
28.01.2020, 02:38

можешь попробовать

iptables –t nat –A POSTROUTING –o eth0 –j MASQUERADE
iptables –A FORWARD –i eth0 –o eth1 –m state  --state RELATED,ESTABLISHED –j ACCEPT
iptables –A FORWARD –i eth1 –o eth0 –j ACCEPT

затем сохраните правила ip-таблиц

iptables-save
iptables-save > /etc/sysconfig/iptables
systemctl restart iptables.service

затем откройте файл iptables и отредактируйте правила, переместите эти правила над правилами отклонения

iptables –A FORWARD –i eth0 –o eth1 –m state  --state RELATED,ESTABLISHED –j ACCEPT
iptables –A FORWARD –i eth1 –o eth0 –j ACCEPT
A FORWARD -o vibr0 -j REJECT --reject-with icmp-port-unreachable
A FORWARD -i vibr0 -j REJECT --reject-with icmp-port-unreachable
0
28.01.2020, 02:38

Теги

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