実は、、
どうもこうも上手く行かなかったので
L2TP/ipsecでの接続を諦めました。。。
ということで、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]