Linux, 工作, 生活, 家人

Linux, Ubuntu

Ubuntu 裝 OpenL2TPD 的問題

因為我的 Ubuntu 裝不起來 xL2TPD (會 core dump), 只好改裝 OpenL2TPD
這邊大致講一下 OpenL2TPD 的安裝方法.

Ubuntu 預設的 xL2TPD 似乎不會使用 L2TP Kernel module, 可能要下載最新版的 xL2TPD source code 才可以.
有成功和沒有成功 performance 差距極大.

OpenL2TPD 一定是 kernel module, 所以有成功就是有上 kernel, 沒有成功就是爛掉.

1. 安裝套件
[BASH]
# sudo apt-get install flex bison libreadline-dev rpcbind
# sudo apt-get install ppp-dev
[/BASH]

2. 下載 source code
從 ftp://ftp.openl2tp.org/releases/openl2tp-1.8/openl2tp-1.8.tar.gz 下載 OpenL2TPD 的 source code
從 http://sourceforge.net/projects/openl2tp/files/ippool/ 下載 ippoold source code

3. 解壓 openl2tpd
3.1 修改 Makefile
CFLAGS= 這邊移掉 -Wall -Werror (也可以 search Wall 後再移掉), 要不然 compile 時會有錯誤訊息

3.2 修改 usl/Makefile
CFLAGS= 這邊移掉 -Wall -Werror

3.3 安裝
# make
# make install

4. 解壓 ippoold
4.1 修改 usl/Makefile
CFLAGS= 這邊移掉 -Wall -Werror

4.2 修改 usl/usl_timer.c
加上
[TEXT]
#include [/TEXT]

4.3 修改 Makefile
PPPD_VERSION= 2.4.5 ==> 改成你系統上的版本, 可以用 # pppd -v 看版本
以下這幾行加上 -fPIC
[TEXT]
$(IPPOOL_RPC_STEM)_xdr.o: $(IPPOOL_RPC_STEM)_xdr.c
$(CC) -I. -MMD -g -c -w -fPIC $(CPPFLAGS) $(CFLAGS.optimize) $< $(IPPOOL_RPC_STEM)_client.o: $(IPPOOL_RPC_STEM)_client.c $(CC) -I. -MMD -g -c -w -fPIC $(CPPFLAGS) $(CFLAGS.optimize) $< $(IPPOOL_RPC_STEM)_server.o: $(IPPOOL_RPC_STEM)_server.c $(CC) -I. -MMD -g -c -w -fPIC $(CPPFLAGS) $(CFLAGS.optimize) $< [/TEXT] 4.4 安裝 # make # make install 5. 設定 5.1 載入 L2TP kernel module # modprobe pppol2tp -> 舊版 Linux Kernel (沒試過)
# modprobe l2tp_ppp -> 新版 Linux kernel L2TP module.

5.2 修改 /etc/ippool.conf -> 這個檔對我無效, 原因不明
加入以下文字
[TEXT]
pool create pool_name=default first_addr=10.5.1.1 num_addrs=100
[/TEXT]

5.3 修改 /etc/openl2tpd.conf 加上
[TEXT]
ppp profile modify profile_name=default \
ip_pool_name=default
[/TEXT]

5.4 修改 /etc/ppp/chap-secrets, 加上
[TEXT]
test * “test” *
[/TEXT]

5.5 copy init.d file
[BASH]
# cp ippool-1.3/debian/init.d /etc/init.d/ippoold
# cp openl2tp-1.8/debian/init.d /etc/init.d/openl2tpd
# chmod +x /etc/init.d/ippoold
# chmod +x /etc/init.d/openl2tpd
# /etc/init.d/ippoold start
# /etc/init.d/openl2tpd start
[/BASH]

5.6 設定 ippoold , ippoold 和 OpenL2TPD 都是靠 RPC 做通訊, 所以可以執行 ippoolconf 去設定系統
# ippoolconfig
輸入 5.2 的文字
[TEXT]
pool create pool_name=default first_addr=10.5.1.1 num_addrs=100
[/TEXT]
然後檢查結果
[TEXT]
pool show pool_name=default
[/TEXT]

6. Client 端設定, 安裝和 Server 端一樣, 只是不需要安裝 ippoold, 編輯 /etc/openl2tpd.conf
加上以下文字 .
[TEXT]
ppp profile modify profile_name=default \
auth_eap=no auth_mschapv1=no auth_mschapv2=no mtu=1460

tunnel create tunnel_name=katalix dest_ipaddr=10.1.1.135 \
persist=yes

session create tunnel_name=katalix \
session_name=katalix \
user_name=test \
user_password=test
[/TEXT]
dest_ipaddr=10.1.1.135 是對方 IP
user_name=test user_password=test 是帳號和密碼.

這邊提醒一下, mtu 要設 1460.

7. Debug
如果連線有問題, 兩邊都可以將 daemon 關掉, 直接下指令 openl2tpd -Df 看錯誤訊息
大部份可能是
1. RPC 程式沒有啟動
2. ippoold 有問題, 沒有分配 IP
3. username/password 錯誤

8. openl2tp: unable to register RPC program
如果執行時碰到這個錯誤訊息, 改用 portmap 套件看看
[BASH]
# sudo apt-get install portmap
[/BASH]

Ref.
1. http://www.openl2tp.org/
2. 搭建openl2tpd服务器
3. http://wiki.steneteg.org/index.php/Openl2tp

發佈留言