Hướng dẫn cấu hình quay PPPoE trên Linux CentOS 7 chi tiết – Chắc chắn thành công

cau hinh quay pppoe tren linux centos7

Cấu hình PPPoE trên Linux CentOS 7 cho phép máy chủ kết nối trực tiếp đến đường truyền Internet sử dụng tài khoản PPPoE do nhà mạng cung cấp. Cách triển khai này thường được sử dụng khi máy chủ Linux đóng vai trò router, gateway Internet, máy chủ NAT hoặc cần quay trực tiếp kết nối PPPoE thay vì sử dụng router riêng.

Trong bài viết này, chúng ta sẽ tìm hiểu PPPoE là gì, cách cài đặt gói PPPoE trên CentOS 7, cấu hình tài khoản nhà mạng, thiết lập tự động kết nối khi khởi động và kiểm tra trạng thái đường truyền.

Lưu ý: CentOS 7 đã hết vòng đời hỗ trợ chính thức. Hướng dẫn dưới đây phù hợp với các hệ thống CentOS 7 đang vận hành thực tế. Với hệ thống mới, nên cân nhắc sử dụng Rocky Linux, AlmaLinux hoặc một bản Linux còn được hỗ trợ lâu dài.

PPPoE là gì?

PPPoE là viết tắt của Point-to-Point Protocol over Ethernet, nghĩa là giao thức PPP chạy trên nền Ethernet.

PPPoE thường được các nhà cung cấp dịch vụ Internet sử dụng để xác thực thuê bao bằng username và password. Thay vì máy chủ nhận địa chỉ IP trực tiếp từ DHCP, hệ thống sẽ tạo một giao diện PPP logic sau khi quá trình xác thực thành công.

Một kết nối PPPoE thường có các thành phần:

  • Card mạng vật lý kết nối đến modem, ONT hoặc thiết bị mạng của nhà cung cấp.
  • Giao diện Ethernet như eth0 hoặc tên interface tương ứng.
  • Tài khoản PPPoE gồm username và password.
  • Giao diện PPP như ppp0.
  • Địa chỉ IP được nhà mạng cấp sau khi kết nối thành công.
  • DNS được cấu hình thủ công hoặc nhận tự động từ nhà mạng.

Sau khi kết nối thành công, máy chủ có thể sử dụng giao diện PPPoE để truy cập Internet.

PPPoE hoạt động như thế nào?

PPPoE gồm hai giai đoạn chính: Discovery và Session.

Giai đoạn Discovery

Ở giai đoạn đầu, máy khách PPPoE tìm kiếm Access Concentrator của nhà mạng.

Quá trình này thường gồm các gói:

  • PADI: Máy khách gửi yêu cầu tìm kiếm dịch vụ PPPoE.
  • PADO: Access Concentrator phản hồi dịch vụ có sẵn.
  • PADR: Máy khách lựa chọn Access Concentrator và gửi yêu cầu thiết lập phiên.
  • PADS: Access Concentrator xác nhận phiên và cấp Session ID.

Sau khi hoàn tất Discovery, hai bên có thể bắt đầu phiên PPPoE.

Giai đoạn Session

Trong giai đoạn Session, kết nối PPP được thiết lập giữa máy khách và thiết bị phía nhà mạng.

Tài khoản PPPoE được xác thực, sau đó hệ thống thực hiện đàm phán các thông số kết nối và nhận địa chỉ IP.

Trong quá trình hoạt động, dữ liệu Internet được truyền thông qua giao diện PPPoE.

Khi phiên kết nối bị đóng, hệ thống có thể thực hiện lại quá trình Discovery để tạo một phiên PPPoE mới.

pppoe

Mô hình kết nối PPPoE trên CentOS 7

Một mô hình phổ biến có thể được hình dung như sau:

Internet
   |
Nhà mạng
   |
ONT / Modem / Bridge
   |
eth0
   |
CentOS 7
   |
ppp0
   |
Internet

Trong trường hợp CentOS 7 đóng vai trò router cho mạng LAN, có thể triển khai:

Internet
   |
PPPoE
   |
CentOS 7
   |
eth1
   |
LAN

Khi đó:

  • eth0 kết nối với modem hoặc ONT ở chế độ bridge.
  • ppp0 là giao diện PPPoE ra Internet.
  • eth1 kết nối với mạng LAN.
  • CentOS 7 thực hiện routing và NAT cho các thiết bị phía LAN.

Chuẩn bị trước khi cấu hình PPPoE

Trước khi bắt đầu, cần chuẩn bị:

  • Máy chủ chạy CentOS 7.
  • Ít nhất một card mạng Ethernet.
  • Modem hoặc ONT hỗ trợ bridge.
  • Tài khoản PPPoE do nhà mạng cung cấp.
  • Username PPPoE.
  • Password PPPoE.
  • DNS nếu muốn cấu hình thủ công.

Nếu sử dụng máy chủ làm router, nên có ít nhất hai interface mạng.

Ví dụ:

eth0: kết nối WAN
eth1: kết nối LAN

Nếu chỉ cần máy chủ quay PPPoE trực tiếp để truy cập Internet, một interface Ethernet có thể đáp ứng nhu cầu.

Kiểm tra card mạng trên CentOS 7

Trước tiên kiểm tra danh sách network interface:

ip address show

Hoặc:

ip link show

Ví dụ kết quả:

1: lo: <LOOPBACK,UP,LOWER_UP>
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>
3: eth1: <BROADCAST,MULTICAST>

Trong ví dụ này, eth0 có thể được sử dụng làm interface kết nối đến modem hoặc ONT.

Tùy phiên bản hoặc cách đặt tên interface, máy chủ có thể sử dụng tên khác như:

ens160
ens192
enp1s0
enp2s0

Không nên mặc định sử dụng eth0 nếu hệ thống thực tế đang dùng tên interface khác.

Có thể xác định interface đang có link bằng:

ip link

Hoặc:

ethtool eth0

Cập nhật package trên CentOS 7

Trước khi cài đặt PPPoE, cập nhật package:

yum update -y

Sau đó kiểm tra package rp-pppoe:

rpm -qa | grep rp-pppoe

Nếu chưa có package, tiến hành cài đặt:

yum install rp-pppoe -y

Kiểm tra lại:

rpm -qa | grep rp-pppoe

Nếu package được cài đặt thành công, hệ thống đã sẵn sàng để cấu hình PPPoE.

Cấu hình PPPoE bằng pppoe-setup

CentOS 7 sử dụng bộ công cụ rp-pppoe, trong đó có chương trình pppoe-setup giúp tạo cấu hình PPPoE tương đối nhanh.

Chạy:

pppoe-setup

Chương trình sẽ lần lượt yêu cầu nhập các thông tin cần thiết.

Bước 1: Nhập username PPPoE

Hệ thống sẽ yêu cầu:

LOGIN NAME

Enter your Login Name:

Nhập username PPPoE do nhà mạng cung cấp.

Ví dụ:

Enter your Login Name: user123456

Không nên sử dụng tài khoản root của Linux nếu đó không phải username PPPoE thực tế.

Bước 2: Chọn card mạng PPPoE

Tiếp theo hệ thống yêu cầu lựa chọn Ethernet interface:

INTERFACE

Enter the Ethernet interface connected to the PPPoE modem

Nếu modem hoặc ONT đang kết nối vào eth0, nhập:

eth0

Nếu interface thực tế là ens160, nhập:

ens160

Điểm quan trọng là interface này phải được kết nối trực tiếp đến thiết bị cung cấp kết nối PPPoE.

Bước 3: Cấu hình kết nối liên tục

Chương trình sẽ hỏi:

Do you want the link to come up on demand,
or stay up continuously?

Nếu muốn kết nối PPPoE luôn được duy trì, chọn:

no

Thông thường đây là lựa chọn phù hợp với máy chủ hoặc router cần Internet hoạt động liên tục.

Nếu chọn kết nối theo nhu cầu, PPPoE có thể được kích hoạt khi có traffic. Tuy nhiên, mô hình này không phù hợp với nhiều máy chủ production cần duy trì kết nối Internet liên tục.

Bước 4: Cấu hình DNS

Tiếp theo chương trình yêu cầu DNS:

Enter the DNS information here:

Có thể sử dụng DNS của nhà mạng hoặc DNS công cộng.

Ví dụ:

8.8.8.8

DNS thứ hai:

1.1.1.1

Nếu nhà mạng tự cung cấp DNS, có thể sử dụng tùy chọn nhận DNS tự động nếu phù hợp với hệ thống.

Bước 5: Nhập password PPPoE

Nhập password do nhà mạng cung cấp:

Please enter your Password:
Please re-enter your Password:

Password sẽ được lưu trong cấu hình PPPoE của hệ thống.

Cần hạn chế quyền truy cập vào các file chứa thông tin xác thực để tránh lộ tài khoản PPPoE.

Bước 6: Cho phép user điều khiển kết nối

Chương trình sẽ hỏi:

Do you want to allow normal user to start or stop DSL connection?

Nếu chỉ quản trị viên mới được phép điều khiển kết nối, có thể chọn:

no

Đối với server production, nên hạn chế quyền điều khiển kết nối PPPoE nếu không cần thiết.

Bước 7: Cấu hình firewall

PPPoE setup có thể hỏi:

Choose a type of firewall (0-2):

Các lựa chọn cơ bản thường gồm:

0 - NONE
1 - STANDALONE
2 - MASQUERADE

NONE

Không tạo firewall rule tự động.

Lựa chọn này phù hợp khi máy chủ đã có hệ thống firewall riêng như firewalld, iptables hoặc firewall nằm ở lớp mạng bên ngoài.

STANDALONE

Thiết lập firewall cơ bản cho máy chủ hoạt động độc lập.

MASQUERADE

Phù hợp với trường hợp CentOS đóng vai trò gateway cho mạng LAN và thực hiện NAT.

Nếu máy chủ đang chạy nhiều dịch vụ như web, SSH, DNS, mail hoặc các ứng dụng khác, không nên phụ thuộc hoàn toàn vào bộ firewall đơn giản của pppoe-setup.

Trong môi trường production, nên xây dựng firewall riêng và kiểm soát rõ các port cần mở.

Bước 8: Tự động quay PPPoE khi khởi động

Chương trình sẽ hỏi:

Do you want to start this connection at boot time?

Chọn:

yes

Khi đó hệ thống sẽ tự động khởi tạo kết nối PPPoE khi CentOS 7 khởi động.

Đây là thiết lập nên sử dụng đối với server hoặc router cần duy trì Internet sau khi reboot.

Hoàn tất cấu hình PPPoE

Sau khi hoàn tất, chương trình sẽ hiển thị thông tin cấu hình và yêu cầu xác nhận.

Nếu các thông tin chính xác, chọn:

y

Cấu hình thường được tạo tại:

/etc/sysconfig/network-scripts/ifcfg-ppp0

Thông tin xác thực PPPoE có thể được lưu trong:

/etc/ppp/chap-secrets

và:

/etc/ppp/pap-secrets

File DNS có thể liên quan đến:

/etc/resolv.conf

Nên kiểm tra quyền truy cập các file chứa username và password PPPoE.

Khởi động kết nối PPPoE

Sau khi cấu hình xong, có thể kích hoạt PPPoE bằng:

ifup ppp0

Nếu kết nối thành công, hệ thống sẽ tạo interface ppp0.

Kiểm tra:

ip address show ppp0

Hoặc:

ip addr

Nếu thấy ppp0 có địa chỉ IP, kết nối PPPoE đã được thiết lập.

Kiểm tra trạng thái PPPoE

Có thể sử dụng:

pppoe-status /etc/sysconfig/network-scripts/ifcfg-ppp0

Nếu kết nối hoạt động, thông tin trả về sẽ cho biết trạng thái của PPPoE session và địa chỉ IP được cấp.

Có thể kiểm tra thêm route:

ip route

Thông thường sẽ xuất hiện default route thông qua giao diện PPPoE.

Kiểm tra kết nối Internet

Sau khi ppp0 đã hoạt động, kiểm tra kết nối bằng IP trước:

ping -c 4 8.8.8.8

Nếu ping thành công, kiểm tra DNS:

ping -c 4 google.com

Nếu ping IP thành công nhưng ping domain thất bại, cần kiểm tra cấu hình DNS.

Có thể kiểm tra DNS:

cat /etc/resolv.conf

Kiểm tra địa chỉ IP public

Địa chỉ IP của PPPoE có thể xem bằng:

ip addr show ppp0

Hoặc:

ip -4 addr show ppp0

Trong trường hợp nhà mạng cấp IP động, địa chỉ này có thể thay đổi sau mỗi lần kết nối lại.

Nếu sử dụng IP động cho dịch vụ server, cần cân nhắc Dynamic DNS hoặc một phương án quản lý địa chỉ phù hợp.

Cấu hình PPPoE tự động reconnect

Đối với server, việc PPPoE tự động kết nối lại sau khi đường truyền bị mất rất quan trọng.

Có thể kiểm tra cấu hình:

vi /etc/sysconfig/network-scripts/ifcfg-ppp0

Tùy cấu hình rp-pppoe, có thể thiết lập các thông số liên quan đến việc duy trì và tự động kết nối lại.

Ví dụ:

ONBOOT=yes

Trong một số cấu hình, có thể gặp:

DEMAND=yes

Tuy nhiên, DEMAND=yes có ý nghĩa kích hoạt kết nối theo nhu cầu và không nên mặc định sử dụng nếu mục tiêu là duy trì PPPoE liên tục.

Đối với server cần đường truyền luôn hoạt động, nên ưu tiên cấu hình kết nối liên tục và kiểm tra cơ chế reconnect của pppd.

Cấu hình PPPoE trong file ifcfg-ppp0

Có thể kiểm tra file:

cat /etc/sysconfig/network-scripts/ifcfg-ppp0

Một cấu hình PPPoE có thể chứa các thông số tương tự:

USERCTL=yes
BOOTPROTO=dialup
NAME=DSLppp0
DEVICE=ppp0
TYPE=xDSL
ONBOOT=yes
PIDFILE=/var/run/pppoe-adsl.pid
PERSIST=yes

Các thông số thực tế có thể khác nhau tùy phiên bản package và quá trình chạy pppoe-setup.

Không nên thay thế toàn bộ file cấu hình bằng một mẫu trên nếu chưa kiểm tra cấu hình được pppoe-setup tạo ra.

Xác định interface PPPoE

Sau khi kết nối, chạy:

ip address show

Ví dụ:

ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP>
    inet 113.x.x.x peer 10.x.x.x

Trong đó:

  • ppp0 là giao diện PPPoE.
  • inet là địa chỉ IPv4 được cấp.
  • peer là địa chỉ của đầu bên kia PPP connection.

Đây là interface được sử dụng để định tuyến traffic Internet.

PPPoE không kết nối được phải kiểm tra gì?

Nếu chạy:

ifup ppp0

nhưng không nhận được IP, nên kiểm tra theo thứ tự.

Kiểm tra cáp mạng

Xác nhận card mạng đang có link:

ethtool eth0

Tìm:

Link detected: yes

Nếu không có link, kiểm tra cáp, switch, modem hoặc ONT.

Kiểm tra interface

ip link show eth0

Interface phải ở trạng thái hoạt động.

Có thể kích hoạt:

ip link set eth0 up

Kiểm tra modem hoặc ONT

Nếu thiết bị nhà mạng đang chạy router mode, máy chủ có thể không thể quay PPPoE trực tiếp.

Trong mô hình này, modem hoặc ONT thường cần được cấu hình Bridge nếu muốn CentOS trực tiếp thực hiện PPPoE.

Kiểm tra username và password

Sai tài khoản PPPoE sẽ khiến quá trình xác thực thất bại.

Kiểm tra lại thông tin do nhà mạng cung cấp.

Kiểm tra log PPP

Có thể xem log hệ thống:

tail -f /var/log/messages

Hoặc lọc thông tin liên quan đến PPP:

grep -i ppp /var/log/messages

Các log này thường giúp xác định lỗi nằm ở quá trình Discovery, Authentication hay thiết lập IP.

Lỗi PPPoE Authentication Failed

Nếu log cho thấy lỗi xác thực, nguyên nhân phổ biến là:

  • Sai username.
  • Sai password.
  • Nhà mạng giới hạn số phiên PPPoE.
  • Tài khoản đang được sử dụng ở thiết bị khác.
  • Nhà mạng yêu cầu thông số xác thực đặc biệt.
  • Modem hoặc ONT chưa chuyển sang Bridge.
  • Kết nối vật lý chưa đi đúng VLAN hoặc interface.

Nên kiểm tra từng thành phần thay vì thay đổi nhiều thông số cùng lúc.

PPPoE kết nối được nhưng không truy cập Internet

Nếu ppp0 đã có IP nhưng không thể truy cập Internet, kiểm tra route:

ip route

Kiểm tra:

ip route get 8.8.8.8

Lệnh này cho biết traffic đến địa chỉ đích đang đi qua interface nào.

Nếu route chính xác, kiểm tra:

ping -c 4 8.8.8.8

Nếu ping IP thành công nhưng domain không hoạt động, tập trung kiểm tra DNS.

Trường hợp CentOS 7 làm router PPPoE

Nếu CentOS 7 quay PPPoE và cung cấp Internet cho mạng LAN, cần bật IP forwarding.

Chỉnh sửa:

vi /etc/sysctl.conf

Thêm:

net.ipv4.ip_forward = 1

Áp dụng:

sysctl -p

Kiểm tra:

sysctl net.ipv4.ip_forward

Kết quả cần là:

net.ipv4.ip_forward = 1

Sau đó cần cấu hình NAT để các máy trong LAN sử dụng địa chỉ PPPoE để truy cập Internet.

Ví dụ với iptables:

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Đồng thời cần xây dựng firewall phù hợp với topology thực tế thay vì chỉ sử dụng duy nhất rule NAT.

Khi nào nên sử dụng PPPoE trực tiếp trên server?

Quay PPPoE trực tiếp trên Linux phù hợp trong một số trường hợp:

  • Server đóng vai trò router.
  • Server làm gateway Internet.
  • Lab hoặc môi trường thử nghiệm mạng.
  • Máy chủ cần nhận IP trực tiếp từ phiên PPPoE.
  • Muốn loại bỏ router trung gian.
  • Cần kiểm soát routing và firewall trực tiếp trên Linux.

Tuy nhiên, trong hệ thống production, cần cân nhắc việc đặt firewall hoặc router chuyên dụng phía trước server nếu hệ thống yêu cầu độ ổn định và bảo mật cao.

PPPoE trên CentOS 7 có phù hợp với server production?

Có thể sử dụng, nhưng cần đánh giá kiến trúc tổng thể.

CentOS 7 đã hết vòng đời hỗ trợ nên không nên triển khai hệ thống mới dựa trên CentOS 7 nếu không có yêu cầu đặc biệt.

Nếu cần triển khai Linux PPPoE mới, nên cân nhắc các hệ điều hành hiện đại hơn như Rocky Linux, AlmaLinux hoặc các bản phân phối Linux được hỗ trợ lâu dài.

Ngoài ra, PPPoE có giới hạn về MTU. Trong nhiều hệ thống, MTU PPPoE thường là 1492 byte do PPPoE sử dụng thêm phần header.

Có thể kiểm tra MTU:

ip link show ppp0

Nếu gặp tình trạng một số website hoặc dịch vụ kết nối không ổn định, cần kiểm tra MTU, MSS và cơ chế fragmentation trên toàn bộ đường truyền.

Một số lệnh quản trị PPPoE quan trọng

Kiểm tra interface:

ip address show

Kiểm tra route:

ip route

Khởi động PPPoE:

ifup ppp0

Ngắt PPPoE:

ifdown ppp0

Kiểm tra trạng thái:

pppoe-status /etc/sysconfig/network-scripts/ifcfg-ppp0

Kiểm tra package:

rpm -qa | grep rp-pppoe

Xem log:

grep -i ppp /var/log/messages

Theo dõi log trực tiếp:

tail -f /var/log/messages

Kiểm tra IP PPPoE:

ip -4 addr show ppp0

Kiểm tra đường đi:

ip route get 8.8.8.8

Kiểm tra Internet:

ping -c 4 8.8.8.8

Kiểm tra DNS:

ping -c 4 google.com

Checklist cấu hình PPPoE trên CentOS 7

Trước khi triển khai, có thể kiểm tra theo checklist sau:

  • Xác định card mạng kết nối đến modem hoặc ONT.
  • Kiểm tra trạng thái link Ethernet.
  • Kiểm tra modem hoặc ONT đã Bridge nếu cần quay PPPoE trực tiếp.
  • Chuẩn bị username PPPoE.
  • Chuẩn bị password PPPoE.
  • Cài đặt rp-pppoe.
  • Chạy pppoe-setup.
  • Chọn đúng interface WAN.
  • Cấu hình DNS.
  • Thiết lập kết nối liên tục nếu cần.
  • Cấu hình tự động kết nối khi boot.
  • Kiểm tra file ifcfg-ppp0.
  • Khởi động ppp0.
  • Kiểm tra địa chỉ IP.
  • Kiểm tra default route.
  • Kiểm tra DNS.
  • Kiểm tra khả năng reconnect.
  • Nếu làm router, bật IP forwarding.
  • Cấu hình NAT.
  • Xây dựng firewall phù hợp.
  • Kiểm tra MTU và MSS nếu phát sinh lỗi kết nối.

Kết luận

Cấu hình PPPoE trên Linux CentOS 7 không quá phức tạp nếu hệ thống đã được chuẩn bị đúng về phần cứng và đường truyền. Công cụ rp-pppoe cung cấp pppoe-setup, giúp tạo nhanh cấu hình username, password, interface mạng, DNS và chế độ tự động kết nối.

Sau khi cấu hình, có thể sử dụng ifup ppp0, pppoe-status và các lệnh ip để kiểm tra trạng thái kết nối, địa chỉ IP và routing.

Nếu CentOS 7 đóng vai trò router cho mạng LAN, cần cấu hình thêm IP forwarding, NAT và firewall. Đối với môi trường production, nên đặc biệt chú ý đến bảo mật, khả năng tự động reconnect, MTU PPPoE và việc giám sát đường truyền.

Do CentOS 7 đã hết vòng đời hỗ trợ, việc sử dụng nền tảng này cho hệ thống mới không được khuyến nghị. Với các hệ thống triển khai mới, nên lựa chọn một bản Linux server hiện đại có thời gian hỗ trợ dài hơn để đảm bảo an toàn và thuận tiện cho quá trình vận hành lâu dài.

 

 

 

Tham khảo thêm PPPOE https://www.juniper.net/documentation/us/en/software/junos/interfaces-security-devices/topics/topic-map/security-interface-config-pppoe.html

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *