Чтобы вернуться на один уровень каталога на основе пути к каталогу, а не ссылки ..
:
cd $PWD:h
Или переносимый метод:
cd "${PWD%/*}"
(кавычки необязательны в zsh; кавычки необязательны в других оболочки, если имя каталога не содержит пробелов или \ [*?
)
Повторите : h
или / *
столько раз, сколько хотите, чтобы пойти дальше по иерархии каталогов.
Или введите cd $ PWD
, затем нажмите Tab , чтобы развернуть $ PWD
до его значения и вручную отредактировать результат. (В зависимости от настроек завершения и редактора строк вам может потребоваться добавить /
после $ PWD
перед нажатием Tab , чтобы нажать клавишу, которую вы привязан к развернуть или завершить
(по умолчанию Tab ) или префикс расширения или завершения
или раскрыть слово
(по умолчанию Ctrl + X * ).)
Вот обычный способ добавления новых таблиц и правил маршрутизации, который не нужен OP:
FOO
FOO
FOO
считывается первой, таким образом обычно полностью игнорируя таблицу main
. Чтобы «исправить» эту проблему, маршруты из таблицы main
копируются в таблицу FOO
. Правила будут выглядеть так:
# ip rule
0: from all lookup local
32765: from 192.168.1.0/24 lookup FOO
32766: from all lookup main
32767: from all lookup default
OP не хочет делать 3., потому что это увеличивает административную нагрузку при изменении маршрутов.
Насколько я понимаю, именно этого желает ОП:
main
192.168.1.0/24
его маршрут по умолчанию должен быть взят из таблицыFOO
(здесьdev eth0
)Давайте реализуем это в таком порядке вместо обычного. Результат может быть не совсем таким, как описано в вопросе, но должен быть таким, как хотелось бы. Без фактической проблемы, которую нужно решить, и правильной конфигурации, заданной в OP, некоторые вещи могут показаться неудобными (, например повторное использование вывода ip route
для перемещения маршрута по умолчанию из таблицы main
в таблицуdefault
).
Исходя из обычных правил:
# ip rule
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
Обратите внимание, что таблица default
пуста (по умолчанию )и свободна для использования.
# ip route show table default
#
переместить правило поиска вверх main
с более низким приоритетом
# ip rule add priority 32000 from all lookup main
# ip rule del priority 32766
реализовать исключения
# ip route add default dev eth0 table FOO
# ip rule add priority 32100 from 192.168.1.0/24 lookup FOO
переместить «обычный» маршрут по умолчанию из таблицы main
в таблицу default
, чтобы разрешить запуск исключений в правиле 32100. Правило 32767 по-прежнему будет указывать маршрут по умолчанию из таблицы default
, если совпадений не найдено. раньше потери связи не было.
# ip route add $(ip route show 0.0.0.0/0) table default
# ip route del default
Правила теперь будут выглядеть так:
# ip rule
0: from all lookup local
32000: from all lookup main
32100: from 192.168.1.0/24 lookup FOO
32767: from all lookup default
Несколько примеров в контейнере (, которые не будут иметь особого смысла, это просто для просмотра задействованных таблиц):
# ip -br link
lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
eth0@if12 UP 66:d4:11:94:49:5f <BROADCAST,MULTICAST,UP,LOWER_UP>
local0@if9 UP 00:16:3e:6a:c1:e9 <BROADCAST,MULTICAST,UP,LOWER_UP>
# ip -4 -br a
lo UNKNOWN 127.0.0.1/8
local0@if9 UP 10.0.3.66/24
# ip route
10.0.3.0/24 dev local0 proto kernel scope link src 10.0.3.66
# ip route show table FOO
default dev eth0 scope link
# ip route show table default
default via 10.0.3.1 dev local0
# ip -o route get 10.0.3.2
10.0.3.2 dev local0 src 10.0.3.66 \ cache
# ip -o route get 8.8.8.8
8.8.8.8 via 10.0.3.1 dev local0 table default src 10.0.3.66 \ cache
# ip -o route get 8.8.8.8 from 192.168.1.2 iif local0
8.8.8.8 from 192.168.1.2 dev eth0 table FOO \ cache iif local0
Вот именно. Единственная разница в использовании заключается в том, что «обычный» маршрут по умолчанию теперь должен быть установлен в таблицеdefault
(253
)вместо таблицы main
(254
). Сценарии загрузки должны быть адаптированы для обработки этого :настройки не должны указывать маршрут или шлюз по умолчанию, но должны запускать дополнительный пользовательский сценарий, который будет делать ip route add default... table default
. Для Debian это можно сделать с помощью post-up
команд (, напримерpost-up ip route add default via xxx table default || :
)в /etc/network/interfaces
. Для RHEL7 это должно быть сделано с файлами route -XXX . Что касается новых сетевых методов systemd, я понятия не имею.
Просто добавьте
ip rule add from 192.168.1.0/24 table main suppress_prefixlength 0
Пакеты будут направляться в table main
и находить маршрут, но маршрут по умолчанию в table main
использоваться не будет.
Затем пакеты отправляются на table FOO
и маршрутизируются на eth0
.