2014年11月23日 星期日

L2TP Over IPSec


環境介紹:(在VirtualBox上實作)
準備二台Ubuntu 12.04.4
一台叫Right, 一台叫Left
RightLeft
eth0 10.0.2.5 (DHPC取得IP)eth0 10.0.2.6 (DHCP取得IP)
eth1 192.168.1.10 (Static IP)eth1 192.168.2.10 (Static IP)
先安裝基本套件及所需的Repo
apt-get update
apt-get install -y python-software-properties
add-apt-repository ppa:xelerance/xl2tpd
add-apt-repository ppa:openswan/ppa
apt-get update
安裝L2TP套件
apt-get install xl2tpd
編輯設定檔 /etc/xl2tpd/xl2tpd.conf,這是主要要設定檔
[global]
ipsec saref = no

[lns default]                                   #Server端
ip range = 192.168.2.50-192.168.2.100           #要給Client端連進來的IP Scope
local ip = 192.168.2.1                          #給一個內網IP,並且不要跟現在內網有的IP重覆即可
require chap = yes                              #是否使用CHAP認証
require authentication = yes                     
ppp debug = yes                                 #log會在/var/log/syslog
pppoptfile =/etc/ppp/options.xl2tpd             #pppoe的設定檔案位置
length bit = yes

[lac daniel]                                    #Client端撥給對面的Server所用的名稱"daniel"
lns = 10.0.2.5                                  #自已的對外IP
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd.client  
length bit = yes
設定DNS及安全認証方式,/etc/ppp/options.xl2tpd
require-chap
ms-dns 8.8.8.8
lcp-echo-interval 10
lcp-echo-failure 3
auth
refuse-mschap-v2
refuse-mschap
asyncmap 0
auth
lock
hide-password
local
#debug
name l2tpd
proxyarp
mtu 1404
mru 1404
設定L2TP Client端的設定檔,/etc/ppp/options.l2tpd.client
ipcp-accept-local
ipcp-accept-remote
refuse-eap
require-mschap-v2
noccp
noauth
idle 1800
mtu 1410
mru 1410
defaultroute
replacedefaultroute                         #可不加
usepeerdns
debug
lock
connect-delay 5000
name steven                                 #撥接時的帳號
password novell                             #撥接時的密碼
新增Client端連線進來的帳號及密碼,/etc/ppp/chap-secrets,即為ppp服務
  • Client 指的使用者名稱
  • Server 指的是撥入Server的IP
  • IP addresses 指的是撥入後進來拿到IP的範圍,若先前有在xl2tpd.conf裡設定好ip range,此處就可以用*號表示
# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
daniel          *        novell                 *
重開L2tp
/etc/init.d/xl2tpd restart
連結L2TP Server,即連接到指定的lac
這個撥打過去,會跟Server端的/etc/ppp/chap/secrets做驗証,如果正確就連結。
echo 'c steven' > /var/run/xl2tpd/l2tp-control
安裝OPENSWAN套件
apt-get install openswan
IPSec主要設定檔,/etc/ipsec.conf
二台的IPSec的主要設定檔要長的一樣
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
    oe=off
    protostack=netkey                   #default是auto,要改成netkey


conn net-net                            
    authby=secret
    left=10.0.2.5                       #設對方的對外IP
    leftsubnet=192.168.1.0/24           #設對方的內部網段
    leftnexthop=%defaultroute           #採預設路由的方式
    right=10.0.2.4                      #設自已的對外IP
    rightsubnet=192.168.2.0/24          #設自已的內部網段
    rightnexthop=%defaultroute          #採預設路由
    auto=start
編輯/etc/ipsec.secrets
我採用的是sample roadwarrior,如果要用其他的寫法,請參考man ipsec.secrets
# sample roadwarrior
%any gateway.corp.com: PSK "shared secret with many roadwarriors"
%any 10.0.2.1 : PSK "novell"
編輯/etc/sysctl.conf,啟用IPv4轉發
net.ipv4.ip_forward=1
net.ipv4.conf.default.rp_filter = 0
編輯完後,執行以下指令,使其生效
sysctl -p
防火牆
請依據實際上要開的port來做設定
iptables --table nat --append POSTROUTING --jump MASQUERADE
腳本設定
#!/bin/bash
for each in /proc/sys/net/ipv4/conf/*
do
    echo 0 > $each/accept_redirects
    echo 0 > $each/send_redirects
done
驗証IPSec
ipsec verify
若出現以下訊息,是說明並沒有將ICMP給關閉,請執行上面的腳本設定或是將其放至/etc/rc.local裡,開機時,自動啟用。
 NETKEY: Testing XFRM related proc values
         ICMP default/send_redirects                [NOT DISABLED]

  Disable /proc/sys/net/ipv4/conf/*/send_redirects or NETKEY will cause act on or cause sending of bogus ICMP redirects!

         ICMP default/accept_redirects              [NOT DISABLED]

  Disable /proc/sys/net/ipv4/conf/*/accept_redirects or NETKEY will cause act on or cause sending of bogus ICMP redirects!
再次執行
ipsec verify
連結IPSec
ipsec auto --up net-net


沒有留言:

張貼留言