ืฉืืื ืืืืื, ืงืจืืชื ืืืืจืื ื
ืืฉืืื
ืืฉ ื ืชื TP-Link WDR3500 ื-Orange Pi Zero H2. ืื ืื ื ืจืืฆืื ืฉื-Orange Pi ืืฆืคืื ืืช ืืื ืืจืืช ืืจืืื, ืืื ืืงืจื ืื ืืฉืื, ืขืืืื ื-VPN ืืืืืจ ืื ืชื. ืื ืืืืจืืช ืืืืช ืืืฉ ืื ืชื ืืืืจืืช ืืขืืื ืืื ืงืืื. ืืืืื, ืืืกืคืช ืืืืจื ื ืืกืคืช ืฆืจืืื ืืืืืช ืฉืงืืคื ืืื ืืืจืืฉืช ืืืืื. OpenVPN ืขืืื ืขื TCP, ืืชืื TAP ื ืืฆื ืืืฆื ืืฉืจ (ืฉืจืช-ืืฉืจ).
ืืืืื
ืืืงืื ืืืชืืืจ ืืจื USB, ืืืืืชื ืืืฉืชืืฉ ืืืฆืืื ืืืช ืฉื ืื ืชื ืืืืืจ ืืช ืื ืจืฉืชืืช ืืืฉื ื ืฉืืฉ ืืื ืืฉืจ VPN ื-Orange Pi. ืืกืชืืจ ืฉืืืืืจื ืชืชืงืข ืคืืืืช ืืืืชื ืจืฉืชืืช ืืื ืฉืจืช ื-VPN ืื ืชื. ืืืืจ ืืื, ืื ื ืืชืงืื ืื ืืืืืง ืืช ืืืชื ืฉืจืชืื ืขื ื-Orange Pi, ืืื ืชื ืืืืจื ื ืืืืฉืื ืคืจืืงืกื ืื ืฉืืื ืืฉืื ืืช ืื ืืืืืืจืื ืื ืื ืกืื ืืฉืจืช ืืืืฆืื ื, ืืื ื- Orange Pi ืืช ืื ืื ืืืื, ืื ื- ืฉืจืช ืืื ืคื ืืื. ืืงืืชื HAProxy.
ืืชืืจืจ ืื:
- ืืืืข ืืงืื
- ืื ืืฉืจืช ืืืืฆืื ื ืืื ื ืืืื, ืืื ืงืืื, ืืืืืืจ ืขืืืจ ืืฉืจืช ืืคื ืืื
- ืื ืืืื, ืืืงืื ืืชืงืื ืขื ืืื Orange Pi
- VPN ื- Orange Pi ืืคืขื ื ืื ืืช ืืืืจืง ืืืชื ืืืืจื ืื ืชื
- ืื ืชื ืื ืชื ืืืชื ืืื ืฉืื
ืืืืื ืืืืฉืื
ืื ืชื ื ืื ื ืฉืชื ืจืฉืชืืช ืขื ืื ืชื - main(1) ื- guest(2), ืืื ืืืช ืืื ืืฉ ืฉืจืช OpenVPN ืืืืืืจ ืืืฆืื ื.
ืชืฆืืจืช ืจืฉืช
ืื ืื ื ืฆืจืืืื ืื ืชื ืืช ืฉืชื ืืจืฉืชืืช ืืจื ืืฆืืื ืืืช, ืื ืื ืื ื ืืืฆืจืื 2 ืจืฉืชืืช VLAN.
ืื ืชื, ืืงืืข ืจืฉืช/ืืชื, ืฆืืจ ืจืฉืชืืช VLAN (ืืืืืื 1 ื-2) ืืืคืขื ืืืชื ืืืฆื ืืชืืื ืืืฆืืื ืืจืฆืืื, ืืืกืฃ ืืช ื-eth0.1 ื-eth0.2 ืืืืฉืื ืฉื ืืฆืจื ืืจืฉืชืืช ืืืชืืืืืช (ืืืืืื, ืืืกืฃ ืืืชื ืืืจืืื').
ื- Orange Pi ืื ื ืืืฆืจืื ืฉื ื ืืืฉืงื VLAN (ืืฉ ืื Archlinux ARM + netctl):
/etc/netctl/vlan-main
Description='Main VLAN on eth0'
Interface=vlan-main
Connection=vlan
BindsToInterfaces=eth0
VLANID=1
IP=no
/etc/netctl/vlan-guest
Description='Guest VLAN on eth0'
Interface=vlan-guest
Connection=vlan
BindsToInterfaces=eth0
VLANID=2
IP=no
ืืืื ืื ื ืืืฆืจืื ืขืืืจื ืฉื ื ืืฉืจืื:
/etc/netctl/br-main
Description="Main Bridge connection"
Interface=br-main
Connection=bridge
BindsToInterfaces=(vlan-main)
IP=dhcp
/etc/netctl/br-guest
Description="Guest Bridge connection"
Interface=br-guest
Connection=bridge
BindsToInterfaces=(vlan-guest)
IP=dhcp
ืืคืฉืจ ืืคืขืื ืืืืืืืืช ืขืืืจ ืื 4 ืืคืจืืคืืืื (ืืคืขืืช netctl). ืืขืช ืืืืจ ืืชืืื ืืืืฉ, ื-Orange Pi ืืชืงืข ืืฉืชื ืืจืฉืชืืช ืื ืืจืฉืืช. ืื ื ืืืืืจืื ืืช ืืชืืืืช ืืืืฉืง ื- Orange Pi ืืืืืจืืช ืกืืืืืช ืื ืชื.
ืืฆืืช ip addr
4: vlan-main@eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-main state UP group default qlen 1000
link/ether 02:42:f0:f8:23:c8 brd ff:ff:ff:ff:ff:ff
inet6 fe80::42:f0ff:fef8:23c8/64 scope link
valid_lft forever preferred_lft forever
5: vlan-guest@eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-guest state UP group default qlen 1000
link/ether 02:42:f0:f8:23:c8 brd ff:ff:ff:ff:ff:ff
inet6 fe80::42:f0ff:fef8:23c8/64 scope link
valid_lft forever preferred_lft forever
6: br-main: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 52:c7:0f:89:71:6e brd ff:ff:ff:ff:ff:ff
inet 192.168.1.3/24 brd 192.168.1.255 scope global dynamic noprefixroute br-main
valid_lft 29379sec preferred_lft 21439sec
inet6 fe80::50c7:fff:fe89:716e/64 scope link
valid_lft forever preferred_lft forever
7: br-guest: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether ee:ea:19:31:34:32 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.3/24 brd 192.168.2.255 scope global br-guest
valid_lft forever preferred_lft forever
inet6 fe80::ecea:19ff:fe31:3432/64 scope link
valid_lft forever preferred_lft forever
ืืืืจืช VPN
ืืืืจ ืืื, ืื ื ืืขืชืืงืื ืืช ืืืืืจืืช ืขืืืจ OpenVPN ืืืช ืืืคืชืืืช ืืื ืชื. ืืืจื ืืื ื ืืชื ืืืฆืื ืืืืจืืช ื /tmp/etc/openvpn*.conf
ืืืจืืจืช ืืืื, openvpn ืคืืขื ืืืฆื TAP ืืฉืจืช-bridge ืฉืืืจ ืขื ืืืืฉืง ืฉืื ืื ืคืขืื. ืืื ืฉืืื ืืขืืื, ืฆืจืื ืืืืกืืฃ ืกืงืจืืคื ืฉืคืืขื ืืืฉืจ ืืืืืืจ ืืืคืขื.
/etc/openvpn/main.conf
dev vpn-main
dev-type tap
client-to-client
persist-key
persist-tun
ca /etc/openvpn/main/ca.crt
cert /etc/openvpn/main/main.crt
cipher AES-256-CBC
comp-lzo yes
dh /etc/openvpn/main/dh2048.pem
ifconfig-pool-persist /etc/openvpn/ipp_main.txt
keepalive 10 60
key /etc/openvpn/main/main.key
port 443
proto tcp
push "redirect-gateway"
push "dhcp-option DNS 192.168.1.1"
server-bridge 192.168.1.3 255.255.255.0 192.168.1.200 192.168.1.229
status /tmp/openvpn.main.status
verb 3
setenv profile_name main
script-security 2
up /etc/openvpn/vpn-up.sh
/etc/openvpn/vpn-up.sh
#!/bin/sh
ifconfig vpn-${profile_name} up
brctl addif br-${profile_name} vpn-${profile_name}
ืืชืืฆืื ืืื, ืืจืืข ืฉืืืืืืจ ืืชืจืืฉ, ืืืฉืง vpn-main ืืชืืืกืฃ ื-br-main. ืขืืืจ ืจืฉืช ืืืืจื - ืืืืคื ืืืื, ืขื ืืฉื ืืืืฉืง ืืืืชืืืช ืืฉืจืช-bridge.
ื ืืชืื ืืงืฉืืช ืืืฆืื ื ื-proxy
ืืฉืื ืื, Orange Pi ืืืจ ืืกืืื ืืงืื ืืืืืจืื ืืืืืจ ืืงืืืืช ืืจืฉืชืืช ืื ืืจืฉืืช. ืื ืื ืฉื ืืชืจ ืืื ืืืืืืจ ืคืจืืงืกื ืฉื ืืืืืจืื ื ืื ืกืื ืื ืชื.
ืื ื ืืขืืืจืื ืืช ืฉืจืชื ื-VPN ืฉื ืื ืชื ืืืฆืืืืช ืืืจืืช, ืืชืงืื ืื ืืช HAProxy ืขื ืื ืชื ืืืืืืจืื:
/etc/haproxy.cfg
global
maxconn 256
uid 0
gid 0
daemon
defaults
retries 1
contimeout 1000
option splice-auto
listen guest_vpn
bind :444
mode tcp
server 0-orange 192.168.2.3:444 check
server 1-local 127.0.0.1:4444 check backup
listen main_vpn
bind :443
mode tcp
server 0-orange 192.168.1.3:443 check
server 1-local 127.0.0.1:4443 check backup
ืชืื ื
ืื ืืื ืืชื ืื ืืคื ืืชืืื ืืช, ืืืงืืืืช ืืขืืจื ื-Orange Pi ืืืืขืื ืฉื ืื ืชื ืื ืืชืืื ืืืชืจ, ืืืืืจืืช ื-VPN ืชืืื ืืฉืืขืืชืืช. ืืื ืขื ืืืช, ืื ืืืื ืืจืฉืช ืืจืฉืืืื ืื ืชื ืืืฉืืจื ืจืืืื ืืืื. ืืืงืจื ืฉื ืชืืื ื ื-Orange Pi, ืืื ืืืคืื ื-HAProxy ืชืขืืืจ ืืงืืืืช ืืฉืจืชืื ืืงืืืืื.
ืชืืื ืขื ืชืฉืืืช ืืื, ืืฆืขืืช ืืชืืงืื ืื ืืชืงืืื ืืืจืื.
ืืงืืจ: www.habr.com