[SOLVED] VPN туннель средствами SSH, и особенности openrc.

Недавно столкнулся с необходимостью использовать компьютер с gentoo в качестве клиента такого сервиса как VPN средствами SSH.

И обнаружил одну особенность openrc, не отражённую в документации. Во всяком случае в /usr/share/doc/openrc*/net.example.bz2 об этом ни слова.

SSH, при подключении с ключём -w содаёт tun интерфейс, у openrc же есть свои механизмы, при поднятии интерфейса создающие ещё один tun/tap. В результате, получается два tun, одному openrc назначает адрес и настраивает маршрутизацию, а ssh использует другой, и ничего не работает.

Оказывается, в качестве модуля, в параметре tuntap_tun нужно указать пустую строку, из кода /lib/rc/net/tuntap.sh это видно, а в документации не отражено. В результате получилось так:

tuntap_tun0="" # Без этого openrc будет создавать свой tun, а нам его сделает ssh
config_tun0="10.1.0.2/24 peer 10.1.0.1"
preup() {
    if [ "${IFACE}" == "tun0" ]
        then
        /usr/bin/ssh -i /root/.ssh/server_vpn -S /var/run/ssh-tunnel-server -M -fCN -w 0:0 
        sleep 3
    fi
    return 0
}
predown() {
       # Remember to return 0 on success
       return 0
}
postup() {
       if [ "${IFACE}" == "tun0" ]
       then
           /sbin/route add -net 192.168.25.0 netmask 255.255.255.0 gw 10.1.0.1 tun0
       fi
       return 0
}
postdown() {
       if [ "${IFACE}" == "tun0" ]
       then
           /usr/bin/ssh -i /root/.ssh/server_vpn -S /var/run/ssh-tunnel-server -O exit server.dyndns.com
        fi
       return 0
}

Теперь всё поднимается по /etc/init.d/tun0 start, и выключается по /etc/init.d/tun0 stop.

PS: Так и не понял как создать свой бложик для размещения таких заметок на этом сайте. Размещаю на форуме, может кому-то пригодится.