【vps】Saases VPSにVPN接続してみた

サーバ構築pppd,pptpd,saases,tar,vpn,VPS

ここで作業するのは、VPSに直接VPN接続する事で、余計なサーバを公開せずVPN一本化するためです。

ですので、VPS経由でインターネット接続を行う訳でなく、単にLAN内稼動です。デフォルトゲートウェイはそのまま。

なにげに時間が掛かりました。


余計な事をしないで、デフォから細かく設定していくべきでした。が、とても勉強になった。悩みまくったので、備忘用メモエントリーです。全てメモってないので抜けがあるかもしれない。

Saases/Osukini LT(Ram:512MB)/CentOS 32bit

まず、PPTPDサーバが必要です。CentOSのyumでは見つからなかったので、ソースをダウンロードします。

tar.gzから直接makeインストールで試したのですが、設定やデーモン周辺も全部自分で登録する必要がありました。

ですので、標準作法に従った方が後々便利でしょうし、CentOSに合わせRPM化してから導入します。

そのままRPMパッケージ化したいところですが、このままでは問題がありました。VPN接続しようとすると、どうしてもエラーです。ログを見ると、pppdとpptpdのバージョンが合致していないためのようです。

pptpd.specを開いて、バージョンの部分を書き換えた後、tar -cvzf pptpd-1.3.4と丸ごと再度tar化します(2.4.3を、2.4.4に書き換えます)

ちなみ、これらの作業は、/usr/src/redhat/SOURCESの中で行った方が作法的なのかもしれない。

pptpd/spec(line 57)
%build
%configure
        %{!?_without_libwrap:–with-libwrap}
        %{?_without_libwrap:–without-libwrap}
        %{!?_with_bsdppp:–without-bsdppp}         %{?_with_bsdppp:–with-bsdppp}         %{!?_with_slirp:–without-slirp}
        %{?_with_slirp:–with-slirp}
        %{!?_with_ipalloc:–without-pppd-ip-alloc}
        %{?_with_ipalloc:–with-pppd-ip-alloc}
        %{!?_without_bcrelay:–with-bcrelay}
        %{?_without_bcrelay:–without-bcrelay}
(echo '#undef VERSION’; echo '#define VERSION "2.4.4"’) >> plugins/patchlevel.h ●ここ
%{__make} CFLAGS=’-fno-builtin -fPIC -DSBINDIR="%{_sbindir}" %{optflags}’

%install

rpmbuilder -ta *.tar.gz (64bit向け)

で自動的に作成してくれます。初めて利用しましたが、とっても便利。

ここで作成されたものは、/usr/src/redhat/RPMS/i386に出来てます(32bitの場合)
早速、rpm -ihv *.rpmを実行しインストールします。

以下の設定ファイルが対象になります。(ちょっとだけ)書き換えます。

/etc/pptpd.conf
/etc/ppp/options.pptpd
/etc/ppp/chap-secrets
/etc/sysconfig/iptables

/etc/pptpd.conf
logwtmpをコメントアウトします。どうも、これが原因で起動に失敗してしまうためです。
connections接続数です。デフォでは100です。自分はこれを1にしてたのですが、これが問題でした。
なぜか、クライアントにIPアドレスが振られないという問題が発生してました。若干の余裕が必要なようです。

localip/remoteip
VPNネットワークのIPアドレスの範囲を設定します。remoteipは、範囲を指定します。
ここで、適当に振っても構わないのですが、クライアントLANと同じセグメントにしてしまうと、デフォゲートウェイがVPN側に設定されてしまいますので注意です。

/etc/ppp/options.pptpd
こちらはほとんどデフォです。色々やったんですが余計な事をすると接続できなくなってしまいます。
最後に、mtu 1250と書いてます。1500でもいいんでしょうけど。
パケット長なのですが、これは環境に合わせて調整が必要です。しかも、これは重要な値で不安定なようだと調整が必要のようです。詳しい仕組みは分かりませんが、不適切なパケット長により、取りこぼしが発生する事があるよう。

/etc/ppp/chap-secrets
こちらは、接続時のIDとパスワードです。IPアドレスで制限を掛けられますが、これを記述すると駄目でした。
パスワードは出来るだけ複雑なものがいいでしょう。自分は20文字にしてます。

ここまで来たら、iptablesでフィルターを変更します。

-A INPUT -p tcp -m tcp –dport 1723 -j ACCEPT
-A INPUT -p gre -j ACCEPT
-A INPUT -i ppp0 -j ACCEPT
-A INPUT -i ppp1 -j ACCEPT
-A INPUT -i ppp2 -j ACCEPT
-A INPUT -i ppp3 -j ACCEPT
-A INPUT -i ppp4 -j ACCEPT

こんな感じで追加したら、/sbin/service iptables restartで更新します。

/sbin/service pptpd restartでPPTPDを起動します。
最後に、サーバ起動時に上がるようにしておきます。

/sbin/chkconfig –level 3 pptpd on
/sbin/chkconfig –list | grep pptpd で確認。

Windowsのネットワークで、VPN接続の登録を行います。別途インストールは不要です。

VPNの種類は、PPTPへ変更します。
TCP/IPv4のプロパティから、IPアドレスは自動的に取得、DNSは手入力でクライアントのDNSアドレスを入力します。
詳細設定から、リモートネットワークでデフォルトゲートウェイを使うをOFFにします。

これで、VPN接続時に、デフォルトゲートウェイの書き換えの影響が無くなります。DNSはどうしても書き換わってしまうので、手入力してます。あとは、勝手にだまって接続して欲しいので、余計なウィンドウが出ないようにしてます。

あとは接続できます。


接続したら、コマンドプロンプトを起動し、route printやipconfigで、デフォルトゲートウェイや配布されたIPアドレスを確認します。

自分の環境では、安定して接続されてます。GigabitのデスクトップPC、無線にてノートPCからでもOKです。

/etc/pptpd.confのlocalipに設定したアドレスが、VPSになりますので、ping確認や、webサーバが上がってれば、直接アクセスする事ができます。


2日程接続しっぱなしですが、切断されていません。これでOKでしょう。
sambaサーバを上げればWindowsからはとても便利になります。ただ遅いですけど。

最後に、WindowsからVPN(ダイヤルアップ)を利用する際の便利な設定方法を、別記事にしています(電源ON&サスペンドからの自動接続)これは、めっちゃ便利ですので、おすすめです。

このブログの右上の検索にて、VPNを入力してもらえれば2つほど該当する記事があると思います(パーマリンクする気力がないもので・・・すいません)

サーバ構築pppd,pptpd,saases,tar,vpn,VPS

Posted by nabe