[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: Так и не понял как создать свой бложик для размещения таких заметок на этом сайте. Размещаю на форуме, может кому-то пригодится.
- Для комментирования войдите или зарегистрируйтесь