Хочу сделать мост между сетью на работе и дома. Нужен именно мост и только на одном из портов роутера. На остальных портах должна быть изолированная домашняя сеть.
OpenVPN сервер на роутере я поднял, отрезал один порт в отдельный vlan, поднял виртуальную сеть Wi-Fi (для рабочего cisco 7920) и все это объединил в мост:
Code:
#!/bin/sh
nvram set boardflags=0x110
nvram set vlan0ports="0 1 2 5*"
nvram set vlan1ports="3"
nvram set vlan0hwname=et0
nvram set vlan1hwname=et0
nvram set wan_ifnames=eth1
nvram set wan_ifname=eth1
nvram set lan_ifnames="vlan0 eth2"
nvram set clkfreq=300,150
nvram set wl0_vifs="wl0.1"
nvram commit
cd /tmp/local
wget http://mysite.net/static.key
# Создаем директорию куда все будем ставить
mkdir /tmp/local/opt
# Монтируем ее в /opt
mount /tmp/local/opt /opt
# Обновляем список доступных для установки пакетов
ipkg.sh update
# Устанавливаем установщик пакетов ipkg
ipkg.sh install ipkg
# Перенастраиваем ipkg на нужный нам репозитарий пакетов
echo "src unslung http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable" > /opt/etc/ipkg.conf
echo "dest root /" >> /opt/etc/ipkg.conf
# Обновляем список доступных для установки пакетов
ipkg update
# Последовательно ставим необходимые для выполнения нащей задачи пакеты
ipkg install uclibc-opt
ipkg install openssl
ipkg install lzo
ipkg -force-depends install openvpn
# Создаем виртуальный сетевой интерфейс
mkdir /dev/net
mknod /dev/net/tun c 10 200
# mknod /dev/net/tap0 c 36 36
# Создаем файл конфигурации openvpn сервера
echo "dev tap0" > /opt/etc/openvpn/server.conf
echo "port 9999" >> /opt/etc/openvpn/server.conf
echo "proto udp" >> /opt/etc/openvpn/server.conf
echo "secret static.key" >> /opt/etc/openvpn/server.conf
echo "keepalive 10 60" >> /opt/etc/openvpn/server.conf
echo "float" >> /opt/etc/openvpn/server.conf
echo "verb 3" >> /opt/etc/openvpn/server.conf
# Создаем директорию для пользовательских скриптов
mkdir /usr/local/sbin
# Создаем в ней файл post-boot и прописываем в него
# монтирование /opt и запуск openvpn сервера после загрузки роутера
echo "#!/bin/sh" > /usr/local/sbin/post-boot
echo "mount /tmp/local/opt /opt" >> /usr/local/sbin/post-boot
echo "" >> /usr/local/sbin/post-boot
echo "/opt/etc/init.d/S24openvpn" >> /usr/local/sbin/post-boot
echo "/sbin/ifconfig wl0.1 hw ether 00:23:54:6F:70:EE" >> /usr/local/sbin/post-boot
echo "/sbin/ifconfig wl0.1 up" >> /usr/local/sbin/post-boot
echo "/usr/sbin/brctl addbr br1" >> /usr/local/sbin/post-boot
echo "/usr/sbin/brctl addif br1 wl0.1" >> /usr/local/sbin/post-boot
echo "/usr/sbin/wl -a wl0.1 bssid 00:23:54:6F:70:EE" >> /usr/local/sbin/post-boot
echo "/usr/sbin/wl -a wl0.1 ssid "openssid"" >> /usr/local/sbin/post-boot
echo "/usr/sbin/wl -a wl0.1 mac 00:17:59:9F:56:78" >> /usr/local/sbin/post-boot
echo "/usr/sbin/wl -a wl0.1 macmode 2" >> /usr/local/sbin/post-boot
echo "/usr/sbin/brctl addif br1 tap0" >> /usr/local/sbin/post-boot
echo "/usr/sbin/brctl addif br1 vlan1" >> /usr/local/sbin/post-boot
echo "/sbin/ifconfig tap0 0.0.0.0 promisc up" >> /usr/local/sbin/post-boot
echo "/sbin/ifconfig wl0.1 0.0.0.0 promisc up" >> /usr/local/sbin/post-boot
echo "/sbin/ifconfig vlan1 0.0.0.0 promisc up" >> /usr/local/sbin/post-boot
echo "/sbin/ifconfig br1 0.0.0.0 promisc up" >> /usr/local/sbin/post-boot
# Делаем файл скрипта исполняемым
chmod +x /usr/local/sbin/post-boot
# Создаем в ней файл post-firewall и прописываем в него
# нужные нам правила файрвола для работы сервера
echo "#!/bin/sh" > /usr/local/sbin/post-firewall
echo "iptables -I INPUT -p udp --dport 9999 -j ACCEPT" >> /usr/local/sbin/post-firewall
echo "iptables -t nat -I PREROUTING -i eth1 -p udp --dport 9999 -j DNAT --to-destination $4:9999" >> /usr/local/sbin/post-firewall
# Делаем файл скрипта исполняемым
chmod +x /usr/local/sbin/post-firewall
# Создаем файл запуска openvpn сервера
echo "#!/bin/sh" > /opt/etc/init.d/S24openvpn
echo 'if [ -n "`pidof openvpn`" ]; then' >> /opt/etc/init.d/S24openvpn
echo "/bin/killall openvpn 2>/dev/null" >> /opt/etc/init.d/S24openvpn
echo "fi" >> /opt/etc/init.d/S24openvpn
echo "mkdir /dev/net" >> /opt/etc/init.d/S24openvpn
echo "mknod /dev/net/tun c 10 200" >> /opt/etc/init.d/S24openvpn
echo "chmod 0700 /dev/net/tun" >> /opt/etc/init.d/S24openvpn
echo "/sbin/insmod tun" >> /opt/etc/init.d/S24openvpn
echo "echo 1 > /proc/sys/net/ipv4/ip_forward" >> /opt/etc/init.d/S24openvpn
echo "/opt/sbin/openvpn --mktun --dev tap0" >> /opt/etc/init.d/S24openvpn
echo "/opt/sbin/openvpn --cd /opt/etc/openvpn --daemon --log-append /var/log/openvpn.log --config server.conf" >> /opt/etc/init.d/S24openvpn
# Делаем файл скрипта исполняемым
chmod +x /opt/etc/init.d/S24openvpn
# Говорим роутеру что мы хотим сохранять во флэш наши скрипты
echo "/usr/local/sbin/post-firewall" > /usr/local/.files
echo "/usr/local/sbin/post-boot" > /usr/local/.files
# перемещаем ключ в нужное место
mv /tmp/local/static.key /opt/etc/openvpn
# Сохраняем все во флэш и перегружаем роутер
flashfs save
flashfs commit
flashfs enable
reboot
wi-fi трубка цепляется, получает по dhcp из офиса настройки и пр. и работает. Т.е. туннель работает точно. Но вот если воткнуть ноутбук в порт LAN4 на роутере, то входящих пакетов 0! Тихо и глухо. Что с vlan1 я сделал не так не понимаю. Не работает связь с офисом по этому порту и всё тут. Помогите, о ГУРУ!