記事一覧

メモ書き

設定のエクスポート方法。
設定ファイルじゃなくて、設定コマンド形式で。
/opt/vyatta/sbin/vyatta-config-gen-sets.pl

ネットワーク構成 その2

*OpenVPNのネットワーク
OpenVPNによる仮想ネットワーク上での構成は、こんな感じになります。
(ウチの脳内でこうであろうと思っているネットワーク)

             +--=---+
             |Server|
             |(Hub) |
             +--+---+
                |10.8.0.1
    +----=---=--+----=---=--+
    |0.x        |0.x        |0.x
+---+----+  +---+----+  +---+----+
|Client  |  |Client  |  |Client  |
|(vyatta)|  |(Remote)|  |(Remote)|
+---+----+  +----=---+  +----=---+
    |192.168.241.x
    +----=----=--+
    |241.x       |241.x
+---+----+  +----+---+
|開発環境|  |開発環境|
+--=--=--+  +--=--=--+

10.8.0.xのセグメント内に「192.168.241.xセグメントへの出口がある」というのを教え込んであるので、
このセグメントに接続すると241セグメント宛パケットは10.8.0.x内に入ります。
Client(vyatta)はこのパケットを受け取ると、自分の192.168.241.xへそれを流します。
Client(vyatta)の10.8.0.xから192.168.241.x間にはFWがあり、ポート番号でフィルタリングしています。
開発環境を使うにあたって必要なポートは3389番(Remote Desktop Protocolの標準?)のみにしています。
開発環境からClient(Remote)は見ることが出来ません。
通信方向(?)としては、OpenVPNからClient(vyatta)への一方通行です(応答はします)。
ファイル転送などをしたい場合、別途オンライン上にファイル転送可能なサーバーを立てなければなりません。
OpenVPN経由では、ファイル転送は認めないことになっています。
241セグメントからは、141セグメント上にある各種ネットワーク設備は使えます。

(注意)
リモートデスクトップはドライブを接続することでファイル転送が出来る機能があるので、
グループポリシー等を調整して拒否するようにしてください。
141セグメント上のネットワーク設備には自由にアクセスできるので、セキュリティーホールになります。
同様にクリップボード共有なども、セキュリティ状況により拒否するようにしてください。

リモートデスクトップによりデスクトップの画面操作のみが出来る というのが理想です。

*PPTPのネットワーク
PPTPによる仮想ネットワーク上での構成は、こんな感じになります。
(ウチの脳内でこうであろうと思っているネットワーク)

+----=---+  +----=---+  +----=---+
|Client  |  |Client  |  |Client  |
|(Remote)|  |(Remote)|  |(Remote)|
+---+----+  +---+----+  +---+----+
    |241.x      |241.x      |241.x
    +----=---=--+----=---=--+
                |
           +----+---+
           |Server  |
           |(vyatta)|
           +----+---+
                |
    +----=----=-+
    |241.x      |241.x
+---+----+  +---+----+
|開発環境|  |開発環境|
+--=--=--+  +--=--=--+

信頼できるネットワーク内に存在しているので、FW等は設定していません。
Windows標準のPPTP接続を使用します。
開発環境の操作は例によってRemote Desktopにて行います。
241セグメントからは、141セグメント上にある各種ネットワーク設備は使えます。

OpenVPN その2

vyattaでの作業です。
何らかの方法でvyatta.alleycat.co.jp.tarをアップロードしておいてください。

どこかにアップロードしてwgetしてくるなり、FileZillaやEmFTPでアップロードするなり。

コンソールでconfigureで編集モードになる前に、openvpnのファイルを展開しておきます。
mkdir openvpn
mv vyatta.alleycat.co.jp.tar openvpn/
cd openvpn
tar xzf vyatta.alleycat.co.jp.tar

次いで、openvpnクライアントとして設定をします。
configure
set interfaces openvpn vtun10
set interfaces openvpn vtun10 mode client
set interfaces openvpn vtun10 openvpn-option "--cipher aes-128-cbc"
set interfaces openvpn vtun10 protocol tcp-active
set interfaces openvpn vtun10 remote-host alleycat.co.jp
set interfaces openvpn vtun10 remote-port 11194
set interfaces openvpn vtun10 tls
set interfaces openvpn vtun10 tls ca-cert-file /home/vyatta/openvpn/ca.crt
set interfaces openvpn vtun10 tls cert-file /home/vyatta/openvpn/vyatta.alleycat.co.jp.crt
set interfaces openvpn vtun10 tls key-file /home/vyatta/openvpn/vyatta.alleycat.co.jp.key
commit
save

次いで、OpenVPN上から流れてくるパケットを制限します。
OpenVPN経由からは、リモートデスクトップ以外の接続は拒否する前提です。

set firewall name FROM-EXTERNAL description "Block Unwanted OpenVPN Traffic"

set firewall name FROM-EXTERNAL rule 10 description "Accept Established-Related Connections"
set firewall name FROM-EXTERNAL rule 10 action accept
set firewall name FROM-EXTERNAL rule 10 state established enable
set firewall name FROM-EXTERNAL rule 10 state related enable
set firewall name FROM-EXTERNAL rule 10 log disable

set firewall name FROM-EXTERNAL rule 20 description "Remote Desktop Access"
set firewall name FROM-EXTERNAL rule 20 action accept
set firewall name FROM-EXTERNAL rule 20 protocol tcp
set firewall name FROM-EXTERNAL rule 20 source address 10.8.0.1/24
set firewall name FROM-EXTERNAL rule 20 destination port 3389
set firewall name FROM-EXTERNAL rule 20 log disable
commit

set firewall name TO-ROUTER description "Traffic Destined for Router Itself"
set firewall name TO-ROUTER rule 10 description "Accept Established-Related Connections"
set firewall name TO-ROUTER rule 10 action accept
set firewall name TO-ROUTER rule 10 state established enable
set firewall name TO-ROUTER rule 10 state related enable
set firewall name TO-ROUTER rule 10 log disable

set firewall name TO-ROUTER rule 20 description "Accept ICMP Unreachable"
set firewall name TO-ROUTER rule 20 action accept
set firewall name TO-ROUTER rule 20 protocol icmp
set firewall name TO-ROUTER rule 20 icmp type 3
set firewall name TO-ROUTER rule 20 log disable
set firewall name TO-ROUTER rule 22 description "Accept ICMP Echo Request"
set firewall name TO-ROUTER rule 22 action accept
set firewall name TO-ROUTER rule 22 protocol icmp
set firewall name TO-ROUTER rule 22 icmp type 8
set firewall name TO-ROUTER rule 22 log disable
set firewall name TO-ROUTER rule 24 description "Accept ICMP Time-Exceeded"
set firewall name TO-ROUTER rule 24 action accept
set firewall name TO-ROUTER rule 24 protocol icmp
set firewall name TO-ROUTER rule 24 icmp type 11
set firewall name TO-ROUTER rule 24 log disable

#普通ルータへのOpenVPN経由SSHログインは認めないので、
#このブロックは無視してよいです。
set firewall name TO-ROUTER rule 50 description "SSH Access"
set firewall name TO-ROUTER rule 50 action accept
set firewall name TO-ROUTER rule 50 protocol tcp
set firewall name TO-ROUTER rule 50 source address 10.8.0.1/24
set firewall name TO-ROUTER rule 50 destination port ssh
set firewall name TO-ROUTER rule 50 log disable

#普通ルータへのOpenVPN経由HTTPSログインは認めないので、
#このブロックは無視してよいです。
set firewall name TO-ROUTER rule 52 description "HTTPS Access"
set firewall name TO-ROUTER rule 52 action accept
set firewall name TO-ROUTER rule 52 protocol tcp
set firewall name TO-ROUTER rule 52 source address 10.8.0.1/24
set firewall name TO-ROUTER rule 52 destination port https
set firewall name TO-ROUTER rule 52 log disable

commit
save

set interfaces openvpn vtun10 firewall in name FROM-EXTERNAL
set interfaces openvpn vtun10 firewall local name TO-ROUTER
commit
save

こんな感じかな?
これでまだテストしてないので、コマンド直すかも。

OpenVPN その1

openVPNサーバーを立てます。

施設AのUbuntuに立て、esxi上のvyattaからアクセスさせます。

Ubuntuサーバーでの作業です。
詳細は(面倒くさいので)省きます。
sudo aptitude install openvpn
cp -pr /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
vi vars

一番下の
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
を書き換え。
export KEY_COUNTRY="JP"
export KEY_PROVINCE="Tokyo"
export KEY_CITY="Setagaya"
export KEY_ORG="alleycat.co.jp"
export KEY_EMAIL="aaa@bbb.ccc"

mkdir keys
source ./vars
./clean-all

基本的に全部デフォルトで答えます。
./build-ca

基本的に全部デフォルトで答えます。
./build-key-server server

cp keys/ca.crt ../
cp keys/server.crt ../
cp keys/server.key ../

./build-dh
cp keys/dh1024.pem ../

ダミークライアントキーを作成
./build-key dummy
ダミークライアントキーを使用禁止指定
./revoke-full dummy
ダミークライアントキーの使用禁止情報を適用
cp keys/crl.pem ../

使用するクライアントキーの作成:パスあり
./build-key-pass cirno.alleycat.co.jp
./build-key-pass kanna.alleycat.co.jp

使用するクライアントキーの作成:パスなし
./build-key vyatta.alleycat.co.jp
>パスありにしたいけれどもvyattaでの設定方法が・・・。
>たぶん、openvpn-optionで指定するのだろうけれども。

*cirno 施設AのクライアントWindowsPC
*kanna 施設AのクライアントWindowsPC
*vyatta vyattaルータ

生成されたファイルのうち、
ca.crt
*.key
*.crt
が必要になります。
cd keys
tar czf vyatta.alleycat.co.jp.tar ca.crt vyatta.alleycat.co.jp.key vyatta.alleycat.co.jp.crt
tar czf kanna.alleycat.co.jp.tar ca.crt kanna.alleycat.co.jp.key kanna.alleycat.co.jp.crt
tar czf cirno.alleycat.co.jp.tar ca.crt cirno.alleycat.co.jp.key cirno.alleycat.co.jp.crt

vyatta.alleycat.co.jp.tarを施設Bへ持ち出し、何らかの方法でvyattaアカウントのホームの下に設置します。
kannaとcirnoは施設AのPCへ持ち込みます。

openvpnサーバーの設定ファイルはこんな感じになっています。
cd /etc/openvpn
grep -v -e "^[ \t]*[#;]" -e "^$" server.conf
port 11194
proto tcp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.241.0 255.255.255.0"
client-config-dir ccd
route 192.168.241.0 255.255.255.0
client-to-client
keepalive 10 120
cipher AES-128-CBC # AES
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log
log-append /var/log/openvpn.log
verb 3
management localhost 7505
crl-verify crl.pem

よくわからない解説:
port:デフォルトポート番号は使用したくないという、なんとなくな考えです。
proto:施設Aのルーター(もしかするとISP)が、なんでかudpを上手く通してくれなかった。
push:「openVPNネットワーク上に、192.168.241.0/24への出口があります」と通知
route:同上
client-to-client:openVPNのクライアント同士は通信できます
management:telnetコマンドで、接続状況を確認できます

ネットワーク構成

一日あたり一記事としてるので、未来日記になってまいりました。
(記入日23日)
書き溜めしとかないと、忘れるんで。

先に書いておきます。
注意:
 この構成を真似て何か問題が発生しても、当方は責任は取れません。
 あくまでも思考実験のひとつとして捕らえていただけると幸いです。
 この構成を真似る場合、必ずセキュリティの妥当性などの検証を行ってください。

ネットワーク構成図です。
施設は二つに分かれています。

施設A:
 開発者の居る施設です。
 施設Bの設備をリモートデスクトップで使用します。
 リモートデスクトップを動かすためのクライアントのみあります。

施設B:
 開発設備(仮想環境)のある施設です。
 施設Aのネットワークは見えません。

施設Bから施設Aへのファイル転送などは許可しません。
施設Aから施設Bへのファイル転送などは許可しません。
ファイルはすべて施設Bの開発設備(仮想環境)でリモートデスクトップにより閲覧します。

(施設A)

 --=----=--+--=----=----=--=---
      | ISP(非固定IP)
    +---+----+
    |ルーター|
    +---+----+
      | 192.168.120.x
 ----+--=--+--=--=--+--
   |       |120.108
   |    +--=--+--=---+
   |    |クライアント+--=--OpenVPN--=-->
   |    +--=----=----+
   |120.112
 +---+----+
 |サーバー+<--=--OpenVPN--=--
 +--=--=--+

*:フレッツ光マンションタイプ契約です。
  (配電盤から電話線で各家庭へ、のタイプ)
*:DDNSを使用しています。
*:ルータ設定は変更できます。
*:OpenVPNからはリモートデスクトップのみできます。

(施設B)

 --=----=--+--=----=----=--=---
      | ISP(固定IP)
    +---+----+
    |ルーター|
    +---+----+
      | 192.168.230.99
 --=----=--+--=--=---DMZ
      | 192.168.230.100
    +---+----+
    |ルーター|
    +---+----+
      | 192.168.141.111
 ----+--=--+--=---+--MZ
   |      | 141.147
   |   +--=--+--=---+
   |   |クライアント+--=--PPTP--=-->
   |   +--=----=----+
   | 141.140
   | +--=--=--+
   +--+ESXi|
   | +--=--=--+
 ----+--=---仮想ネットワーク1
   | 141.141(Static)
 +---+--+
 |vyatta+--=--OpenVPN--=-->
 |******+<--=--PPTP--=--
 +---+--+
   | 241.x(DHCP)
 ----+--=----=----+--仮想ネットワーク2
   |      |
 +---+----+ +----+---+
 |開発環境| |開発環境|
 +--=--=--+ +--=--=--+

*:ISPから141セグメントは見えません。
*:230セグメントから141セグメントは見せません。
*:141セグメントから241セグメントは見せません。
*:ルータ設定は変更できません。
*:141セグメントからISPへは、すべてのポートが通ります。

このブログツール、ハイフン5つつなげるとコマンド扱いなのねぇ。
なので、間にイコールが挿入されてます。

vyattaでpptp

このままだと、141セグメントから241セグメントへはアクセスできません。
なので、241セグメントにアクセスしたい141セグメントのPCを、241セグメントに参加させます。

PPTPサーバーを立て、ログインしたPCに241セグメントに参加できるようにします。

set vpn pptp remote-access authentication mode local
set vpn pptp remote-access authentication local-users username alleycat password pwd20100321!
set vpn pptp remote-access client-ip-pool start 192.168.241.50
set vpn pptp remote-access client-ip-pool stop 192.168.241.99
set vpn pptp remote-access dns-servers server-1 192.168.141.1

#これ必要なのかなぁ・・・?
#無くても動くっぽいので、コメント
#set vpn pptp remote-access outside-address 192.168.141.241

ココまでの説明:
authentication mode local : よく分からないや
local-users username alleycat password pwd20100321!
 : VPN接続をする際のユーザアカウントとパスワードです。
client-ip-pool start : VPN接続した際に割り振られるIP開始
client-ip-pool stop : VPN接続した際に割り振られるIP末尾
dns-servers server-1 : DNSサーバ1
outside-address 192.168.141.23 : 接続元?(よく分からない)

参加するWindowsクライアント機に設定をします。
(WindowsXPでの設定)

スタートメニュー
 +設定
  +ネットワーク接続
   +新しい接続ウイザード

・新しい接続ウイザード
次へ
 ・ネットワーク接続の種類
 ・職場のネットワークへ接続する
 次へ
  ・職場でネットワークにどう接続しますか?
  ・仮想プライベートネットワーク接続
  次へ
   ・接続名
   ・『vyatta』
   次へ
    ・パブリックネットワーク
    ・最初の接続にダイヤルしない
    次へ
     ・VPNサーバーの選択
     ・192.168.1.141.241
     次へ
      完了

ファイル 11-1.png

・vyattaへ接続
・ユーザ名『alleycat』
・パスワード『pwd20100321!』

ファイル 11-2.png

接続
 接続中云々

241のセグメントに参加している状態で、作業は行うことになります。
VMware vSphere Clientで開発環境を立ち上げ、リモートデスクトップ接続でマシンを操作します。
ファイルやり取りはファイル共有によります。

自分が手元で操作するクライアント機自体がかなり性能が低くても、
esxiサーバーで動いている開発環境へは殆ど影響がなく、
高い処理スペックを要求する操作もかなりサクサク動かすことが出来ます。

コレも一種のシンクライアント・・なのかな?

リモートからvyatta設定

sshで外部からSSHでログイン出来るように設定します。
人によってはこっちのほうが良いという人も多いと思うので。
sshは要らないという人は以下は入力しなくても良いです。

configure
set service ssh
commit
save
exit

ウェブブラウザで外部から設定を出来るようにします。
ウェブブラウザで設定は要らないという人は以下は入力しなくても良いです。

configure
set service https
commit
save
exit

vyatta その4

起動が完了したので、設定を続けます。
ログインのユーザID/パスは vyatta/vyatta です。

コンソールより、以下を入力します。
注意:長いコマンドでもset が必ず先頭です。

configure
set system host-name vyatta.alleycat.co.jp
set system domain-name alleycat.co.jp
commit

set interfaces ethernet eth0 address 192.168.141.241/24
set system name-server 192.168.141.1
set system gateway-address 192.168.141.1
commit

この設定で、このvyatta機は外が見れるようになります。
IPアドレスは、自分の環境を元にしてください。
ping を打ち込んでみてください。
応答が無かったりする場合、どこか間違えています。

ping google.co.jp

上手く言ったらコレを入力しておきます。
save

ココまでの説明:
configure : 設定の開始
set system host-name : ホスト名設定
set system domain-name : ドメイン設定
(どっかと重複しなければ何でも良いです)
set interfaces ethernet eth0 address
 : IPアドレスとネットマスク
set system name-server : DNSサーバー
set system gateway-address : ゲートウェイサーバー
commit : 設定を適用
save : 設定を保存して、再起動しても設定が失われないように

外部に繋がったら、設定モードを出てパッケージを新しくします。

exit
su -
[パスワード]
aptitude update
aptitude dist-upgrade

再起動したほうが良いかも

reboot

再起動してきたら続き

eth1(閉塞ネットワーク)側を設定します。
configure
set interfaces ethernet eth1 address 192.168.241.1/24
commit

eth1側にDHCPをセットします。
set service dhcp-server shared-network-name ETH1_POOL subnet 192.168.241.0/24 start 192.168.241.100 stop 192.168.241.199
set service dhcp-server shared-network-name ETH1_POOL subnet 192.168.241.0/24 default-router 192.168.241.1
set service dhcp-server shared-network-name ETH1_POOL subnet 192.168.241.0/24 dns-server 192.168.141.1
commit

NATを設定します。
set service nat rule 241 source address 192.168.241.0/24
set service nat rule 241 outbound-interface eth0
set service nat rule 241 type masquerade
commit

eth1側にDHCP接続のマシンを起動してみてください。
DHCP経由でIPアドレスが取得でき、141セグメントやインターネットを見ることが出来れば成功です。

コレを忘れずに!
save

設定が終わったら設定モードを抜けます。
exit

ココまでの説明:
set service dhcp-s・・・start stop : DHCPアドレスで付与するIP群
set service dhcp-s・・・default-router : DHCPClientに知らせるDefaultGateway
set service dhcp-s・・・dns-server : DHCPClientに知らせるDNSサーバー
set service nat rule 241 source address : NAT変換元
set service nat rule 241 outbound-interface eth0 : 変換先
set service nat rule 241 type masquerade : マスカレード設定

コレでVirtualPCやVMWearPlayer見たいなNAT設定環境が整いました。

vyatta その3

vyatta仮想マシンをスタートします。
vyattaRouter を選択
 +『はじめに』タブ
  +基本タスク
   +仮想マシンのパワーオン

といっても、まだ中身空っぽです。

画面上のほうに、CDロムにスパナが合わさったアイコンがあるのでクリックします。

アイコン
 +CD/DVDドライブ1
  +ローカルディスクのISOイメージに接続
   +ファイルを開くダイアログ

予め落としてある
Vyatta Community Edition 5 (VC5) iso
を選択して『開く』

仮想マシンを再起動してCDを読ませます。

イベントリ
 +仮想マシン
  +電源
   +リセット

『コンソール』タブを選択します。
コンソールを操作するために、コンソールの真ん中辺りをクリックします。

注意:フォーカスをコンソールから出したい場合、『Ctrlキー+Altキー』を押します。

vyattaが起動してきます。
『vyatta login:』と出るまで放っておきます。
(5分くらい?)

ユーザID/パスは vyatta/vyatta です。
install-system
とコマンドを打ち、インストーラを立ち上げます。
色々聞かれますが、基本的にDefaultで良いと思います。
メッセージを確認しながら、Enterを押していきます。

This will destroy all data on /dev/sda
Continue? (Yes/No)[No]:
の問い合わせはYesと入力します。
データ全部消して良い?という問い合わせです。

Enter root password:
Retype root password:
には、設定したいパスワードを入れてください。

Done!
vyatta@vyatta:~$
と表示されたら、インストール完了です。

ファイル 8-1.png
ファイル 8-2.png
ファイル 8-3.png
ファイル 8-4.png

CDを取り出します。

画面上のほうに、CDロムにスパナが合わさったアイコンがあるのでクリックします。

アイコン
 +CD/DVDドライブ1
  +vyatta-livecd-vc5.0.2.isoから切断します。

コンソールに再び入り、再起動させます。
Altキー + Ctrlキー + Insertキーを同時に押します。

再移動が始まり、しばらく見ていると
vyatta login:
で止まります。

仮想マシンでの起動が完了しました。
これから設定をしていきます。

vyatta その2

以下にアクセスします。
http://www.vyatta.com/
Downloadを選択します。
Vyatta Community Edition 5 (VC5) iso
を選択し落としてきます。

閉じたネットワークを作ります。
ホーム
 +イベントリ
  +『構成』タブ
   +ネットワーク
    +ネットワークの追加

ファイル 7-1.png
ファイル 7-2.png
ファイル 7-3.png

ネットワーク追加ウイザードが開きます。
・仮想マシン
次へ
 ・仮想スイッチの作成
 次へ
  ・ネットワークラベル『vyattaNetwork』
  次へ
   終了

ファイル 7-4.png

画面のネットワークの表示に仮想スイッチが一つ追加されました。
物理アダプタに繋がっていない、閉じたネットワークです。

ファイル 7-5.png

仮想マシンを作成します。
『ファイル』メニュー
 +新規
  +仮想マシン
仮想マシン作成画面が開きます。

・標準
次へ
 ・名前:vyattaRouter
 次へ
  ・設置するストレージ選択
  次へ
   ・ゲストOS選択Linuxとその他2.6x(32bit)
   (後から変更できる)
   次へ
    ・容量設定
    ・2G
    ・シンプロビジョニング
    次へ
     ・仮想マシン設定を編集
     続行

仮想マシンのプロパティ
・メモリ 256M
・CPU 1~2
・新規NIC ネットワークラベルがVM Networkになってるのを確認します。
 (一つは物理アダプタ側に繋がってる必要があります)

この仮想マシンにNICをもう一枚追加します。
プロパティ画面の上の方の『追加』ボタン
 ・イーサネットアダプタ
 次へ
  ・ネットワークラベルを『vyattaNetwork』にする
  次へ
   終了

二つ目のNICが一覧に増えました。

OKボタンを押します。

つづく・・・

ページ移動