顯示具有 l2tp 標籤的文章。 顯示所有文章
顯示具有 l2tp 標籤的文章。 顯示所有文章

2014年2月11日 星期二

[Linux] VPN L2TP client mode @ Ubuntu 12.04 Desktop

持續惡搞網路中,這次換把一台 Ubuntu desktop 當成 VPN Client 去連線。

$ sudo apt-add-repository ppa:werner-jaeger/ppa-werner-vpn
$ sudo apt-get update
$ sudo apt-get install l2tp-ipsec-vpn

註:若採用 Ubuntu 12.04 內建的 apt-get source list 安裝 l2tp-ipsec-vpn 後,卻連不上 :P

接著到左上角的 Dash Home 搜尋 VPN 來用:

vpn_client_setting_0

接著,就可以依序填寫資料:

vpn_client_setting_1

vpn_client_setting_2

填寫完記得按 "OK" 與 "Close" 後,再去右上角的 L2TP Ipsec VPN Applet 去點選連線囉!

如果,進行的不順利,可以試著跑去 VPN Server 上,查看 logs ,而 logs 預設沒有啟動,要去修改:

$ sudo vim /etc/ipsec.conf
config setup
  # ...
  # Use this to log to a file, or disable logging on embedded systems (like openwrt)
  plutostderrlog=/var/log/ipsec.log

$ sudo touch /var/log/ipsec.log
$ sudo service ipsec restart
ipsec_setup: Stopping Openswan IPsec...
ipsec_setup: Starting Openswan IPsec 2.6.37...
$ sudo tail -f /var/log/ipsec.log
added connection description "L2TP-PSK-noNAT"
listening for IKE messages
adding interface eth0/eth0 x.x.x.x:500
adding interface eth0/eth0 x.x.x.x:4500
adding interface lo/lo 127.0.0.1:500
adding interface lo/lo 127.0.0.1:4500
loading secrets from "/etc/ipsec.secrets"
loading secrets from "/var/lib/openswan/ipsec.secrets.inc"
...


如此一來,有人連線就會噴訊息囉。

2014年2月7日 星期五

[Linux] VPN (L2TP) 與使用 iptable 設定 Port forward @ Ubuntu 12.04

這樣的標題不是很恰當,但我暫時想不到好的方式。

使用情境:

  • 有 A, B 兩檯在不同國家的機器
  • 對 A 機器而言,無法直接連到 B 機器之國家內的服務
  • 解法透過 B 機器架設 VPN 服務,讓 A 透過 VPN 進入到 B 機器所在的國家網路
  • 這兩個國家的網路直連很慢,恰好 C 機器所在的國家,對這兩國連線都不錯

很繞口,但事實就擺在眼前 XD 這時候在 B 機器已經架好 VPN 服務了,從 A 也能夠連到,但是速度表現不佳,所以想要繞道從 C 機器所在的國家進去。

這時 C 機器就只需做 port forwarding 來處理即可,共有 UDP 500, 1701, 450 port 要處理:

$ iptables -A PREROUTING -t nat -i eth0 -p udp --dport 500 -j DNAT --to B_SERVER_IP:500
$ iptables -A PREROUTING -t nat -i eth0 -p udp --dport 4500 -j DNAT --to B_SERVER_IP:4500
$ iptables -A PREROUTING -t nat -i eth0 -p udp --dport 1701 -j DNAT --to B_SERVER_IP:1701
$ iptables -A FORWARD -p udp -d B_SERVER_IP --dport 500 -j ACCEPT
$ iptables -A FORWARD -p udp -d B_SERVER_IP --dport 4500 -j ACCEPT
$ iptables -A FORWARD -p udp -d B_SERVER_IP --dport 1701 -j ACCEPT

2014年1月28日 星期二

[Linux] 架設 VPN Server (PPTP/IPSEC/L2TP) @ Ubuntu 12.04

研究上需要架設一台 VPN,於是架了 PPTP 後,也順便把 IPSEC、L2TP 補齊。流程:

安裝需要的軟體:

$ sudo apt-get install pptpd openswan xl2tpd ppp

PPTP:

$ sudo vim /etc/pptpd.conf
# (Recommended)
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245

$ sudo vim /etc/ppp/pptpd-options
# …
ms-dns 8.8.8.8
# …
logfile /var/log/pptpd.log

$ sudo touch /var/log/pptpd.log

$ sudo vim /etc/ppp/chap-secrets
# PPTP
username pptpd password *
# L2TP
username l2tpd password *

其中 username, password 都是明碼


IPSEC/L2TP:

$ sudo su
$ echo "net.ipv4.ip_forward = 1" | tee -a /etc/sysctl.conf
$ echo "net.ipv4.conf.all.accept_redirects = 0" | tee -a /etc/sysctl.conf
$ echo "net.ipv4.conf.all.send_redirects = 0" | tee -a /etc/sysctl.conf
$ for vpn in /proc/sys/net/ipv4/conf/*; do echo 0 > $vpn/accept_redirects; echo 0 > $vpn/send_redirects; done
$ sysctl -p


$ sudo vim /etc/rc.local
for vpn in /proc/sys/net/ipv4/conf/*; do echo 0 > $vpn/accept_redirects; echo 0 > $vpn/send_redirects; done
iptables --table nat --append POSTROUTING --jump MASQUERADE


$ sudo vim /etc/ipsec.conf
conn L2TP-PSK-NAT
    rightsubnet=vhost:%priv
    also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
    authby=secret
    pfs=no
    auto=add
    keyingtries=3
    rekey=no
    ikelifetime=8h
    keylife=1h
    type=transport
    left=SERVER_IP
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any


$ sudo vim /etc/ipsec.secrets
SERVER_IP  %any:  PSK "L2TP_PRIVATE_KEY"


$ sudo vim /etc/xl2tpd/xl2tpd.conf
[global]
ipsec saref = yes

[lns default]
ip range = 10.1.2.2-10.1.2.255
local ip = 10.1.2.1
;require chap = yes
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes


$ sudo vim /etc/ppp/options.xl2tpd
require-mschap-v2
ms-dns 8.8.8.8
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4


重啟相關服務:

$ sudo service pptpd restart
Restarting PPTP:
Stopping PPTP: pptpd.
Starting PPTP Daemon: pptpd.

$ sudo service ipsec restart
ipsec_setup: Stopping Openswan IPsec...
ipsec_setup: Starting Openswan IPsec 2.6.37...
ipsec_setup: No KLIPS support found while requested, desperately falling back to netkey
ipsec_setup: NETKEY support found. Use protostack=netkey in /etc/ipsec.conf to avoid attempts to use KLIPS. Attempting to continue with NETKEY

$ sudo service xl2tpd restart
Restarting xl2tpd: xl2tpd.


服務驗證:

$ sudo 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.2.0-58-generic (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]
Two or more interfaces found, checking IP forwarding            [OK]
Checking NAT and MASQUERADEing                                  [OK]
Checking for 'ip' command                                       [OK]
Checking /bin/sh is not /bin/dash                               [WARNING]
Checking for 'iptables' command                                 [OK]
Opportunistic Encryption Support                                [DISABLED]