LoginSignup
17
17

More than 5 years have passed since last update.

中国からFBやGoogle使うためのVPNサーバー

Posted at

どこかからの願い

中国でもFacebookで"いいね"したいじゃないですか~(ほんとは違う理由だけど・・)

ということでVPN & Proxyサーバーを作ることにしました。
入れるのはxl2tpd,openswan,squidでございます。
とにかくさっさと作る必要があったので、簡単な方法でいきます。

ぷらっとふぉーむ

環境はAWSで
AMIはなぜかCentosだとうまくいかなかったので(多分自分の問題・・)AmazonLinuxで
amzn-ami-hvm-2015.03.0.x86_64-gp2

前準備

iptables 止める
SELINUX 止める

この辺を入れておく

yum install make gcc gmp-devel bison flex

sysctl.confにこの辺追記してsysctl -p

net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0

いったんリブート

yum

そう。yumですよ。yum。
epelリポジトリにて

yum install --enablerepo=epel openswan xl2tpd squid

はい、入ったね

chkconfig xl2tpd on
chkconfig ipsec on
chkconfig squid on

設定

ipsecの設定

confを以下のように編集
virtual_private=**は許可するアドレスレンジなので適宜変えてあげる

# cat /etc/ipsec.conf
version 2.0

config setup
    dumpdir=/var/run/pluto
    nat_traversal=yes
    virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v6:fd00::/8,%v6:fe80::/10
    protostack=netkey
include /etc/ipsec.d/*.conf

これはiOS用に必要な設定となる
dpddelay=10
dpdtimeout=20
dpdaction=clear

leftにはサーバーのPrivateIPアドレスを入れる
leftnexthopにはこのサーバーのデフォゲを入れる

# cat /etc/ipsec.d/l2tp-ipsec.conf
conn L2TP-PSK-NAT
    rightsubnet=vhost:%priv
    dpddelay=10
    dpdtimeout=20
    dpdaction=clear
    also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
        authby=secret
        pfs=no
        auto=add
        keyingtries=3
        ikelifetime=8h
        keylife=1h
        type=transport
        left=このサーバーのプライベートIP
        leftnexthop=デフォゲ
        leftprotoport=17/1701
        right=%any
        rightprotoport=17/%any

事前共有鍵の設定

例えばfoobar
実機はもっと複雑なのにしよう!

# cat /etc/ipsec.secrets
: PSK   "foobar"

xl2tpdの設定

ip rangeがVPN接続後にクライアントに振られるIPアドレスレンジ
local ipがVPN接続時のサーバー側のIPアドレス

# cat /etc/xl2tpd/xl2tpd.conf
[global]
auth file = /etc/ppp/chap-secrets
[lns default]
ip range = 192.168.1.128-192.168.1.254
local ip = 192.168.1.99
require chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

xl2tpdのオプション設定

optionでVPN接続名(例えばfoovpn)やVPN接続後のDNSやログファイルを指定する。
このファイルに書かなくてもいいけど、、とにかくファイルが散ってるなぁ
ログファイルはtouchしておく
touch /var/log/xl2tpd.log

[root@z-prd-vpnproxy01 squid]# cat /etc/ppp/options.xl2tpd
name foovpn
ipcp-accept-local
ipcp-accept-remote
ms-dns  8.8.8.8
auth
crtscts
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
lock
proxyarp
connect-delay 5000
logfile /var/log/xl2tpd.log

接続ユーザーは"foo"
接続VPN名は"foovpn"
パスワードは"bar"
接続元IPアドレスは限定せず*

# cat /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
"foo" "foovpn" "bar" *

squid

ほぼデフォ
変えたところはここだけ

# cat /etc/squid/squid.conf
#http_port 3128                                             
http_port 0.0.0.0:8080

セキュリティグループ

こちらを解放

500:udp
4500:udp
1701:udp

さあ起動

停止と起動

/etc/init.d/squid stop
/etc/init.d/xl2tpd stop
/etc/init.d/ipsec stop
/etc/init.d/squid start
/etc/init.d/xl2tpd start
/etc/init.d/ipsec start

確認

ipsec確認
以下コマンドでfailedとかあったら設定見直そう

# ipsec verify
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path                                 [OK]
Linux Openswan U2.6.37/K3.14.35-28.38.amzn1.x86_64 (netkey)
Checking for IPsec support in kernel                            [OK]
 SAref kernel support                                           [N/A]
 NETKEY:  Testing XFRM related proc values                      [OK]
        [OK]
        [OK]
Checking that pluto is running                                  [OK]
 Pluto listening for IKE on udp 500                             [OK]
 Pluto listening for NAT-T on udp 4500                          [OK]
Checking for 'ip' command                                       [OK]
Checking /bin/sh is not /bin/dash                               [OK]
Checking for 'iptables' command                                 [OK]
Opportunistic Encryption Support                                [DISABLED]

接続

iPhoneから

iPhoneからは超絶簡単!

iphoneの設定 -> 一般 -> VPN -> "VPN構成を追加"を押す。

以下の画面になるので、必要な値を入力します。
説明にはVPN名:foovpn
サーバーには:VPNサーバーのグローバルIPアドレス
アカウント:foo
パスワード:bar

20150729034856.jpg

プロキシには"手動"を選んでください。
必要な情報を入れます。
サーバーにはVPN貼ったあとのIPアドレス:192.168.1.99
ポートはsquidで設定したポート:8080
20150730055358.jpg

あとはVPN接続すればOKです。
pingも飛びました。ブラウジングもOK

20150730060240.jpg

Windowsはやっかい。。

VPN接続開始時に"809サーバー応答なし"エラー発生。。

無題.png

ぶっちゃけこちらのサイトに助けて頂きました。ありがたや~
http://reffi.jp/archives/308

レジストリを変える
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent の
AssumeUDPEncapsulationContextOnSendRule を
"2"

プロキシ設定をVPN単位に行うことでOK!

あとは良好良好^^
ちゃんちゃん

17
17
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
17