Предполагая, что все возможные целевые каталоги находятся под /home
и в именах каталогов нет символов новой строки, вы можете использовать эту функцию оболочки:
cds() {
cd "$(find /home -type d -name "$1" | head -n 1)"
}
$ cds thedirectoryiwanttogointo
Конечно, в зависимости от того, сколько подкаталогов и файлов находится под /home
и от того, способна ли ваша ОС кэшировать все дерево в памяти или нет, производительность будет значительно отличаться.
На системах GNU вы можете ускорить поиск и сделать его более надежным в отношении символов новой строки в именах файлов, используя вместо этого следующий синтаксис:
cds() {
cd "$(find /home -type d -name "$1" -print -quit)"
}
Это прекратит поиск, как только будет найдено первое совпадение.
Обратите внимание, что аргумент воспринимается как образец, поэтому вы можете сделать:
cds 'foo*bar'
например, cd
в первый каталог (порядок не указан), имя которого начинается с foo
и заканчивается bar
.
Я решил все. Сначала требуемые правила iptables (дают доступ к удаленным машинам VPN):
-A FORWARD -i wlan0 -o ppp0 -j ACCEPT
-A POSTROUTING -o ppp0 -j MASQUERADE
Затем, чтобы указать, какой IP-адрес или диапазон IP-адресов должен иметь другой маршрут, вам потребуются правила политики :
.открыть /etc/iproute2/rt_tables
и ввести свою запись (ID tablename):
100 my_custom_table
ip rule add from 172.24.1.114/24 table my_custom_table
(указывает перейти к другой таблице, отличной от основной, для исходного IP 172.x.x.x)
ip route add 172.24.1.0/24 dev wlan0 table my_custom_table
(требуется для получения пакетов от ppp0)
ip route add default via 10.10.10.1 dev ppp0 table my_custom_table
(направляет пакет на шлюз VPN)
Убедитесь, что брандмауэр на сервере VPN разрешает входящий трафик с IP-адресов VPN.
Правильным подходом является создание ip rule
для этого исходного адреса.
Для диагностики таких проблем полезен tcpdump
.
Может ли сам VPN-клиент получить доступ к Интернету через VPN?