PPPoE là gì?

  • PPPoE là một chuẩn giao tiếp điểm đến điểm (Point to Point) , các giao tiếp này được thực hiện trên chuẩn vật lý Ethernet  .
    Ngoài chuẩn Ethernet, giao thức Point To Point còn được sử dụng trên các chuẩn vật lý khác như trên chuẩn ATM (cáp đồng, cáp điện thoại, cáp quang …) hay còn gọi PPPoA
  • Các nhà cung cấp dịch vụ mạng như Viettel, VNPT, FPT sử dụng giao thức này để giao tiếp và cung cấp IP cho Router của bạn. 
  • Lý do của việc sử dụng giao thức này bởi vì nó có thể thiết lập trước khi Router của bạn có IP. Và nhà cung cấp dịch vụ sủ dụng đặc điểm này để quyết định có cung cấp IP cho router của bạn không khi bạn chưa thanh toán tiền.
  • Giả sử bây giờ bạn cung cấp một dịch vụ gì đó qua mạng internet, và yêu cầu người dùng phải trả phí, chẳng hạn bạn tự xây dựng một ISP (Internet Service Provider) hoặc cung cấp dịch vụ IPTV thì bài viết này sẽ chỉ cho bạn cách cài đặt một PPPoE server lên board mạch Raspberry Pi.
  • Tất nhiên thực tế thì bạn có thể cài lên trên những máy tính mạnh hơn.

Các yêu cầu trước khi cài đặt.

Các bước thực hiện.

Bước 1. Cài đặt các packet cần thiết.

sudo apt-get update
sudo apt-get install ppp
sudo apt-get install iptables

Bước 2. Cài đặt packet RP-PPPOE đã tải về ở trên.

cd ~/src/rp-pppoe-3.13
sudo ./go
  • Khi chạy command ở trên, màn hình console sẽ hiện những thông báo yêu cầu bạn nhập thông tin như DNSServer, tên tài khoản, password là gì, bạn cứ điền sao cũng được, sau này có thể chỉnh sửa được.

Bước 3. Tùy chỉnh các thiết lập cho PPPoE

  • Tùy chỉnh file cấu hình chính /etc/ppp/pppoe-server-options
  • bạn có thể chỉnh lại DNSServer và Netmask 
# PPP options for the PPPoE server
# LIC: GPL
#require-pap
debug
require-chap
#login - this requires ppp acct to exist as system user
lcp-echo-interval 10
lcp-echo-failure 2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
netmask 255.255.255.0
defaultroute
noipdefault
usepeerdns
nobsdcomp
noccp
novj
noipx
  • Tùy chỉnh file xác thực user /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
"thanhle@user" * "thanhle_pass" *
"user1@thanhle.me" * "user1_pass" *
# To provide a static IP address for a particular user, use the following settings
"user2@thanhle.me" * "user2_pass" 100.100.100.100
  • Thiết lập dãi IP mà PPPoE server sẽ cung cấp cho user.
  • Tạo mới và edit file /etc/ppp/ip_pool
100.100.100.2-30
200.200.200.2-5 # For VLAN 201.

Bước 4. Tạo script file start để cấu hình NAT và FORWARD

  • Tạo mới và thêm nôi dung bên dưới vào file sau: /etc/ppp/pppoe-start
#!/bin/bash
##############################
# Simple script that starts PPPoE Server
##############################
# Enable IP Forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# Start PPPoE Server on eth0
pppoe-server -C isp -L 100.100.100.1 -p /etc/ppp/ip_pool -I eth0 -m 1412
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
# For forwarding to/from eth0 interfaces
iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Bước 5. Tạo script file stop để tắt PPPoE Server và xóa các thiết lập NAT và FORWARD

  • Tạo mới và thêm nôi dung bên dưới vào file sau: /etc/ppp/pppoe-stop
#!/bin/bash
##############################
# Simple script that stops PPPoE Server
##############################
# Disable IP Forwarding
echo 0 > /proc/sys/net/ipv4/ip_forward
# Kill PPPoE Server
killall pppoe-server
killall pppd
# Flush the IPtable rules.
iptables -t nat -F POSTROUTING

Sử dụng PPPoE server với VLAN

  • Nếu mục đích học tập, và số lượng thiết bị không nhiều thì bạn không cần tới bước này đâu.
  • Tuy nhiên, nếu bạn vẫn muốn cấu hình để PPPoE vận hành trên các VLAN interface để giúp quản lý lượng thiết bị nhiều hơn thì xem tiếp nhé.
sudo apt-get install vlan
vconfig add eth0 201

Sửa lại file /etc/ppp/pppoe-start với nội dung mới nhau sau

#!/bin/bash
##############################
# Simple script that starts PPPoE Server
##############################
# Enable IP Forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
pppoe-server -C isp -L 100.100.101.1 -p /etc/ppp/ip-pool -I eth0.201 -m 1412
# Set Firewall rules
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
# For forwarding to/from VLAN interfaces
iptables -A FORWARD -i eth0.0201 -o wlan0 -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0.0201 -m state --state ESTABLISHED,RELATED -j ACCEPT

Sau khi cài đặt thành công

Khởi động lại máy tính và chạy lệnh sau để xem log ppp.

tail -F /var/log/syslog | grep pppi

Hy vọng bài viết hữu ích cho bạn, nhấn Like và Share để giúp mình có động lực chia sẽ thêm nhé!!!

Xem thêm các bài viết khác tại ĐÂY

Xem thêm các video trên kênh Youtube Thanh Le của mình tại ĐÂY