LoginSignup
0
1

More than 3 years have passed since last update.

raspi-zeroW にopenvpnを入れる

Last updated at Posted at 2019-04-08

注意

osmc(raspi0w)の場合、リブート直後はtunデバイスにIPアドレスが割当されておらずサーバが使えない。openvpnをrestartすると、tunデバイスにIPアドレスが割り当てられサーバが使用可能になる。

osmc on raspi-zeroW にopenvpnを入れる

2019/06/08、内部NWへのアクセスを追加

参考1
参考2
CentOS

install

apt-get install -y openvpn easy-rsa
cd /etc/openvpn
mkdir easy-rsa
cd easy-rsa
cp -R /usr/share/easy-rsa/* ./

configation

/etc/openvpn/easy-rsa/vars
export EASY_RSA="/etc/openvpn/easy-rsa"
export KEY_SIZE=2048
export KEY_COUNTRY="JP"
export KEY_PROVINCE="Kanagawa"
export KEY_CITY="Yokohama"
export KEY_ORG="MyHome"
export KEY_EMAIL="mail@mymail.server"
export KEY_OU="MyOU"

CA証明書

cd /etc/openvpn/easy-rsa
cp openssl-1.0.0.cnf openssl.cnf
source ./vars
./clean-all
./build-ca

サーバ証明書

./build-key-server server 
A challenge password []: (電話番号を設定)

クライアント証明書

./build-key foo
./build-key bar

challenge passwordは空白

DH(Diffie-Hellman key exchange)パラメタ

* 30〜60分かかる

./build-dh

TLS鍵を作成

cd /etc/openvpn/easy-rsa/keys
openvpn --genkey --secret ta.key
cp ta.key server.crt server.key dh2048.pem ca.crt /etc/openvpn

OpenVPNサーバの設定ファイルを作成

cd /etc/openvpn
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz .
gunzip server.conf.gz

編集

ipv6化して、外部解放できるポートが限られているので、Listenするポート番号はHomeGWでポートフォワードしたポートに合わせる。

/etc/openvpn/server.conf
# cat server.conf | grep -v '^[#;]' | grep -v ^\s*$
---
port xxxx
proto udp
dev tun
ca   /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key  /etc/openvpn/server.key
dh   /etc/openvpn/dh2048.pem
server 10.8.0.0 255.255.255.0    # デフォルトのまま
ifconfig-pool-persist ipp.txt    # 固定IP付与(未設定)
push "redirect-gateway def1 bypass-dhcp" # VPN-Clientからのパケットは全てVPN経由
push "dhcp-option DNS 192.168.1.1" # VPNから見て外のDNS
keepalive 10 120
tls-auth /etc/openvpn/ta.key 0   # 0:server 1:client
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log-append  /var/log/openvpn.log
explicit-exit-notify 1

systemctlで起動

systemctl restart openvpn
systemctl enable  openvpn

iptablesのポートを開放

exit 0の前に2行追加。xxxxは server.conf で指定したポート。

/etc/rc.local
iptables -A INPUT -p udp -m state --state NEW -m udp --dport xxxx -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o wlan0 -j MASQUERADE

VPNサーバにするためIPフォワードを有効にします。

/etc/sysctl.conf
net.ipv4.ip_forward=1

reboot&NW構成図


      Inter-net
        ||
        ||  Global-address
    [ www.xxx.yyy.zzz ] IPoE-router
    [   192.168.1.1   ]
        ||  DNS#1
        ||
    [  192.168.1.254  ] Home-router
    [  192.168.0.1    ] 
        ||  DNS#2
        ||               192.168.0.0/24
++=======================(Home-NW)=========++
            ||             
 wlan0   [  192.168.0.102  ] VPN-Server 
 tun0    [  10.8.0.1       ] ip-mmasquerade
            ||
            ||               10.8.0.0/24
++=======================(VPN-NW)==========++
      ||             
      ||
  [ 10.8.0.2 - ** ] VPN-Clients

lo: flags=73  mtu 65536
  inet 127.0.0.1  netmask 255.0.0.0
tun0: flags=4305  mtu 1500
  inet 10.8.0.1  netmask 255.255.255.255  destination 10.8.0.2
wlan0: flags=-28605  mtu 1500
  inet 192.168.0.102  netmask 255.255.255.0  broadcast 192.168.0.255

受信先サイト ゲートウェイ  ネットマスク   フラグ Metric Ref 使用数 インタフェース
0.0.0.0      192.168.0.1   0.0.0.0         UG    0      0        0 wlan0
10.8.0.0     10.8.0.2      255.255.255.0   UG    0      0        0 tun0
10.8.0.2     0.0.0.0       255.255.255.255 UH    0      0        0 tun0
192.168.0.0  0.0.0.0       255.255.255.0   U     0      0        0 wlan0
192.168.0.1  0.0.0.0       255.255.255.255 UH    0      0        0 wlan0

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1