Я сделал что-то похожее с реальными интерфейсами, но я не вижу, почему оно не работало бы с интерфейсами VPN.
Идея состоит в том, что, поскольку Вы имеете ту же подсеть в наличии в различных интерфейсах на том маршрутизаторе, она усложняет маршрутизацию. В основном, когда пакет для 10.10.13.123 вводит маршрутизатор, это - DNATed прежде, чем направить к 192.168.0.123, таким образом, необходимо смочь сказать маршрутизации, что он был предназначен для 192.168.0.123 в интерфейсе VPN13.
Это может быть сделано при помощи меток брандмауэра и правил маршрутизации, которые используют те метки. SNAT и DNAT должны быть сделаны с целью брандмауэра NETMAP. Для SNAT это - та же проблема в POSTROUTING, Вы потеряли информацию, что пакет прибыл из этого или что интерфейс и они все получили исходный адрес 192.168.0.x. Таким образом, Вам нужна метка также для содержания той информации от искажения-PREROUTING до туземного-POSTROUTING. Можно использовать ту же метку, но затем это означало бы, что те пакеты будут использовать ту альтернативную таблицу маршрутизации, таким образом, необходимо было бы копировать глобальную таблицу маршрутизации на всех.
Для каждой сети Вы сделали бы:
lnet=192.168.0.0/24
if10=eth0 if11=tun0 if12=tun1 if13=tun2
n=0
for site in 10 11 12 13; do
table=$site
net=10.10.$site.0/24
n=$(($n + 1))
eval "interface=\$if$site"
inmark=$(($n * 2)) outmark=$(($n * 2 + 1))
iptables -t nat -A PREROUTING -d "$net" -j NETMAP --to "$lnet"
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -m mark --mark "$inmark"/0xf -j NETMAP --to "$net"
iptables -t mangle -A PREROUTING -i "$interface" -j MARK --set-mark "$inmark"/0xf
iptables -t mangle -A PREROUTING -d "$net" -j MARK --set-mark "$outmark"/0xf
ip rule add fwmark "$outmark"/0xf table "$table"
ip route add "$lnet" dev "$interface" table "$table"
done
Выше, мы используем первые 4 бита метки, чтобы позволить до 7 сетей быть направленными тот путь.
Добавьте свое имя пользователя к lp
группа была бы одной идеей. Если Вы смотрите на полномочия и владение /dev/ttyUSB0
они наиболее вероятны пользователь root
будучи владельцем и группой быть lp
.
Если это не походит на путь, Вы хотите пойти, то можно переопределить создание/управление этого устройства путем создания/изменения правила UDEV так, чтобы, когда эти аппаратные средства обнаруживаются /dev/..
устройство, которым это управляет для него, может быть изменено по мере необходимости.
Что-то вроде этого файл сделало бы это:
# serial
# this is the general rule that covers ttyUSB0 among others
KERNEL=="tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="uucp"
# relax the permissions just for ttyUSB0
KERNEL=="ttyUSB0", MODE="0666"
Просмотрите свои файлы правил udev, должен быть в каталоге, таком как: /etc/udev/rules.d
.
Не уверенный Ваша установка настроена правильно, но можно использовать правила UDEV сделать определенные вещи/действия к определенному устройству. См. https://wiki.archlinux.org/index.php/udev