sslhを用いてsshとOpenVPNを443portで待ち受ける
sslh でport443 を有効活用して、sshもhttpsも同時に待ち受けする。
この記事を見てsslhはopenvpnも対応しているらしいので試してみることにした。
環境はHyper-V上のdebian 8.6 ip:192.168.10.2
OpenVPN設定
sudo apt-get install openvpn cd /usr/share/easy-rsa/ # 各証明書生成 . ./vars ./clean-all ./build-ca ./build-key-server server ./build-key client ./build-dh # サーバに必要な証明書を配置する cp keys/ca.crt /etc/openvpn/ cp keys/server.crt /etc/openvpn/ cp keys/server.key /etc/openvpn/ cp keys/dh2048.pem /etc/openvpn/ # /etc/share/easy-rsa/keys/ # 上記のディレクトリにクライアントに必要な各証明書ca.crt client.crt client.keyがあるのでクライアントに安全な方法で移す
openvpnサーバの設定ファイル(/etc/openvpn/server.conf)を以下に記述する。
port 1194 proto tcp 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 keepalive 10 120 comp-lzo persist-key persist-tun status openvpn-status.log verb 3
OpenVPN起動
sudo systemctl start openvpn.service
sslh設定
sudo apt-get install sslh
sslhの設定ファイル(/etc/default/sslh)を以下に記述する。
RUN=yes DAEMON=/usr/sbin/sslh DAEMON_OPTS="--user sslh --listen 192.168.10.2:443 --ssh 127.0.0.1:22 --openvpn 127.0.0.1:1194 --pidfile /var/run/sslh/sslh.pid"
sslh起動
sudo systemctl start sslh.service
まとめ
クライアント側でssh, openvpnを試したが両方無事接続することを確認した。 vpnを使用する際のsslhのレイテンシがどの程度なのかまだ検討してないので分からないが概ね問題無いのではないのかと思う。 443portは本当に貴重なので今後もsslhは活用していきたいと思う。