Bài viết này nói về giao thức đường hầm lớp 2 (L2TP) với IPsec để cung cấp mã hóa đầu cuối trong VPN lớp 2 vì các tính năng bảo mật không khả dụng trong L2TP. Các triển khai nguồn mở của IPsec là StrongSwan và OpenSwan, cả hai đều được hỗ trợ trên tất cả các bản phân phối Linux. Trong hướng dẫn này, OpenSwan được sử dụng để cung cấp kênh bảo mật cho VPN L2TP. Freeradius là một công cụ nguồn mở nổi tiếng cung cấp các loại xác thực khác nhau cho người dùng. Freeradius được sử dụng để xác thực người dùng VPN L2TP trước khi thiết lập một kênh bảo mật. Một máy khách dựa trên Android sẽ được sử dụng cho đường hầm bảo mật dựa trên L2TP.
Ảnh chụp màn hình sau đây cho thấy cách mật khẩu cho người dùng "root" của máy chủ cơ sở dữ liệu MySQL được thiết lập trong quá trình cài đặt.
Các gói sau đây là bắt buộc để cài đặt OpenSwan từ nguồn trên nền tảng Ubuntu 16.04.
Máy khách Freeradius và các gói OpenSwan không có sẵn trong kho lưu trữ, vì vậy cả hai công cụ đều đã được cài đặt từ nguồn.
Trước tiên, hãy chạy tập lệnh configure với lệnh chuyển đổi tiền tố và cài đặt phần mềm bằng lệnh make.
Chạy lệnh sau để biên dịch và cài đặt OpenSwan.
Nhập các quy tắc iptables sau cho cả hai mạng (10.20.30.0/24 & 10.10.10.0/24) trên thiết bị đầu cuối.
Các quy tắc trên phải được lưu vào tệp /etc/iptables.rc để áp dụng chúng khi khởi động.
Thêm các dòng sau vào tệp /etc/sysctl.conf để bật chuyển tiếp trên máy Linux.
Chạy lệnh sau để áp dụng các thay đổi.
Cấu hình của Máy chủ Freeradius
Chạy lệnh sau để thay đổi mật khẩu cho freeradius.
Các lệnh MySQL sau sẽ cấu hình máy chủ Freeradius trên Ubuntu.
mysql --protocol=tcp -h localhost -u root -ptest bán kính < /etc/freeradius/sql/mysql/admin.sql
Thêm ngày thích hợp để sửa lỗi giá trị mặc định không hợp lệ trong /etc/freeradius/sql/mysql/cui.sql.
Sau khi sửa trong tệp /etc/freeradius/sql/mysql/cui.sql và chạy lại lệnh trên để sửa lỗi trên.
Chạy lệnh sed sau để thay đổi mật khẩu mặc định của người dùng "radius". Trong hướng dẫn này, mật khẩu của người dùng "radius" là "test". Chọn một mật khẩu an toàn trên máy chủ của bạn.
Tạo liên kết mềm cho cấu hình sql trong thư mục mô-đun của máy chủ Freeradius.
Các tệp sau không có trên Ubuntu 16.04, do đó, hãy tạo tất cả các tệp cần thiết với các tệp được mô tả nội dung.
/etc/freeradius/modules/dailytraffic
/etc/freeradius/modules/monthlytraffic
Tệp sau đây rất quan trọng đối với cấu hình máy chủ freeradius. Cấu hình đang chạy của chúng tôi được đưa ra bên dưới.
/etc/freeradius/sites-enabled/default
Sử dụng lệnh sau để khởi động lại máy chủ freeradius và xác minh cấu hình.
Lệnh sau sẽ đặt tên máy chủ và bí mật trong tệp "máy chủ" của máy khách Freeradius.
Tạo tệp cấu hình dictionary.microsoft cho máy khách chạy Windows.
Thêm các dòng sau vào tệp /etc/radiusclient/dictionary.
Sau đây là cấu hình chạy của máy khách bán kính.
Cấu hình sau (liên quan đến IPv6) trong tệp /etc/radiusclient/dictionary phải được chú thích để chạy máy khách radius.
Cấu hình máy chủ Poptop
Thêm cấu hình sau vào tệp/etc/pptpd.conf.
Chạy lệnh sed sau trên tệp/etc/ppp/pptpd-options.
Thêm các dòng sau vào tệp /etc/ppp/pptpd-options.
Khởi động lại dịch vụ pptpd để áp dụng các thay đổi trên.
Cấu hình IPsec cho đường hầm L2TP được bao gồm trong tệp /etc/ipsec.conf.
Cấu hình máy chủ PPP
Thêm cấu hình sau vào tệp /etc/ppp/options.xl2tpd .
Sau khi cấu hình thành công tất cả các gói cần thiết, bây giờ hãy khởi động lại tất cả các dịch vụ để kiểm tra L2TP VPN.
Khởi động lại IPsec & dịch vụ xl2tp.
Hình sau cho thấy máy chủ freeradius đang chạy ở chế độ daemon, chế độ này hữu ích để xác định máy chủ đang hoạt động.
Chèn tài khoản người dùng vào cơ sở dữ liệu MySQL để kiểm tra cấu hình.
Lệnh sau kiểm tra xem máy chủ Freeradius có hoạt động trên localhost không.
Cấu hình máy khách L2TP Android
Đi tới cài đặt ==> Thêm ==> VPN ==>Thêm Mạng VPN trên điện thoại Android và tạo VPN L2TP PSK mới như hình dưới đây.
Sau khi tạo VPN L2TP mới, hãy nhấp vào VPN đó và nhập tên người dùng/mật khẩu (được cấu hình trên máy chủ thefreeradius).
Hình sau cho thấy VPN L2TP đang kết nối.
Các màn hình sau cho thấy VPN L2TP đã được kết nối thành công bằng máy khách Android.
Lệnh sau hiển thị trạng thái đường hầm IPsec
Nhật ký OpenSwan (/var/log/auth.log) và nhật ký xl2tp (/var/log/syslog) cũng hiển thị trạng thái của L2TP VPN.
tail -f /var/log/auth.log
tail -f /var/log/syslog
Trong hướng dẫn này, giao thức đường hầm lớp 2 được sử dụng với IPSec và Freeradius để cung cấp cơ chế bảo mật và xác thực. Một máy khách dựa trên Android được sử dụng để chứng minh hoạt động của L2TP qua IPsec.
Cài đặt các gói cần thiết
Các gói quan trọng sau sẽ được cài đặt trên Ubuntu 16.04 LTS.- Máy chủ/Máy khách Freeradius
- Máy chủ Poptop
- xl2tpd
- Openswan cho IPsec
- Máy chủ/Máy khách MySQL
- Bison & Flex
- Thư viện phát triển GMP
Mã:
apt-get update
Mã:
apt-get install -y mysql-server mysql-client freeradius-mysql pptpd xl2tpd
Ảnh chụp màn hình sau đây cho thấy cách mật khẩu cho người dùng "root" của máy chủ cơ sở dữ liệu MySQL được thiết lập trong quá trình cài đặt.
Các gói sau đây là bắt buộc để cài đặt OpenSwan từ nguồn trên nền tảng Ubuntu 16.04.
Mã:
apt-get install -y build-essential libgmp3-dev bison flex
Máy khách Freeradius và các gói OpenSwan không có sẵn trong kho lưu trữ, vì vậy cả hai công cụ đều đã được cài đặt từ nguồn.
Cài đặt máy khách Freeradius
Tải xuống máy khách Freeradius mới nhất từ liên kết sau:
Mã:
wget [URL=https://github.com/FreeRADIUS/freeradius-client/archive/master.zip?utm_source=diendancongnghe.com][/URL]https://github.com/FreeRADIUS/freeradius-client/archive/master.zip
Mã:
giải nén master.zip
Mã:
mv freeradius-client-master freeradius-client
Mã:
cd freeradius-client
Trước tiên, hãy chạy tập lệnh configure với lệnh chuyển đổi tiền tố và cài đặt phần mềm bằng lệnh make.
Mã:
./configure --prefix=/
Mã:
make && make install
Cài đặt OpenSwan
Mã nguồn của công cụ OpenSwan IPsec có sẵn tại liên kết sau. Tải xuống tệp lưu trữ và giải nén.
Mã:
wget [URL=https://download.openswan.org/openswan/openswan-latest.tar.gz?utm_source=diendancongnghe.com][/URL]https://download.openswan.org/openswan/openswan-latest.tar.gz
Mã:
tar -xzf openswan-latest.tar.gz
Mã:
cd openswan-*
Chạy lệnh sau để biên dịch và cài đặt OpenSwan.
Mã:
make programs
Mã:
make install
Configuration
Trước khi bắt đầu cấu hình các gói đã cài đặt, các cấu hình cơ sở sau (iptables và sysctl) là bắt buộc trên nền tảng Ubuntu.Nhập các quy tắc iptables sau cho cả hai mạng (10.20.30.0/24 & 10.10.10.0/24) trên thiết bị đầu cuối.
Mã:
iptables -t nat -I POSTROUTING -s 10.20.30.0/24 -j SNAT --to 192.168.15.4
iptables -t nat -I POSTROUTING -s 10.10.10.0/24 -j SNAT --to 192.168.15.4
Các quy tắc trên phải được lưu vào tệp /etc/iptables.rc để áp dụng chúng khi khởi động.
Mã:
chmod +x /etc/iptables.rc
Mã:
sed -i "/iptables.rc/d" /etc/rc.local
Mã:
sed -i "1a/etc/iptables.rc" /etc/rc.local
Thêm các dòng sau vào tệp /etc/sysctl.conf để bật chuyển tiếp trên máy Linux.
Mã:
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1
Chạy lệnh sau để áp dụng các thay đổi.
Mã:
sysctl -p
Cấu hình của Máy chủ Freeradius
Chạy lệnh sau để thay đổi mật khẩu cho freeradius.
Mã:
sed -i "s/PASSWORD('radpass')/PASSWORD('test')/g" /etc/freeradius/sql/mysql/admin.sql
Các lệnh MySQL sau sẽ cấu hình máy chủ Freeradius trên Ubuntu.
Mã:
mysql --protocol=tcp -h localhost -u root -ptest
Mã:
tạo bán kính cơ sở dữ liệu # tạo bán kính DB
mysql --protocol=tcp -h localhost -u root -ptest bán kính < /etc/freeradius/sql/mysql/admin.sql
Mã:
mysql --protocol=tcp -h localhost -u root -ptest bán kính < /etc/freeradius/sql/mysql/cui.sql
Thêm ngày thích hợp để sửa lỗi giá trị mặc định không hợp lệ trong /etc/freeradius/sql/mysql/cui.sql.
Sau khi sửa trong tệp /etc/freeradius/sql/mysql/cui.sql và chạy lại lệnh trên để sửa lỗi trên.
Mã:
mysql --protocol=tcp -h localhost -u root -ptest radius < /etc/freeradius/sql/mysql/ippool.sql
Mã:
mysql --protocol=tcp -h localhost -u root -ptest radius < /etc/freeradius/sql/mysql/nas.sql
Mã:
mysql --protocol=tcp -h localhost -u root -ptest radius < /etc/freeradius/sql/mysql/schema.sql
Mã:
mysql --protocol=tcp -h localhost -u root -ptest radius < /etc/freeradius/sql/mysql/wimax.sql
Chạy lệnh sed sau để thay đổi mật khẩu mặc định của người dùng "radius". Trong hướng dẫn này, mật khẩu của người dùng "radius" là "test". Chọn một mật khẩu an toàn trên máy chủ của bạn.
Mã:
sed -i "s/password = \"radpass\"/password = \"test\"/g" /etc/freeradius/sql.conf
Tạo liên kết mềm cho cấu hình sql trong thư mục mô-đun của máy chủ Freeradius.
Mã:
ln -sf /etc/freeradius/sql.conf /etc/freeradius/modules/sql
Các tệp sau không có trên Ubuntu 16.04, do đó, hãy tạo tất cả các tệp cần thiết với các tệp được mô tả nội dung.
- /etc/freeradius/modules/hourlylytraffic
- /etc/freeradius/modules/dailytraffic
- /etc/freeradius/modules/monthlytraffic
Mã:
sqlcounter hourlytrafficcounter {
counter-name = Lưu lượng truy cập theo giờ
check-name = Lưu lượng truy cập theo giờ
sqlmod-inst = sql
key = Tên người dùng
reset = 1h
query = "SELECT SUM(acctinputoctets + acctoutputoctets) DIV 1048576 FROM radacct WHERE UserName='%{%k}' AND UNIX_TIMESTAMP(AcctStartTime) > '%b'"
}
/etc/freeradius/modules/dailytraffic
Mã:
sqlcounter dailytrafficcounter {
counter-name = Lưu lượng truy cập hàng ngày
check-name = Lưu lượng truy cập hàng ngày
sqlmod-inst = sql
key = Tên người dùng
reset = daily
query = "SELECT SUM(acctinputoctets + acctoutputoctets) DIV 1048576 FROM radacct WHERE UserName='%{%k}' AND UNIX_TIMESTAMP(AcctStartTime) > '%b'"
}
/etc/freeradius/modules/monthlytraffic
Mã:
sqlcounter monthlytrafficcounter {
counter-name = Lưu lượng truy cập hàng tháng
check-name = Lưu lượng truy cập hàng tháng
sqlmod-inst = sql
key = Tên người dùng
reset = hàng tháng
query = "SELECT SUM(acctinputoctets + acctoutputoctets) DIV 1048576 FROM radacct WHERE UserName='%{%k}' AND UNIX_TIMESTAMP(AcctStartTime) > '%b'"
}
Tệp sau đây rất quan trọng đối với cấu hình máy chủ freeradius. Cấu hình đang chạy của chúng tôi được đưa ra bên dưới.
/etc/freeradius/sites-enabled/default
Mã:
authorize {
preprocess
chap
mschap
digest
suffix
eap {
ok = return
}
files
sql
expire
logintime
pap
hourlytrafficcounter
dailytrafficcounter
monthlytrafficcounter
}
authenticate {
Auth-Type PAP {
pap
}
Auth-Type CHAP {
chap
}
Auth-Type MS-CHAP {
mschap
}
digest
unix
eap
}
preacct {
preprocess
acct_unique
hậu tố
tệp
}
accounting {
chi tiết
unix
radutmp
sql
exec
attr_filter.accounting_response
}
phiên {
radutmp
sql
}
post-auth {
sql
exec
Post-Auth-Type REJECT {
attr_filter.access_reject
}
}
pre-proxy {
}
post-proxy {
eap
}
Sử dụng lệnh sau để khởi động lại máy chủ freeradius và xác minh cấu hình.
Mã:
/etc/init.d/freeradius restart
Cấu hình máy khách Freeradius
Lệnh sau sẽ đặt tên máy chủ và bí mật trong tệp "máy chủ" của máy khách Freeradius.
Mã:
echo -e "localhost\ttesting123" >> /etc/radiusclient/servers
Tạo tệp cấu hình dictionary.microsoft cho máy khách chạy Windows.
Mã:
vi /etc/radiusclient/dictionary.microsoft
Mã:
#
# VSA của Microsoft, từ RFC 2548
#
# \$Id: poptop_ads_howto_8.htm,v 1.8 2008/10/02 08:11:48 wskwok Exp \$
#
NHÀ CUNG CẤP Microsoft 311 Microsoft
BẮT ĐẦU NHÀ CUNG CẤP Microsoft
THUỘC TÍNH MS-CHAP-Response 1 chuỗi Microsoft
THUỘC TÍNH MS-CHAP-Error 2 chuỗi Microsoft
THUỘC TÍNH MS-CHAP-CPW-1 3 chuỗi Microsoft
THUỘC TÍNH MS-CHAP-CPW-2 4 chuỗi Microsoft
THUỘC TÍNH MS-CHAP-LM-Enc-PW 5 chuỗi Microsoft
THUỘC TÍNH MS-CHAP-NT-Enc-PW 6 chuỗi Microsoft
THUỘC TÍNH MS-MPPE-Encryption-Policy 7 chuỗi Microsoft
# Điều này được gọi là cả số ít và số nhiều trong RFC.
# Số nhiều có vẻ hợp lý hơn.
ATTRIBUTE MS-MPPE-Encryption-Type 8 chuỗi Microsoft
ATTRIBUTE MS-MPPE-Encryption-Types 8 chuỗi Microsoft
ATTRIBUTE MS-RAS-Vendor 9 số nguyên Microsoft
ATTRIBUTE MS-CHAP-Domain 10 chuỗi Microsoft
ATTRIBUTE MS-CHAP-Challenge 11 chuỗi Microsoft
ATTRIBUTE MS-CHAP-MPPE-Keys 12 chuỗi Microsoft encrypt=1
ATTRIBUTE MS-BAP-Usage 13 số nguyên Microsoft
ATTRIBUTE MS-Link-Utilization-Threshold 14 số nguyên Microsoft
ATTRIBUTE MS-Link-Drop-Time-Limit 15 số nguyên Microsoft
ATTRIBUTE MS-MPPE-Send-Key 16 chuỗi Microsoft
Thuộc tính MS-MPPE-Recv-Key 17 chuỗi Microsoft
Thuộc tính MS-RAS-Version 18 chuỗi Microsoft
Thuộc tính MS-Mật khẩu cũ 19 chuỗi Microsoft
Thuộc tính MS-Mật khẩu mới 20 chuỗi Microsoft
Thuộc tính MS-ARAP-PW-Lý do thay đổi 21 số nguyên Microsoft
Thuộc tính MS-Bộ lọc 22 chuỗi Microsoft
Thuộc tính MS-Acct-Auth-Type 23 số nguyên Microsoft
Thuộc tính MS-Acct-EAP-Type 24 số nguyên Microsoft
Thuộc tính MS-CHAP2-Response 25 chuỗi Microsoft
Thuộc tính MS-CHAP2-Thành công 26 chuỗi Microsoft
Thuộc tính MS-CHAP2-CPW 27 chuỗi Microsoft
Thuộc tính MS-Primary-DNS-Server 28 ipaddr
Thuộc tính MS-Secondary-DNS-Server 29 ipaddr
Thuộc tính MS-Primary-NBNS-Server 30 ipaddr Microsoft
Thuộc tính MS-Secondary-NBNS-Server 31 ipaddr Microsoft
#Thuộc tính MS-ARAP-Challenge 33 chuỗi Microsoft
#
# Bản dịch số nguyên
#
# Giá trị MS-BAP-Usage
GIÁ TRỊ Không cho phép MS-BAP-Usage 0
GIÁ TRỊ Được phép MS-BAP-Usage 1
GIÁ TRỊ Bắt buộc MS-BAP-Usage 2
# Giá trị Lý do thay đổi mật khẩu MS-ARAP
GIÁ TRỊ Lý do thay đổi mật khẩu MS-ARAP-PW Just-Change-Password 1
GIÁ TRỊ MS-ARAP-PW-Lý do thay đổi mật khẩu hết hạn 2
GIÁ TRỊ MS-ARAP-PW-Lý do thay đổi mật khẩu Admin-Yêu cầu thay đổi mật khẩu 3
GIÁ TRỊ MS-ARAP-PW-Lý do thay đổi mật khẩu Quá ngắn 4
# Giá trị MS-Acct-Auth-Type
GIÁ TRỊ MS-Acct-Auth-Type PAP 1
GIÁ TRỊ MS-Acct-Auth-Type CHAP 2
GIÁ TRỊ MS-Acct-Auth-Type MS-CHAP-1 3
GIÁ TRỊ MS-Acct-Auth-Type MS-CHAP-2 4
GIÁ TRỊ MS-Acct-Auth-Type EAP 5
# Giá trị MS-Acct-EAP-Type
GIÁ TRỊ MS-Acct-EAP-Type MD5 4
GIÁ TRỊ MS-Acct-EAP-Type OTP 5
GIÁ TRỊ MS-Acct-EAP-Type Generic-Token-Card 6
GIÁ TRỊ MS-Acct-EAP-Type TLS 13
NHÀ CUNG CẤP CUỐI Microsoft
Mã:
vi /etc/radiusclient/dictionary.merit
Mã:
#
# Tiện ích mở rộng thử nghiệm, chỉ cấu hình (cho các mục kiểm tra)
# Tên/số theo tiện ích mở rộng MERIT (nếu có thể).
#
Thuộc tính NAS-Identifier 32 chuỗi
Thuộc tính Proxy-State 33 chuỗi
Thuộc tính Login-LAT-Service 34 chuỗi
Thuộc tính Login-LAT-Node 35 chuỗi
Thuộc tính Login-LAT-Group 36 chuỗi
Thuộc tính Framed-AppleTalk-Link 37 số nguyên
ATTRIBUTE Framed-AppleTalk-Network 38 số nguyên
ATTRIBUTE Framed-AppleTalk-Zone 39 chuỗi
ATTRIBUTE Acct-Input-Packets 47 số nguyên
ATTRIBUTE Acct-Output-Packets 48 số nguyên
# 8 là phần mở rộng MERIT.
VALUE Service-Type Authenticate-Only 8
Thêm các dòng sau vào tệp /etc/radiusclient/dictionary.
Mã:
INCLUDE /etc/radiusclient/dictionary.merit
INCLUDE /etc/radiusclient/dictionary.microsoft
ATTRIBUTE Hourly-Traffic 1000 số nguyên
ATTRIBUTE Daily-Traffic 1001 số nguyên
ATTRIBUTE Monthly-Traffic 1002 số nguyên
Sau đây là cấu hình chạy của máy khách bán kính.
Mã:
/etc/radiusclient/radiusclient.conf
Mã:
# Thiết lập chung
# chỉ định xác thực nào được thực hiện trước tương ứng
# xác thực nào được sử dụng. Các giá trị có thể là: "radius" và "local".
# nếu bạn chỉ định "radius,local" thì máy chủ RADIUS sẽ được hỏi
# trước tiên, sau đó đến máy chủ cục bộ. nếu chỉ có một từ khóa được chỉ định only
# máy chủ này sẽ được hỏi.
auth_order radius,local
# số lần đăng nhập tối đa mà người dùng có
login_tries 4
# thời gian chờ cho tất cả các lần đăng nhập
# nếu vượt quá thời gian này, người dùng sẽ bị đuổi ra
login_timeout 60
# tên của tệp nologin, khi tệp này tồn tại sẽ vô hiệu hóa các lần đăng nhập. nó có thể
# được mở rộng bởi ttyname, điều này sẽ dẫn đến
#khóa dành riêng cho thiết bị đầu cuối (ví dụ: /etc/nologin.ttyS2 sẽ vô hiệu hóa
# đăng nhập trên /dev/ttyS2)
nologin /etc/nologin
# tên của tệp sự cố. nó chỉ hiển thị khi không có tên người dùng nào được truyền
# trên dòng lệnh radlogin
sự cố /etc/radiusclient/issue
seqfile /var/run/freeradius/freeradius.pid
## RADIUS lắng nghe được phân tách bằng dấu hai chấm với tên máy chủ. nếu
# không chỉ định cổng /etc/services được tham khảo của radius
authserver localhost
# máy chủ RADIUS để sử dụng cho các yêu cầu tính toán. Tất cả những gì tôi
# đã nói đối với authserver cũng áp dụng.
acctserver localhost
# tệp chứa các bí mật được chia sẻ được sử dụng cho giao tiếp
# giữa máy khách và máy chủ RADIUS
máy chủ /etc/radiusclient/servers
# từ điển các thuộc tính và giá trị được phép giống như trong
# phân phối RADIUS
dictionary /etc/radiusclient/dictionary
# chương trình để gọi đăng nhập được xác thực RADIUS
login_radius /sbin/login.radius
# tệp chỉ định ánh xạ giữa ttyname và thuộc tính NAS-Port
mapfile /etc/radiusclient/port-id-map
# miền xác thực mặc định để thêm vào tất cả tên người dùng nếu không
# miền được người dùng chỉ định rõ ràng
default_realm
# thời gian chờ phản hồi từ máy chủ RADIUS
radius_timeout 10
# gửi lại yêu cầu nhiều lần như vậy trước khi thử máy chủ tiếp theo
radius_retries 3
# địa chỉ cục bộ mà các gói radius phải được gửi đi
bindaddr *
# chương trình để thực thi cho đăng nhập cục bộ
# chương trình phải hỗ trợ cờ -f cho đăng nhập được xác thực trước
login_local /bin/login
Cấu hình sau (liên quan đến IPv6) trong tệp /etc/radiusclient/dictionary phải được chú thích để chạy máy khách radius.
Mã:
ATTRIBUTE NAS-Filter-Rule 92 chuỗi
ATTRIBUTE Originating-Line-Info 94 chuỗi
ATTRIBUTE NAS-IPv6-Address 95 chuỗi
ATTRIBUTE Framed-Interface-Id 96 chuỗi
ATTRIBUTE Framed-IPv6-Prefix 97 ipv6prefix
ATTRIBUTE Login-IPv6-Host 98 chuỗi
ATTRIBUTE Framed-IPv6-Route 99 chuỗi
ATTRIBUTE Framed-IPv6-Pool 100 chuỗi
ATTRIBUTE Error-Cause 101 số nguyên
ATTRIBUTE EAP-Key-Name 102 chuỗi
#
# Thuộc tính IPv6 RFC6911
#
ATTRIBUTE Framed-IPv6-Address 168 ipv6addr
ATTRIBUTE DNS-Server-IPv6-Address 169 ipv6addr
ATTRIBUTE Route-IPv6-Information 170 ipv6prefix
Cấu hình máy chủ Poptop
Thêm cấu hình sau vào tệp/etc/pptpd.conf.
Mã:
localip 10.20.30.1
remoteip 10.20.30.2-254
Chạy lệnh sed sau trên tệp/etc/ppp/pptpd-options.
Mã:
sed -i "/^ms-dns/d" /etc/ppp/pptpd-options
sed -i -e "/radius.so/d" -e "/radattr.so/d" /etc/ppp/pptpd-options
Thêm các dòng sau vào tệp /etc/ppp/pptpd-options.
Mã:
ms-dns 8.8.8.8
ms-dns 8.8.4.4
plugin /usr/lib/pppd/2.4.7/radius.so
plugin /usr/lib/pppd/2.4.7/radattr.so
Khởi động lại dịch vụ pptpd để áp dụng các thay đổi trên.
Mã:
service pptpd restart
Cấu hình của xl2tp
Bao gồm các dòng cấu hình sau trong tệp /etc/xl2tpd/xl2tpd.conf như thể hiện trong hình sau.
Mã:
[global]
ipsec saref = yes
[lns default]
ip range = 10.10.10.2-10.10.10.255
local ip = 10.10.10.1
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
Cấu hình OpenSwan
Thêm thiết lập sau của tệp bí mật ipsec vào /etc/ipsec.secrets.
Mã:
192.168.15.4 %any 0.0.0.0: PSK "test"
Cấu hình IPsec cho đường hầm L2TP được bao gồm trong tệp /etc/ipsec.conf.
Mã:
phiên bản 2.0
cài đặt cấu hình
nat_traversal=yes
virtual_private=%v4:192.168.0.0/16,%v4:10.0.0.0/8,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v4:!10.254.253.0/24
protostack=netkey
#protostack=mast # chỉ được sử dụng cho SAref + MAST
interfaces="%defaultroute"
oe=off
conn psk-l2tp
pfs=no
auto=add
rekey=no
# overlapip=yes # cho SAref + MAST
# sareftrack=yes # cho SAref + MAST
type=transport
left=192.168.15.4
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
rightsubnet=vhost:%priv,%no
authby=secret
Thêm cấu hình sau vào tệp /etc/ppp/options.xl2tpd .
Mã:
ipcp-accept-local
ipcp-accept-remote
ms-dns 8.8.8.8
ms-dns 8.8.4.4
noccp
auth
crtscts
idle 1800
mtu 1200
mru 1200
nodefaultroute
debug
lock
proxyarp
connect-delay 5000
plugin /usr/lib/pppd/2.4.7/radius.so
plugin /usr/lib/pppd/2.4.7/radattr.so
Sau khi cấu hình thành công tất cả các gói cần thiết, bây giờ hãy khởi động lại tất cả các dịch vụ để kiểm tra L2TP VPN.
Khởi động lại IPsec & dịch vụ xl2tp.
Hình sau cho thấy máy chủ freeradius đang chạy ở chế độ daemon, chế độ này hữu ích để xác định máy chủ đang hoạt động.
Chèn tài khoản người dùng vào cơ sở dữ liệu MySQL để kiểm tra cấu hình.
Mã:
INSERT INTO radius.radcheck (username, attribute, op, value) VALUES ('username','User-Password',':=','userpassword');
Lệnh sau kiểm tra xem máy chủ Freeradius có hoạt động trên localhost không.
Mã:
radtest username userpassword localhost 0 testing123
Cấu hình máy khách L2TP Android
Đi tới cài đặt ==> Thêm ==> VPN ==>Thêm Mạng VPN trên điện thoại Android và tạo VPN L2TP PSK mới như hình dưới đây.
Sau khi tạo VPN L2TP mới, hãy nhấp vào VPN đó và nhập tên người dùng/mật khẩu (được cấu hình trên máy chủ thefreeradius).
Hình sau cho thấy VPN L2TP đang kết nối.
Các màn hình sau cho thấy VPN L2TP đã được kết nối thành công bằng máy khách Android.
Trạng thái VPN L2TP
Freeradius hiển thị xác thực thành công của máy khách Android L2TP.Lệnh sau hiển thị trạng thái đường hầm IPsec
Mã:
trạng thái ip xfrm
Nhật ký OpenSwan (/var/log/auth.log) và nhật ký xl2tp (/var/log/syslog) cũng hiển thị trạng thái của L2TP VPN.
tail -f /var/log/auth.log
tail -f /var/log/syslog
Trong hướng dẫn này, giao thức đường hầm lớp 2 được sử dụng với IPSec và Freeradius để cung cấp cơ chế bảo mật và xác thực. Một máy khách dựa trên Android được sử dụng để chứng minh hoạt động của L2TP qua IPsec.