Вам нужно добавить маршрутизацию на свой сервер, чтобы ssh-пакеты направлялись через публичный ip сервера, а не через vpn. Если этого не сделать, обратный пакет ssh будет направляться через openvpn. Вот почему вы получаете блокировку сервера после инициализации сеанса клиента openvpn.
Предположим, что ваш сервер:
a.b.c.d
a.b.c.0/24
x.x.x.1
eth0
- устройство для шлюзаiproute2
- ваш друг здесь. Сделайте следующее:
ip rule add table 128 from a.b.c.d
ip route add table 128 to a.b.c.0/24 dev eth0
ip route add table 128 default via x.x.x.1
Выполните route -n
для подтверждения появления новой таблицы маршрутизации.
Вышеуказанные команды не сохранятся, если вы перезагрузите сервер. Вам нужно будет добавить их в файл конфигурации сетевого интерфейса.
Затем запустите конфигурацию клиента openvpn
openvpn --config youropenvpn-configfile.ovpn &
Также, если вы хотите ограничить трафик на ваш публичный IP только ssh и только ssh, вам нужно добавить iptables
фильтрацию следующим образом:
iptables -A INPUT -d a.b.c.d -p tcp --dport <*ssh port number*> -j ACCEPT
iptables -A INPUT -d a.b.c.d -j DROP
ps: Я помню, что впервые узнал об этом на форуме Linode - погуглите, и вы сможете найти сообщение об этом.
Предположим, что ваш XML-документ правильно сформирован, например
<document>
<HDR>
</HDR>
<b>
</b>
<c>
</c>
</document>
Затем вы можете использовать XMLStarlet для удаления всех HDR
тегов:
xmlstarlet ed -d '//HDR' file.xml >newfile.xml
Чтобы удалить только те теги HDR
, за которыми сразу следует тег b
:
xmlstarlet ed -d '//HDR[following-sibling::*[1][name() = "b"]]' file.xml >newfile.xml
XMLStarlet также может использоваться для изменения содержимого тегов:
$ xmlstarlet ed -u '//HDR[following-sibling::*[1][name() = "b"]]' -v 'New header value' file.xml
<?xml version="1.0"?>
<document>
<HDR>New header value</HDR>
<b/>
<c/>
</document>
$ xmlstarlet ed -i '//HDR[following-sibling::*[1][name() = "b"]]' -t attr -n 'new_attribute' -v 'hello' file.xml
<?xml version="1.0"?>
<document>
<HDR new_attribute="hello"/>
<b/>
<c/>
</document>
Тип 1:
echo "<HDR></HDR><b></b><c></c>" | sed 's/^.*<b>/<b>/'
<b></b><c></c>
<b>
на<b>
Тип 2:
sed -n '/<b>/,$p' file
<b>
</b>
<c>
</c>
<b>
в конец файла ($ ).