Fórum Root.cz
Hlavní témata => Server => Téma založeno: crown 03. 08. 2016, 16:02:52
-
Ahoj,
uz jsem s tim stravil plno casu a delam tam nejakou blbou chybu.
Nastavuju router s openWRT jako klient pro openVPN.
Doslat jsem se do stavu, ze openVPN se pripoji (to je ta adresa 10.0.0.xx). Spolu s VNP tap0 jsem dal do bridge wifi0
Problem je ale, ze kdyz se pripojim na wifi0, tak nedostanu pridelenou IP adresu. Myslel jsem, ze ji prideli openVPN server (ten funguje i jako dhcp server pro sit 10.0.0.xx)
Nemate napad? Dalsi info muzu doplnit, nechci toho hned lepit moc.
V LAN skupine zustal ethernet port, abych mohl router nastavovat.
Tap pouzivam, protoze pro nektere veci potrebuju byt na stejnem segmentu site. Je mi jasne, ze tun by by neprenasel zbytecne blbosti a byl by pro vetsinu veci efektivnejsi.
-
Přijde mi, že nemůžeš míchat tap klienta s wlan s dalšími klienty.
Připojuješ router na server, to je 1 klient. Ten klient ale dne mne jen tak adresy ze serveru přerozdělovat dalším klientům nebude. Možná to bude chtít nějaké speciální pravidla pro firewall.
-
Přijde mi, že nemůžeš míchat tap klienta s wlan s dalšími klienty.
Připojuješ router na server, to je 1 klient. Ten klient ale dne mne jen tak adresy ze serveru přerozdělovat dalším klientům nebude. Možná to bude chtít nějaké speciální pravidla pro firewall.
jj, ja si myslim, ze mam blbe pravidla ve firewallu. Jeste si s tim budu hrat. Predtim mi to dokonce jednu chvili slo, ale uz se to nepovedlo zopakovat.
Ten tap by mel pripojit wifi a chovat se, jako kdyby byla soucasni eternet segmentu. Klienti na wifi by tedy meli dostavat IP or dhcp serveru toho eternetoveho segmentu. Teda teoreticky - praxe mi zatim pokulhava.
-
nema nekdo napad?
-
OpenVPN server není dhcp, tudíž nebude přidělovat IP zařízením za klientem. Stejně tak nemůžeš přidělovat IP z klienta, pokud chceš mít jeho síť v bridge s tap rozhraním. Teda možná by to šlo, pokud bysis ohlídal, že lokální DHCP bude přidělovat jen IP, které nepřidělí nikdo další a musel bys u bridge pravděpodobně nastavit setageing na 0.
Čistší řešení by bylo pustit DHCP server na rozhraní OpenVPN serveru - nezkoušel jsem, jestli to jde udělat napřímo. Já mám obdobnou konfiguraci, kde je ale bridge na obou stranách, takže OpenVPN funguje jako transparentní tunel a klienti dostávají IP z jednoho DHCP, ať jsou lokálně nebo ve vzdálené lokalitě za WRT.
-
DHCP server by na OpenWRT pro rozhrani br-VPN_CLIENT mel byt vypnuty (DHCP klient muze byt zapnuty, ale staticky pridelena adresa muze byt praktictejsi).
My mame konfiguraci tap+wifi(+bridge s eth VLAN rozhranim) funkcni. Je to proste:
V LuCI v nastaveni br-VPN_CLIENT bych overil:
V General Setup
"No DHCP Server configured for this interface"
V Physical Settings
Bridge Interfaces - zaškrtnuto (zřejmě je, podle obrázku)
Interface - Wireless Network XXX - zaškrtnuto
Výpis bridgů (je vidět bridge wlan0 a tap interface):
root@OpenWrt:~# brctl show
bridge name bridge id STP enabled interfaces
br-Phones_Test 7fff.d4ca6d06e8dc no wlan0
tap_Test
Výpis up-skriptu pro tunel:
root@OpenWrt:~# cat /etc/openvpn/test.up.sh
#!/bin/sh
ip link set tap_Test up
brctl addif br-Phones_Test tap_Test
Použitý konfigurák (až na up-skript tam není nic speciálního):
root@OpenWrt:~# cat /etc/openvpn/<vpn>.conf
client
dev tap_Test
proto udp
remote <hostname> <port> udp
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
ns-cert-type server
ca <ca.crt>
cert <klient.crt>
key <klient.key>
script-security 2
up /etc/openvpn/test.up.sh
Přidejte nám sem výpis
brctl show
ip a s br-VPN_client
Všechno to samozřejmě předpokládá, že wifi je správně nastavená. :-)
Možná by stálo za to, rozdělit eth porty do dvou VLAN/skupin (v LuCI v menu Network-Switch) a část portů přiřadit do br-VPN_client. Pak by bylo možné zkoušet DHCP klienta připojeného pomocí ethernetu.
-
Radek Zajíc: Diky, kouknu a zkopiruju to sem (k routeru se dostanu o vikendu).
Na serveru je tap0 v bridge s LAN. Ta pridelena adreasa 10.0.0.172 je z DHCP serveru lan u serveru. (V openVPN serveru je nastaveno 10.0.0.10-10.0.0.50, zatimco LAN DHCP na serveru ma nastaveno 10.0.0.170 a vyse)
Fish: hodil bys sem prosim take tvuj konfigurak?
Diky
-
Mě se zdá, že to trochu motáš všechno dohromady. Jestli už i na serveru to máš jako bridge, tak v OpenVPN nemá co dělat přidělování adres. Ono to teda jde udělat i s tím, ale zbytečně se to tím komplikuje. Zkusil jsem si teď celou konfiguraci udělat doma načisto a funguje mi to. Pokud je na serveru zapnutý přidělování IP, je potřeba na klientovi přidat v OpenVPN volbu ifconfig_noexec, jinak se IP přidělí na tap interface a ne na bridge. Ono to může a nemusí vadit, protože klienti za ním i tak fungují normálně, jen by nebylo dostupné WRT na IP z toho tunelovaného rozsahu.
Přikládám testovací konfiguraci. eth0.3 je nově zřízená VLANa na jednom z portů WRT, kam jsem připojil testovací notebook.
Na konfiguraci serveru není asi co řešit, jen bych vyhodil server-bridge.
Na WRT:
/etc/config/openvpn:
config openvpn company
option enable 1
option client 1
option remote ____server____
option port ____port____
option proto tcp
option dev tap11
option ca /etc/openvpn/ca.crt
option cert /etc/openvpn/fish-wrt.crt
option key /etc/openvpn/fish-wrt.key
option comp_lzo yes
option keepalive "10 120"
option status /tmp/openvpn.status
option persist_key 1
option persist_tun 1
option verb 1
option mute 20
option nobind 1
option ifconfig_noexec 1
/etc/conf/network (jen související interface):
config interface 'company'
option _orig_ifname 'tap11'
option _orig_bridge 'true'
option ifname 'eth0.3 tap11'
option type 'bridge'
option proto 'static'
option ipaddr '192.168.1.142'
option netmask '255.255.255.0'
Zřízený bridge interface musí být unmanaged nebo static. S DHCP se WRT nevypořádá.
Klient připojený na eth0.3 pak vidí transparentně do firemní sítě a obráceně. WRT je na staticky přidělené IP vidět taky z obou lokalit.
Zkusil jsem přes GUI do bridge přidat i wifi síť a taktéž funguje. Ta není v konfiguraci vidět, protože je spárovaná přes wireless.@wifi-iface[0].network='company'.
-
Fish: diky moc, zkusim upravit podle tve rady. Muzes prosim jeste hodit soubor firewall ?
-
Můžu, ale myslím, že to není potřeba, protože jsem do něj v souvislosti s tím tunelem nic nepřidával.
Jen ještě doplním, že na routeru je OpenWrt Chaos Calmer. Ale mám pocit, že jsem někde měl i Barrier Breaker ve stejném nastavení.
-
Ja tam mam taky Chaos Calmer (router Nexx WT3020).
Diky
-
Ahoj, tak uz to funguje pekne. Je to citlive na silu wifi, takze musi byt blizko nebo spravne namirena antena. Diky moc kluci!
Mimochodem ten maly nexx WT3020 zvlada 8mbit (rychlost zdejsi linky) uplne v pohode kolem 40% load.
Pro ostatni a i pro me do budoucna etc/config
root@OpenWrt:/etc/config# cat network
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option ula_prefix 'xxxx:xxxx:xxxx::/48'
config interface 'VPN_client'
option _orig_ifname 'tap0'
option _orig_bridge 'true'
option proto 'static'
option type 'bridge'
option ipaddr '10.0.0.251'
option netmask '255.255.255.0'
option ifname 'tap0 wlan1'
option gateway '10.0.0.138'
config interface 'wan'
option _orig_ifname 'eth0.2'
option _orig_bridge 'false'
option proto 'dhcp'
option ifname 'eth0.2'
option delegate '0'
config interface 'wan6'
option ifname 'eth0.2'
option proto 'dhcpv6'
config switch
option name 'switch0'
option reset '1'
option enable_vlan '1'
config switch_vlan
option device 'switch0'
option vlan '1'
option ports '1 2 3 4 6t'
config switch_vlan
option device 'switch0'
option vlan '2'
option ports '0 6t'
config interface 'wwan'
option proto 'dhcp'
option delegate '0'
config interface 'LAN_wire'
option proto 'static'
option ifname 'eth0.1'
option ipaddr '192.168.5.1'
option netmask '255.255.255.0'
option gateway '192.168.5.1'
root@OpenWrt:/etc/config# cat firewall
config defaults
option syn_flood '1'
option output 'ACCEPT'
option input 'ACCEPT'
option forward 'ACCEPT'
config zone
option name 'lan'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
option network 'lan'
config zone
option name 'wan'
option output 'ACCEPT'
option masq '1'
option mtu_fix '1'
option network 'wan wan6 wwan'
option forward 'ACCEPT'
option input 'ACCEPT'
config zone
option name 'VPN_client'
option input 'ACCEPT'
option forward 'ACCEPT'
option output 'ACCEPT'
option network 'VPN_client'
config rule
option name 'Allow-DHCP-Renew'
option src 'wan'
option proto 'udp'
option dest_port '68'
option target 'ACCEPT'
option family 'ipv4'
config rule
option name 'Allow-Ping'
option src 'wan'
option proto 'icmp'
option icmp_type 'echo-request'
option family 'ipv4'
option target 'ACCEPT'
config rule
option name 'Allow-IGMP'
option src 'wan'
option proto 'igmp'
option family 'ipv4'
option target 'ACCEPT'
config rule
option name 'Allow-DHCPv6'
option src 'wan'
option proto 'udp'
option src_ip 'fe80::/10'
option src_port '547'
option dest_ip 'fe80::/10'
option dest_port '546'
option family 'ipv6'
option target 'ACCEPT'
config rule
option name 'Allow-MLD'
option src 'wan'
option proto 'icmp'
option src_ip 'fe80::/10'
list icmp_type '130/0'
list icmp_type '131/0'
list icmp_type '132/0'
list icmp_type '143/0'
option family 'ipv6'
option target 'ACCEPT'
config rule
option name 'Allow-ICMPv6-Input'
option src 'wan'
option proto 'icmp'
list icmp_type 'echo-request'
list icmp_type 'echo-reply'
list icmp_type 'destination-unreachable'
list icmp_type 'packet-too-big'
list icmp_type 'time-exceeded'
list icmp_type 'bad-header'
list icmp_type 'unknown-header-type'
list icmp_type 'router-solicitation'
list icmp_type 'neighbour-solicitation'
list icmp_type 'router-advertisement'
list icmp_type 'neighbour-advertisement'
option limit '1000/sec'
option family 'ipv6'
option target 'ACCEPT'
config rule
option name 'Allow-ICMPv6-Forward'
option src 'wan'
option dest '*'
option proto 'icmp'
list icmp_type 'echo-request'
list icmp_type 'echo-reply'
list icmp_type 'destination-unreachable'
list icmp_type 'packet-too-big'
list icmp_type 'time-exceeded'
list icmp_type 'bad-header'
list icmp_type 'unknown-header-type'
option limit '1000/sec'
option family 'ipv6'
option target 'ACCEPT'
config include
option path '/etc/firewall.user'
config rule
option src 'wan'
option dest 'lan'
option proto 'esp'
option target 'ACCEPT'
config rule
option src 'wan'
option dest 'lan'
option dest_port '500'
option proto 'udp'
option target 'ACCEPT'
config forwarding
option dest 'wan'
option src 'lan'
root@OpenWrt:/etc/config# cat dhcp
config dnsmasq
option domainneeded '1'
option boguspriv '1'
option filterwin2k '0'
option localise_queries '1'
option rebind_protection '1'
option rebind_localhost '1'
option local '/lan/'
option domain 'lan'
option expandhosts '1'
option nonegcache '0'
option authoritative '1'
option readethers '1'
option leasefile '/tmp/dhcp.leases'
option resolvfile '/tmp/resolv.conf.auto'
option localservice '1'
#config dhcp 'lan'
# option interface 'lan'
# option start '100'
# option limit '150'
# option leasetime '12h'
# option dhcpv6 'server'
# option ra 'server'
# option ra_management '1'
config dhcp 'wan'
option interface 'wan'
option ignore '1'
config odhcpd 'odhcpd'
option maindhcp '0'
option leasefile '/tmp/hosts/odhcpd'
option leasetrigger '/usr/sbin/odhcpd-update'
config dhcp 'LAN_wire'
option start '100'
option leasetime '12h'
option limit '150'
option interface 'LAN_wire'
root@OpenWrt:/etc/config# cat openvpn
config 'openvpn' 'lan'
option 'enable' '1'
option 'tls_client' '1'
option 'port' '1194'
#option 'proto' 'tcp-client'
option 'proto' 'udp'
option 'remote' 'xx.xx.xx.xx 1194'
option 'dev' 'tap0'
option 'ca' '/etc/openvpn/ca.crt'
option 'cert' '/etc/openvpn/client1.crt'
option 'key' '/etc/openvpn/client1.key'
option 'resolv-retry' ' infinite'
option 'nobind' '1'
option 'mute-replay-warnings' '1'
option 'comp_lzo' 'yes'
option 'status' '/tmp/openvpn_tap0.status'
option 'persist_key' '1'
option 'persist_tun' '1'
option 'verb' '1'
#option 'mute' '20'
#option 'nobind' '1'
option 'ifconfig_noexec' '1'
-
Tady je vytizeni, kdyby to nekoho zajimalo.
(http://imgway.cz/s1/photos/20160815147126893186282.png)
-
a jeste watchdog, vpn zrejme nenavaze spojeni samo pri vypadku.
root@OpenWrt:~# cat ./vpn-watchdog.sh
#!/bin/sh
tries=0
while [[ $tries -lt 5 ]]
do
if /bin/ping -c 1 10.0.0.138 >/dev/null
then
echo 'VPN connection OK'
exit 0
fi
tries=$((tries+1))
done
echo 'Restarting VPN'
/etc/init.d/openvpn restart
root@OpenWrt:~# cat ./wan-watchdog.sh
#!/bin/sh
tries=0
while [[ $tries -lt 5 ]]
do
if /bin/ping -c 1 8.8.8.8 >/dev/null
then
echo 'WAN Connection OK'
exit 0
fi
tries=$((tries+1))
done
echo 'Restarting WAN network'
/etc/init.d/network restart
a do cronu
root@OpenWrt:/etc/crontabs# cat root
5 * * * * /root/vpn-watchdog.sh
5 * * * * /root/wan-watchdog.sh