RouterboardでSSTP接続

実は、、
どうもこうも上手く行かなかったので
L2TP/ipsecでの接続を諦めました。。。

SSTP

ということで、SSTP(Secure Socket Tunneling Protocol)
Routerboardで設定しました。
接続方式・・・Routerboard-クライアントPC接続
RouterboardOS・・・6.10
http://wiki.mikrotik.com/wiki/Manual:Interface/SSTP

お付き合い頂いた方々、
自宅ラックの方々有難う御座いました!


1)自己証明書を作ります。
http://wiki.mikrotik.com/wiki/Manual:Create_Certificates
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/702apachessl.html

今回は、Linux(CentOS)のOpensslを使って作成しました。
秘密鍵(server.key)の作成

$ openssl genrsa -des3 1024 > server.key
Generating RSA private key, 1024 bit long modulus
............++++++
.++++++
e is 65537 (0x10001)
Enter pass phrase:任意のパス
Verifying - Enter pass phrase:任意のパス

これでOK。

公開鍵(server.csr)の作成
「Common Name」には必ず、名前解決できるホスト名かIPアドレスを入れて下さい!

$ openssl req -new -x509 -key server.key > server.csr
Enter pass phrase for server.key:先ほどの任意のパス
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Kita
Organization Name (eg, company) [Default Company Ltd]:neko6
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:必須!!!!!
Email Address []:

Common Name」が接続先になります。

デジタル証明書(server.crt)の作成

$ openssl x509 -in server.csr -days 3650 > server.crt

-days」で有効期限を指定できます。

ファイルの確認

$ ls
server.crt  server.csr  server.key

server.csr 」はもう必要ありません。

さてRouterboardのFTPを有効にして
デジタル証明書「server.crt」と秘密鍵「server.key」を
アップロードします。
binaryモードで上げたほうが安全?

$ ftp 192.168.1.1(RouterboardのIPアドレス)
Connected to 192.168.1.1 (192.168.1.1).
220 MikroTik FTP server (MikroTik 6.10) ready
Name (192.168.1.1:hoge): hogegoge
331 Password required for hogehoge
Password:
230 User admin logged in
Remote system type is UNIX.
ftp> 
ftp> 
ftp> binary
200 Type set to I
ftp>
ftp>
ftp> put server.crt 
local: server.crt remote: server.crt
227 Entering Passive Mode (192,168,1,1,190,110).
150 Opening BINARY mode data connection for '/server.crt'
226 BINARY transfer complete
908 bytes sent in 0.000152 secs (5973.68 Kbytes/sec)
ftp>
ftp>
ftp> put server.key 
local: server.key remote: server.key
227 Entering Passive Mode (192,168,1,1,220,177).
150 Opening BINARY mode data connection for '/server.key'
226 BINARY transfer complete
891 bytes sent in 3.5e-05 secs (25457.14 Kbytes/sec)
ftp> 
ftp>
ftp> quit
221 Closing

Routerboardの「Files」を覗くと
アップロードされていると思います。

2)Routerboardの設定
デジタル証明書「server.crt」をインポートします。

[admin@MikroTik] > /certificate import file-name=server.crt 
passphrase: 先ほどの任意のパス
     certificates-imported: 1
     private-keys-imported: 0
            files-imported: 1
       decryption-failures: 0
  keys-with-no-certificate: 0

パスフレーズをミスってもエラー表示されないので、
注意しましょうw(ミスるとfiles-importedが0になります)

秘密鍵「server.key」をインポートします。

[admin@MikroTik] > /certificate import file-name=server.key 
passphrase: 先ほどの任意のパス
     certificates-imported: 0
     private-keys-imported: 1
            files-imported: 1
       decryption-failures: 0
  keys-with-no-certificate: 0

パスフレーズをミスってもエラー表示されないので、
注意しましょうw(ミスるとfiles-importedが0になります)

わかりやすように。。。

[admin@MikroTik] > /certificate set cert_1 name=sstpserver

名前を変えておきました。

DHCPプールの作成
今回はSSTPネットワーク用Pool=SSTP(192.168.2.10-192.168.2.20)

[admin@MikroTik] /ip pool> print
 # NAME                                         RANGES
 0 default-dhcp                                 192.168.1.10-192.168.1.20
 1 SSTP                                         192.168.2.10-192.168.2.20

こんな感じ

SSTPプロファイルの作成

[admin@MikroTik] /ppp profile print 
Flags: * - default 
 1   name="SSTP" local-address=192.168.2.1 remote-address=SSTP remote-ipv6-prefix-pool=(unknown) use-ipv6=yes use-mpls=default 
     use-compression=default use-vj-compression=default use-encryption=default only-one=default 
     change-tcp-mss=default address-list="" 

name=”SSTP”
local-address=192.168.2.1(PPP-InterfaceのIP固定した方がいいと思う)
remote-address=SSTP (DCHP-Pool)
を使う「SSTP」というプロファイルを作りました。
ここは別にローカルネットワーク帯のものを使っても良いです。

接続アカウントの作成

[admin@MikroTik] > /ppp secret print detail 
Flags: X - disabled 
 0   name="neko6" service=sstp caller-id="" password="ユーザ毎のパス" 
     profile=SSTP routes="" limit-bytes-in=0 limit-bytes-out=0 
     last-logged-out=jan/01/1970 00:00:00 

service・・・sstp
profile・・・「profiles」で作った「SSTP」をにします。

SSTPサーバの設定

[admin@MikroTik] /ppp secret> /interface sstp-server server print 
                    enabled: yes
                       port: 443
                    max-mtu: 1500
                    max-mru: 1500
                       mrru: disabled
          keepalive-timeout: 60
            default-profile: default-encryption
             authentication: mschap2
                certificate: sstpserver
  verify-client-certificate: no
                  force-aes: no

authentication・・・mschap2(これだけでいいはず)
certificate・・・インポートした証明書
verify-client-certificate・・・no(YesだとOSによりエラーする場合があります)

default-profile」これの必要性がいまいちわからない。。。

Filterの設定
TCP-443を使うWANからのアクセスを許可します

[admin@MikroTik] > /ip firewall filter print 
Flags: X - disabled, I - invalid, D - dynamic 
 3   ;;; SSTP
     chain=input action=accept protocol=tcp dst-port=443 

これだけ。。。

3)Win7クライアントの設定
デジタル証明書「server.crt」のインポート
ローカルコンピューター」にインポートしないといけないみたいです。

ファイル名を指定して実行
mmc
スナップインの追加と削除
 証明書
  コンピューターアカウント
   ローカルコンピューター

から
信頼されたルート証明機関
 証明←右クリック
     すべてのタスク→インポート
で「server.crt」を指定してインポートしてあげます。

http://www.seil.jp/support/tech/doc/function/certificate/example/client_sstp_crt-import.html

これで繋がるはずです・・・

ただ、
SSTPのネットワーク帯(192.168.2.*)

ローカルネットワーク帯(192.168.1.0/24)が違うので、
Windowsの設定で
リモートネットワークでデフォルトゲートウェイを使う
にチェックを入れないと駄目です。
別にルート追加しても良いけどさ・・・

また、それにチェックを入れると今度はインターネットに出られないので
(SSTPサーバに全部飛んでいってしまう・・・)

     ;;; default configuration
     chain=srcnat action=masquerade src-address=192.168.2.0/24
     out-interface=pppoe-out

などNAT-masquerade設定をしないと駄目です。

Routerboardのルーティングテーブルには勝手に乗るので、
Filterなので適宜分けたほうがいいのかもしれません。

「0x80072746」のエラーが出る場合は
・クライアントに証明書がローカルコンピューターに入っていない
・Common Name=Windowsの接続先に設定にする

など確認してください。

4)接続確認
PPPの状態

[admin@MikroTik] /ip pool> /ppp active print
Flags: R - radius
 #   NAME         SERVICE CALLER-ID         ADDRESS         UPTIME   ENCODING
 1   neko6        sstp    61.*.*.*      192.168.2.13    22m44s

WANからアクセスできています

SSTPサーバの状態

[admin@MikroTik] /ip pool> /interface sstp-server print detail
Flags: X - disabled, D - dynamic, R - running
0  DR name="<sstp-neko6-1>" user="neko6" mtu=1500
       client-address="61.*.*.*" uptime=24m17s encoding=""

誰がつなぎに来ているかわかります

ルートの状態

[admin@MikroTik] /ip pool> /ip route print
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,
B - blackhole, U - unreachable, P - prohibit
 #      DST-ADDRESS        PREF-SRC        GATEWAY            DISTANCE
 0 ADS  0.0.0.0/0                          210.*.*.*            1
 1 ADC  192.168.1.0/24     192.168.1.1     bridge-local              0
 2 ADC  192.168.2.1/32    192.168.2.13    <sstp-neko1>              0
 6 ADC  210.*.*.*/32  202.*.*.*  pppoe-out                 0

もっと詳細

[admin@MikroTik] /ip pool>> /ip route  print detail
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,
B - blackhole, U - unreachable, P - prohibit
 0 ADS  dst-address=0.0.0.0/0 gateway=210.*.*.*
        gateway-status=210.*.*.* reachable via  pppoe-out distance=1
        scope=30 target-scope=10

 1 ADC  dst-address=192.168.1.0/24 pref-src=192.168.1.1 gateway=bridge-local
        gateway-status=bridge-local reachable distance=0 scope=10

 2 ADC  dst-address=192.168.2.1/32 pref-src=192.168.2.13 gateway=<sstp-neko6>
        gateway-status=<sstp-neko6> reachable distance=0 scope=10

ルーティングテーブルには勝手に乗るので、
各ネットワーク帯に疎通できます。
適宜Filterなどで対応しましょう。

詳細な接続状態

[admin@MikroTik] /ip pool>> /interface sstp-server monitor <sstp-neko6-1>
          status: connected
          uptime: 29m11s
            user: neko6
       caller-id: 61.*.*.*
        encoding:
             mtu: 1500
   local-address: 192.168.2.1
  remote-address: 192.168.2.13
-- [Q quit|D dump|C-z pause]

IPなど見えます。

[tegaki]内部ルーティングなどしないと[/tegaki]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Enter code * Time limit is exhausted. Please reload CAPTCHA.

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください