Temat: OpenVPN w trybie tap, przekierowanie ruchu
Walczę z ustawieniem VPN aby cały ruch był przez niego kierowany.
Wgrałem na Nexxa WT3020F ostatnie czyste LEDE, dodałem easyconfig, zainstalowałem OpenVPN i skonfigurowałem klienta w trybie tap i to działa bo na serwerze widać urządzenie na liście klientów.
Nie mogę rozsupłać w jaki sposób ustawić klienta aby cały ruch szedł przez VPN?
Oto co zrobiłem na routerze kliencie:
opkg update
opkg install easyconfig
# opkg install uhttpd
/etc/init.d/uhttpd enable
uci set uhttpd.main.ubus_prefix=/ubus
uci set uhttpd.main.home='/www'
uci commit uhttpd
/etc/init.d/rpcd restart
/etc/init.d/uhttpd restart
opkg install chat comgt-ncm comgt uqmi usb-modeswitch
opkg install kmod-usb-net-cdc-ether kmod-usb-net-cdc-ncm kmod-usb-net-huawei-cdc-ncm
opkg install kmod-usb-net-qmi-wwan kmod-usb-net-sierrawireless kmod-usb-net-rndis
opkg install kmod-usb-serial-wwan kmod-usb-serial
opkg install kmod-usb-serial-option kmod-usb-serial-qualcomm kmod-usb-serial-sierrawireless
opkg install openvpn-openssl
uci set openvpn.klient=openvpn
uci set openvpn.klient.enabled=1
uci set openvpn.klient.dev=tap
uci set openvpn.klient.proto=tcp
uci set openvpn.klient.log=/tmp/openvpn.log
uci set openvpn.klient.verb=3
uci set openvpn.klient.ca=/etc/openvpn/ca.crt
uci set openvpn.klient.cert=/etc/openvpn/klient.crt
uci set openvpn.klient.key=/etc/openvpn/klient.key
uci set openvpn.klient.client=1
uci set openvpn.klient.remote_cert_tls=server
uci set openvpn.klient.remote="adres_serwera 1195"
uci commit openvpn
/etc/init.d/openvpn enable
/etc/init.d/openvpn start
Ponieważ w założeniach było, że klient ma otrzymywać adres z puli sieci lokalnej, należy jeszcze utworzyć odpowiednie połączenie (bridge) pomiędzy OpenVPN a interfejsem lan. W tym celu tworzymy dodatkowy plik zawierający polecenia łączenia tych interfejsów przy starcie systemu (np o nazwie /etc/init.d/openvpn-startup)
#!/bin/sh /etc/rc.common
START=94
start() {
openvpn --mktun --dev tap0
brctl addif br-lan tap0
ifconfig tap0 0.0.0.0 promisc up
}
stop() {
ifconfig tap0 0.0.0.0 down
brctl delif br-lan tap0
openvpn --rmtun --dev tap0
}
Zostaje jeszcze włączenie tego pliku do procedur startowych systemu
# chmod 755 /etc/init.d/openvpn-startup
# /etc/init.d/openvpn-startup enable
# /etc/init.d/openvpn-startup startI teraz, jeśli na routerze jest uruchomiony DHCP to urządzenie wpięte w switch pobiera adres lokalny, natomiast jeśli wyłączę DHCP i ustawię na sztywno adres z sieci VPN to nie pobiera adresu z DHCP serwera, a bym chciał aby tak to działało (aby cały ruch był kierowany przez VPN). Kiedy na urządzeniu klienckim ustawię sztywno adres to na router kliencki VPN mogę się dostać, ale na serwer już nie.
Co pominąłem?
Sieć wygląda tak:
serwer openvpn (DHCP) <router z tomato> -- internet -- klient openvpn (cały ruch przez vpn) <router z lede>Dodam że kiedy klientem openvpn jest router z tomato to to działa.
Konfig z klienta tomato:
root@karol:/tmp/etc/openvpn/client1# cat config.ovpn
# Automatically generated configuration
daemon
client
dev tap11
proto tcp-client
remote adres_serwera 1195
resolv-retry 30
nobind
persist-key
persist-tun
comp-lzo adaptive
verb 3
ca ca.crt
cert client.crt
key client.key
status-version 2
status status
# Custom Configuration
script-security 2
up /tmp/bridgeTAP
log-append /var/log/openvpn.logPewnie jest to jakaś bzdurka, ale nie mogę znaleźć na nią odpowiedzi.