Skip to content

Cơ bản về Nguyễn Hồng Sơn

Muôn kiếp nhân sinh

Tác giả

Tác giả tên thật là Vũ Văn Du, du học ở Mỹ từ năm 1968. Ông có sự nghiệp làm việc và công tác khoa học ở nhiều trường đại học về công nghệ thông tin

Ông cũng là tác giả cuốn Hành trình về phương đông. Trang giới thiệu tác giả trong sách cũng giới thiệu đôi nét về ông. Tuy nhiên lại không có một phần kể về lịch sử của tác giả. Điểm này mình cho rằng là một thiếu sót của nhà xuất bản, vì nội dung các chủ đề ông viết khá đặc biệt, về những chuyện tâm linh khác thường mà theo mình thấy là phóng tác dựa trên những trải nghiệm của ông về mặt tinh thần. Việc giới thiệu bối cảnh của tác giả sẽ cho người đọc mạch suy nghĩ đồng điệu với tác giả, dễ dàng tiếp thu hơn.

Nội dung

Phần đầu, tác giả nói về nhân duyên viết nên cuốn sách. Nội dung cuốn sách viết theo lối đối thoại giữa các nhân vật, mà nhân vật chính trong câu chuyện này là một người bạn của tác giả. Ở đây tác giả sau khi nghe câu chuyện, cảm tác và thuật lại theo lời văn của ông.

Phần hai, nhân vật chính trải nghiệm và hồi tưởng về ký ức của bản thân ở một nơi gọi là Atlantis, một vùng gồm 3 quốc gia cổ xưa, có những tiến bộ khoa học vượt bậc nhưng ý thức đạo đức xã hội vẫn theo lối bầy đàn.

Nhân vật chính là một y sĩ xuất sắc, với một công cụ chữa bệnh có sức mạnh siêu phàm, có thể phân giải tế bào trong cơ thế người đến mức nguyên tử. Quốc gia của ông (Arya) nhỏ nhất trong 3 quốc gia, theo một tôn giáo tương tự thờ thần mặt trời. Hai quốc gia kia đấu đá với nhau và, nếu quốc gia nào thắng thì đất nước của ông sẽ trở thành nạn nhân tiếp theo. Ông này đã vi phạm điều cấm, học một thứ tà thuật của nước bên cạnh. Phát sinh dục vọng với một thánh nữ đồng trinh của tôn giáo mình.

Một ngày nọ, theo tính toán sâu xa, một loại tai nạn thiên nhiên khổng lồ, giống như trận lũ lụt Noah sẽ tới. Đất nước Arya của ông chọn ra một số người để đi lánh nạn, bao gồm nhiều thành phần của xã hội. Trong đó có vị thánh nữ Kris, nhưng không có ông. Vì ông này đã phạm điều cấm là học tà đạo. Vì dục vọng, ông này đã nghĩ cách và chiếm lấy cô gái kia, kết quả Arya bị xâm chiếm và giết chóc, trận đại hồng thủy nổi nên như dự báo. Tới đây kết thúc phần hai.

Phần ba, tác giả dựa vào các lý thuyết tôn giáo phương đông, bao gồm đạo Phật, Ấn độ giáo... và phương pháp Karma yoga để diễn giải nguồn gốc con người, sự vận động trong đời sống con người với mục tiêu hướng thiện. Luật Nhân quả và Luân hồi diễn ra trong vũ trụ, với quan điểm rõ ràng rằng ai làm gì đều có một hệ quả tương ứng. Tác giả cũng vận dụng một số lý thuyết khoa học thực hành để nói thêm và khẳng định góc nhìn của mình.

Phần bốn, nhân vật chính thông qua chiếc nhẫn được làm giống của Pharaoh mà nhớ về tiền kiếp.

Tại đây, ông là một hoàng tử bị lưu đày, nhờ được lực lượng giáo sĩ tín nhiệm, giúp đỡ, thành công đoạt được ngôi báu. Sau khi lên ngôi, ông đã ban hành nhiều luật lệ khắt khe, nâng cao sưu thuế, xây dựng nhiều điện thờ, đền đài để trả công giáo sĩ. Trong một lần vi hành, ông gặp một người y sĩ nghèo, than phiền về quyền lợi của giai cấp lãnh đạo và tầng lớp giáo sĩ, khiến dân nghèo nàn, chết nhiều vì xây lăng tẩm quá nhiều. Tại đây ông được nghe về phương pháp trị bệnh bằng tình yêu thương, một thứ mà ông thiếu thốn từ nhỏ bởi xuất thân của mình. Người y sĩ nghèo cùng cháu gái, hôn phu của cô ấy phàn nàn về việc Pharaoh đã tiêu tốn quá nhiều tài lực và cạn kiệt sức dân để xây nên điện thờ, lăng mộ cho ông và cả giới giáo sĩ nữa.

Nhân vật chính cũng bộc lộ một số suy nghĩ tiến bộ, về phương pháp thờ cúng thần thái dương suy cho cùng là vì lọi ích nhóm của giới giáo sĩ, thần thành thực sự nằm trong bản thân chứ không nằm trong buổi lễ cầu nguyện hay điện thờ.

Phần này tôi thấy cần phải nhận định rõ, nếu trải nghiệm về tiền kiếm này là có thật, thì những suy nghĩ được kể thông qua lời nói đó là của kiếp hiện tại, với những ý thức và năng lực của người hiện đại nhìn về quãng dài tiền kiếp ở quá khứ, chứ không phải đứng trên vị trí của một Pharaoh thời cổ đại khi tiếp xúc với dân chúng. Bởi lẽ, triết học và tôn giáo thời cổ đại, không thể xây dựng nên một con người có quyền lực tối cao về thần quyền và pháp quyền, lại có lòng cảm thông với sự thống khổ của dân chúng nghèo đói được. Nhất là tại Ai Cập cổ đại. Trải nghiệm vi hành này suy cho cùng, khó có thể diễn ra, mà nếu có thể diễn ra, cũng không thể nào thân thiện và có tình huống, một vị Pharaoh bị chính người dân của mình than phiền mà có thể bỏ qua, bình tĩnh như vậy được.

Phần năm, tác giả trải nghiệm tiếp tục làm Pharaoh của ông. Tại đây nhắc lại nhiều lần cái ý thức thần thành chính là tình yêu thương trong bản thể con người. Pharaoh này cũng bắt đầu chiến dịch thanh trừng nạn buôn thần bán thánh, lợi dụng tôn giáo làm lợi cho mình của giới giáo sĩ. Tuy nhiên, như đã nói ở phần trước, ông thất bại và cuối cùng không để lại thành tựu gì.

Điểm đáng chú ý ở phần này là đặt ra vấn đề các kim tự tháp không phải là lăng mộ mà là các đền thờ. Tác giả đưa ra nhiều dẫn chứng về cách xây dựng kim tự tháp trong thời kỳ cổ đại, cho đến bài trí cũng như hình vẽ trong kim tự tháp không giống với thông lệ an táng tại Ai Cập cổ đại, nhất là không tồn tại “Tử thư”. Tác giả cũng viện dẫn một số kim tự tháp có lối kiến trúc tương tự ở châu Mỹ, nhận định rằng những công trình kiến trúc này cùng mục đích là hoạt động tâm linh, tôn giáo. Đây là điểm cung bắt nguồn từ chủng tộc Atlatis cổ đại, khi tránh đại hồng thủy đã mang tới các vùng lãnh thổ khác nhau và truyền lại. Tác giả cũng viện dẫn trình độ kỹ thuật của Atlantis chính là yếu tố giúp xây dựng các kim tự tháp.

Phần sáu tác giả không đưa ra một hồi tưởng cụ thể gì, chủ yếu đặt nghi vấn về lịch sử các nền văn minh đã xuất hiện.

Các nhà khoa học phương Tây cho rằng, nền văn minh cổ nhất xuât phát từ vùng Ai Cập, La Mã, thông qua các công trình mà người dân còn để lại. Tuy nhiên tác giả nhận định, không phải nền văn minh nào cũng chú trọng việc xây cất công trình tôn giáo mà có thể họ phát triển mặt tinh thần, tôn giáo. Có nghĩa là, có thể ở Ấn độ và Trung Hoa cổ đại có những nền văn minh xưa hơn, có những thành tựu vượt bậc về mặt tinh thần. Tác giả cũng kể một số viện dẫn mà khoa học hiện đại chưa chứng minh được, đặt ra đó chính là điểm nghi vấn cốt lỗi, là lỗ hổng về lịch sử văn minh thế giới trong tiến trình phát triển của loài người.

Tác giả cũng nói sơ qua về quá trình phát triển tôn giáo, rằng các giáo sĩ đã tự tha hóa, không chuyên tâm tu tập. Từ đó, những pháp môn mật truyền không còn lưu lại, thay vào đó là các loại tà thuật, bùa chú, đa thần với mục đích dọa nạt, điều khiển nhân tâm con người.

Chương này hoàn toàn là các giả thuyết, không có gì rõ ràng, chỉ đơn giản nhắc lại các điều nghi vấn trong khoa học khảo cổ, lịch sử và viện vào đó để chỉ ra điều tác giả muốn nói.

Phần bày, tác giả tiếp tục nói về quy luật nhân quả, luân hồi, nghiệp báo của cá nhân và của cả cộng đồng, quốc gia. Tác giả đưa ra chu trình mới về cuộc đời luân hồi của con người, các quốc gia, nền văn mình, thậm chí là các hành tinh, hệ vũ trụ. Theo đó, mỗi đối tượng đều trải qua 4 quá trình thành lập, xây dựng, suy yếu và diệt vong. Dẫn chứng lại các quốc gia thần thoại như Atlantis, cổ đại như Ai cập đến cận - hiện đại như Tây Ban Nha.

Việc khẳng định các cá thể con người, toàn thể nhân loại bao gồm các nền văn minh diễn tiến theo các chu kỳ lên xuống mà không phải theo sơ đồ tịnh tiến, giống như thuyết tiến hóa của Đác Uyn. Đưa ra lý thuyết cho rằng, các sự vật, sự việc phát triển lúc lên, lúc xuống, thăng trầm theo các chu kỳ khác nhau, thời gian các chu kỳ, một phần của chu kỳ phụ thuộc vào nghiệp quả của con người, quốc gia đó. Tác giả cũng cho rằng, sự phát triển mạnh mẽ của khoa học kỹ thuật hiện đại chưa hẳn là bước tiến của nhân loại, mà đang đi đến những bước trong quá trình Hoại. Rằng con người đang phụ thuộc vào smart phone, các loại dịch bệnh diễn ra với những tác hại không thể lường. Điều này được củng cố trong đại dịch Covid-19 vừa qua.

Phần đầu của chương tác giả cũng đề cập đến phương pháp thiền định, chỉ một chút. Nội dung cơ bản về các quá trình tập luyện môn yoga, lưu ý giai đoạn đầu tập luyện thì chịu đau đớn hay suy nghĩ viễn vông là bình thường, cần phải kiên trì mới thành công.

Một vài đoạn trích

  • Cậu có biết tại sao như thế không? Tại vì mỗi đứa chạy điều hành động tùy theo lối cư xử của cha mẹ hay xã hội dành cho chúng. Tùy theo việc đứa trẻ được cha mẹ dạy dỗ như thế nào, được yêu thương hay bị đánh đập mà cuộc đời đối với nó trở nên đáng ghét hay đáng sống. Khi mới được sinh ra, đứa trẻ nào cũng có khả năng yêu thương vì nó được sinh ra qua tình yêu thương của cha mẹ. Nếu nó được sống trong yêu thương, nó sẽ biết thương yêu. Trái lại, nếu không được thế thì khả năng thương yêu của nó sẽ mất đi vào đó chị biết sống một cách vô ý thức. Làm sao nó có thể tương lai được nếu như trước giờ nó chưa hề được ai thương? Làm sao nó có thể yêu ai được khi nó không hề được ai yêu? Làm sao nó có thể thông cảm với nỗi đau của người khác khi khả năng yêu thương đồng cảm của nó đã bị thui chột? Do đó, mối quan hệ giữa nó và những người chung quanh sẽ trở nên hời hợt, và bị giới hạn trong những điều rất nhỏ, không thể vươn tầm mắt ra xa hay bay bổng lên cao được. Đầu óc của những đứa trẻ này sẽ chị dễ dàng trong những mối lợi nhỏ nhen, những thú vui vật chất tầm thường, những tham lam ích kỷ chứ không thể nào làm việc lớn được.

  • Các chiến thuyền của họ đi đến đâu thì gieo rắc kinh hoàng và dịch bệnh đến đó. Hầu hết những người da đỏ ở châu Mỹ, khoảng 2/3 dân số, đều chết vì những dịch bệnh do người Tây ban Nha mang vào. Như thế nên Tây Ban Nha mới chinh phục được Châu Mỹ một cách dễ dàng. Họ thẳng tay tiêu diệt các nền văn minh cổ, thay đổi phong tục tập quán, ngôn ngữ, tôn giáo và đặt nền móng cai trị hết sức tàn bạo cho những thuộc địa của họ. Thế mà ngày nay nhiều sách lịch sử vẫn còn ca ngợi tinh thần khai phá, chinh phục và đồng hóa những dân tộc “man rợ, thiếu văn minh” này của Tây Ban Nha. Đã đến lúc chúng ta cần nhìn lại những gì người Tây ban Nha đã làm được trong những thế kỷ trước và từ hạt nhân loại đã học được điều gì?

Nhận xét chung

Nhìn chung, cuốn sách cũng có những điểm mới đáng thú vị, việc đọc nó giống như luyện tập môn yoga, phải xem có phù hợp hay không. Có thể với trải nghiệm hiện tại của mình, cuốn sách này không phù hợp. Cuốn Hành trình về phương đông cũ của ông mình cũng thấy không phù hợp. Theo mình tìm hiểu, phần hai nội dung cũng không mới, chủ yếu vẫn kể lại, dùng lối dẫn chứng cũ để chứng minh. Bản thân mình thấy không phù hợp nên không có tiếp tục.

Nói về ưu điểm:

  • Tính mới, ưu điểm lớn nhất của cuốn sách này là tính mới. Bằng lối viết phóng tác theo những tưởng tượng, tác giả kể lại câu chuyện huyền bí, thần kỳ nhưng rất đỗi chân thật, mang đậm màu sắc tôn giáo phương đông. Tác giả cũng chỉ ra những nét đặc sắc vốn có của văn hóa, tôn giáo phương đông.

  • Tuy không phải sách self help, nhưng đây cũng xem như là một cuốn sách giúp người đọc có cách nhìn mới mẻ hơn, dịu dàng hơn với con người và tạo hóa xung quanh. Thông qua luật nhân quả, luân hồi là những điểm chính trong phật giáo, tác giả nói rằng, mọi lỗi lầm hay tai nạn của bản thân đều là nghiệp quả, cộng nghiệp trong quá khứ

Bên cạnh đó, cũng có những khuyết điểm, đó là:

  • Như đã đề cập ở trên, nhược điểm đầu tiên không thuộc về tác giả mà thuộc về nhà xuất bản. Muôn kiếp nhân sinh là một tập sách có nhiều cuốn. Vì vậy, tại cuốn đầu tiên cần giới thiệu rõ về tác giả, nhất là với lối viết phóng tác của tác giả. Nếu không có một cái nhìn tổng quan về cuộc đời, sự nghiệp của tác giả, người đọc khó lòng cảm khái được những điều mà tác giả cảm thấy.

  • Thứ hai, bố cục cuốn sách theo các chương thiên về các miền ký ức, theo dòng thời gian. Nhưng trong mỗi phần đều có những nội dung trùng nhau, không trọng tâm. Ví dụ như ở chương cuối nói về quy luật thành - trụ - hoại - diệt, tác giả lại không hề đi sâu vào quy luật này mà lại có một đoạn đầu nói về yoga. Tư tưởng luân hồi, nhân quả xuyên suốt nhưng không có nội dung mới, khá trùng lắp

  • Thứ ba, tác giả phê phán khoa học thực nghiệm. Cho rằng khoa học hiện đại chỉ đề cập đến các vấn đề mà có thể chứng minh được, có thể thấy được, cụ thể hóa thành công thức hay phương trình mà không đề cập đến phần tâm linh, bản chất sâu trong tâm hồn, linh hồn con người. Không giống như khoa học thực nghiệm, khi điều kiện giống nhau tuyệt đối thì các chất điểm là đối tượng nghiên cứu đều trải qua quá trình như nhau, tác giả cho rằng dù cho môi trường giống nhau thì mỗi một con người với linh hồn khác nhau sẽ cho ra trải nghiệm khác nhau. Điều này chắc chắn là không thể tái hiện. Nhưng tác giả dẫn chứng vô vàn các ví dụ, sự kiện lịch sử, phương trình khoa học, các câu nói trong sách của Plato để củng cố cho điều mình nói. Như vậy lại là dùng chính thực nghiệm để chứng minh ngược lại lý thuyết. Điều này mình nhận xét chủ quan là mang tính ngụy biện.

Homo Deus

Đây là cuốn sách thứ hai với cùng chủ đề, tiếp nối cuốn Sapiens đã quá nổi tiếng của Harari. Có lẽ với cái bóng quá lớn đó, cuốn thứ hai này không nổi trội lắm.

Và sau khi đọc thì mình cũng hiểu một phần lý do, không phải vì nó không hay, mà cảm tưởng như nó hơi...dài. Harari dành ra nửa cuốn để nói lại những điều đã nói trong Sapiens. Nhưng bởi nó tóm gọn, thành thử nội dung nếu chỉ đọc mỗi cuốn này thì có thể coi là thú vị, nhưng nếu đã đọc Sapiens thì thấy có phần nhát gừng.

Mặc dù vậy, phần đầu Harari trình bày một ý kiến mà mình vô cùng tâm đắc, xin trích trong hình dưới. Nhiều người cứ mãi thắc mắc học lịch sử để làm gì, trong đó có mình, thì có thể sau khi đọc những dòng này có suy nghĩ khác. Không phải trước đó mình không thích, không tìm hiểu, không quan tâm rồi nay thích, tìm hiểu, quan tâm tới những câu chuyện trong quá khứ. Mà là trước nay ta có thích, có tìm hiểu, rất quan tâm nhưng ta không giải thích được cái sự hiếu kỳ đó.

Lướt qua những trang sử dài về nhân loại, tôn giáo, chính trị, nhà nước, công ty... mà Harari đã nói rất kỹ ở Sapiens, Homo Deus đề cập tới những góc nhìn mới về tương lai trong vài ba thập kỷ tới, xa hơn chút là thế kỷ tới.

Con người hiện đại chúng ta, từ động cơ hơi nước tới nay chỉ mấy trăm năm, so với lịch sử cả vạn năm của loài người và nhiều hơn nữa thời gian của trái đất, thì chỉ như hạt cát trên sa mạc. Liệu chính chúng ta có tiến hóa thêm như Darwin đã phát biểu không? Nó sẽ diễn ra tự nhiên theo thuyết tiến hóa hay chính chúng ta tự ghép mô, chip, cơ giới hóa bản thân để tăng sức mạnh, và có khả năng nào, chúng ta nghiên cứu ra thuốc bất tử và trở thành Chúa hay Allah trong kinh thánh hay không? Chúa hứa rằng sẽ đưa ta về vườn địa đàng vào kiếp sau, còn các nhà khoa học tương lai mở ra thiên đường ngay trong kiếp này và chính tại nơi chúng ta ở. Cách mạng ở những thập kỷ tới là cách mạng "nâng cấp" thay vì "khắc phục".

Harari cũng nhắc tới một vài nghiên cứu tâm lý tại Harvard thường chỉ lấy mẫu nghiên cứu trong vài chục ngàn người là sinh viên tâm lý tại đó, mà bỏ qua mẫu lớn ở Á, Phi, rồi lấy đó kết luận phổ tâm lý con người có chuẩn xác hay không. Việc coi tâm lý con người, suy cho cùng, là những phản ứng sinh hóa tế bào, hoàn toàn có thể tái hiện bằng thuật toán thông qua một vài, hay dù vài ngàn thí nghiệm thì có thực sự phổ quát.

Dữ liệu lớn đã phát triển mạnh mẽ và tự thân nó dần trở thành "tôn giáo dữ liệu". Người ta làm gì cũng yêu cầu dữ liệu chứng minh, và từ dữ liệu, Google hay Facebook biết tôi thích gì hơn cả chính tôi nữa. Liệu rằng, trong tương lai, chúng ta sẽ thờ Thần dữ liệu thay vì Đấng sáng tạo. Liệu, một mô hình nhà nước tương lai đang hình thành tại Trung Quốc bởi chính sách dữ liệu của họ thay vì sự tôn sùng quyền cá nhân tại Mỹ và phương Tây. Vậy là, tới năm 2050, không phải mỗi công dân đều được bầu cử và ứng cử, mà chỉ có những công dân có điểm "tín dụng xã hội" cao hơn 50 (hoặc xếp loại B chả hạn) mới được bỏ phiếu. Liệu rằng xã hội kiểu mẫu sẽ như Tập Chủ tịch nói, nơi mà "người giữ chữ tín luôn làm được mọi việc một cách thuận lợi và an toàn, còn những kẻ bất tín sẽ không thể di chuyển được dù chỉ một bước".

Bình yên một chút trong thời kỳ suy thoái

Thời gian thững thờ trôi như gợn mây trắng, chăm chú nhìn thì thấy thật chậm mà bỏ lỡ một chút thì thấy đã tan biến từ khi nào. Quanh đi quẩn lại, ngày rộng tháng dài đã trôi về những chiều cuối năm. Những khó khăn và nỗi buồn năm qua đối với mình cũng trôi nhẹ nhàng qua như những đám mây. Thật khó mà tưởng tượng nổi, sau những dữ dội đầu tuổi đôi tư, mình đã vững vàng tới vậy trong suốt năm qua.

Mình không khỏi tự hào trong đợt tết năm ngoái, được gặp lại nhiều thầy cô, bạn bè sau thời gian dài xa cách, dù bởi hạn hẹp về thời gian hay do chính sự vô tâm của mình đi chăng nữa, vẫn yêu thương và dành cho mình những lời động viên giá trị. Thành tựu nhỏ nhoi của mình thoắt cái trở thành câu chuyện về chàng học sinh ngỗ ngược biết quay đầu là bờ trong câu chuyện của thầy cô.

Một năm mà mới tưởng như ngay hôm qua, ngay hôm mà mình vừa mới trúng tuyển thôi, nay đã tròn năm đèn sách. Cũng non nửa năm công tác tại vị trí mới. Vừa học vừa làm khiến mình hăng say, cũng chiếm lấy hầu hết thời gian của mình. Mình được mở con mắt ra nhiều hơn, làm nhiều công việc mà mình chưa biết, nghiên cứu những vấn đề vô cùng mới. Mình sống lại cảm giác thời còn chạy từng giờ từng phút thời đại học, ngồi cố gắng tìm bug tới 3, 4 giờ sáng không xong. Hoài niệm nhưng cũng không mong nó tiếp tục như vậy trong năm mới.

Bởi vài lần cố gắng quá sức nên mình bệnh nhiều, đau ốm thường xuyên hơn. Năm nay có lẽ là năm bệnh nhiều nhất của mình từ trước tới giờ. Có nhiều cái thật là dễ hiểu, như chạy bộ rồi chấn thương, hay dầm mưa dãi nắng rồi bị cảm. Nhưng cũng có lúc tự nhiên bị viêm cơ, sốt cao không hồi kết. Mình uống thuốc và cũng khỏe hơn, những tháng cuối năm suy cho cùng cũng đã yên bình mà qua đi. Cơ thể tuy có nặng nề hơn một chút nhưng chắc sẽ khá hơn vào năm sau. Mình tin như vậy, mình biết vậy.

Mình nhảy ra khỏi cái giếng, nhìn dòng sống với con mắt khác. Mình đã thôi đề cao những trải nghiệm bản thân mà lắng mình trong những trải nghiệm của người khác. Mình đọc và suy nghĩ cách mà những người vĩ đại họ giải thích thế giới. Mình tai nghe mắt thấy những điều xấu xa nhưng chợt nhận ra chính bản thân cũng đang đằm mình trong đó. Mình hiểu tại sao có người lại phải giếm đi cái bằng chứng họ đã từng vương lấy nó. Suy nghĩ thật nhiều, liệu rằng "Gần bùn mà chẳng hôi tanh mùi bùn" hay "Đi với bụt mặc áo cà sa, đi với ma mặc áo giấy". Những suy nghĩ và câu hỏi như dòng thời gian bất tận xuyên qua mình. Mình phải thật lớn để nghĩ đúng, làm đúng. Mình cũng buồn vì vài lời hứa mình chưa thực hiện được. Có cái đã không còn thực hiện được nữa. Mình nhận thức sâu sắc rằng năng lực của mình có hạn, có nhiều, và rất nhiều điều mình không thể làm được!

Rồi mình đọc thêm, biết thêm. Mình kể, nghe kể. Nghe và nói đưa tới bên mình một người cũng rất hay kể và nghe. Ngày còn bỡ ngỡ, bạn đã nhờ mình giúp ngay việc hệ trọng. Nào xôi vò, lợn béo, rượu tăm, đôi chiếu đôi chằm bạn mang. Quen, bạn mua cả cuốn thơ Đường về để dọa đọc cho mình nghe (nhưng đến giờ vẫn chưa đọc hết 2 trang). Mới, mình kể bạn nghe Feuerbach yêu như thế nào. Quen, mình kể bạn nghe đau khổ của Kant. Vài ngày cuối tuần hai đứa cứ thế trôi qua mà hết năm. Năm nay cảm ơn vì bạn đã đồng ý, cảm ơn bạn đã bỏ qua chuyện mình suýt dại nói lời ở tiệm bún đậu. Cũng cảm ơn các cụ kị đã phù hộ để con chuyển nó sang lúc đi xe.

Năm nay mình cũng được gặp lại những người bạn lâu năm. Xa mặt nhưng không cách lòng, chúng mình đã nghe và kể những câu chuyện cho nhau, như thể thời còn sinh viên. Thật đáng quý vì các bạn đều khỏe mạnh.

Cuối cùng, sau cả năm dài thành công và thất bại, mình vẫn còn sống sót. Trong giai đoạn chuyển mùa lạnh này (có thể thời gian lạnh giá còn kéo dài hơn nữa), mong rằng các bạn của mình khỏe. Khỏe mạnh để đương đầu với cơn lạnh của thời tiết và cả kinh tế nữa.

Chúc mừng tất cả chúng ta đã cùng sống sót.

Chúc mừng năm mới 2024.

Hướng dẫn cài đặt PowerDNS

Overall architecture

  • Kiến trúc trên bao gồm 3 server Authoriative chỉ phục vụ resolve private DNS, 2 server Recusor để resolve public DNS.
  • Client nếu muốn chỉ resolve private DNS thì chỉ cần trỏ về Authoritative, muốn resolve cả hai thì trỏ DNS server về Recursor.
  • Để resolve được public DNS, các server Recursor cần có public IP
  • Cài đặt VIP trên các server, tham khảo thêm tại Create VIPs by Keepalived.

Cài đặt PDNS Authoritative

Quy hoạch domain

  • Để PDNS hoạt động được trên nhiều server, ta tiến hành quy hoạch domain cho chúng như sau:
server domain
10.10.40.100 ns1.dns.stg
10.10.40.101 ns2.dns.stg
10.10.40.102 ns3.dns.stg
  • Thêm các records vào /etc/hosts của cả 3 server
    /etc/hosts
    1
    2
    3
    10.10.40.100 ns1.dns.stg
    10.10.40.101 ns2.dns.stg
    10.10.40.102 ns3.dns.stg
    

Cài đặt MySQL sử dụng làm backend cho PDNS

  • Có nhiều database có thể sử dụng làm backend cho PDNS, trong phạm vi bài viết này, mình sử dụng MySQL do có nhiều sự quen thuộc.
  • Tùy thuộc vào hệ điều hành, cách thức cài đặt mysql sẽ khác nhau. Tiếp cận từng bước theo MySQL Installation Guide để cài đặt.
  • Trước khi cài đặt, cần chuẩn bị script các bảng trong database.
    pdns.sql
    CREATE TABLE domains (
      id                    INT AUTO_INCREMENT,
      name                  VARCHAR(255) NOT NULL,
      master                VARCHAR(128) DEFAULT NULL,
      last_check            INT DEFAULT NULL,
      type                  VARCHAR(8) NOT NULL,
      notified_serial       INT UNSIGNED DEFAULT NULL,
      account               VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL,
      options               VARCHAR(64000) DEFAULT NULL,
      catalog               VARCHAR(255) DEFAULT NULL,
      PRIMARY KEY (id)
    ) Engine=InnoDB CHARACTER SET 'latin1';
    
    CREATE UNIQUE INDEX name_index ON domains(name);
    CREATE INDEX catalog_idx ON domains(catalog);
    
    
    CREATE TABLE records (
      id                    BIGINT AUTO_INCREMENT,
      domain_id             INT DEFAULT NULL,
      name                  VARCHAR(255) DEFAULT NULL,
      type                  VARCHAR(10) DEFAULT NULL,
      content               VARCHAR(64000) DEFAULT NULL,
      ttl                   INT DEFAULT NULL,
      prio                  INT DEFAULT NULL,
      disabled              TINYINT(1) DEFAULT 0,
      ordername             VARCHAR(255) BINARY DEFAULT NULL,
      auth                  TINYINT(1) DEFAULT 1,
      PRIMARY KEY (id)
    ) Engine=InnoDB CHARACTER SET 'latin1';
    
    CREATE INDEX nametype_index ON records(name,type);
    CREATE INDEX domain_id ON records(domain_id);
    CREATE INDEX ordername ON records (ordername);
    
    
    CREATE TABLE supermasters (
      ip                    VARCHAR(64) NOT NULL,
      nameserver            VARCHAR(255) NOT NULL,
      account               VARCHAR(40) CHARACTER SET 'utf8' NOT NULL,
      PRIMARY KEY (ip, nameserver)
    ) Engine=InnoDB CHARACTER SET 'latin1';
    
    
    CREATE TABLE comments (
      id                    INT AUTO_INCREMENT,
      domain_id             INT NOT NULL,
      name                  VARCHAR(255) NOT NULL,
      type                  VARCHAR(10) NOT NULL,
      modified_at           INT NOT NULL,
      account               VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL,
      comment               TEXT CHARACTER SET 'utf8' NOT NULL,
      PRIMARY KEY (id)
    ) Engine=InnoDB CHARACTER SET 'latin1';
    
    CREATE INDEX comments_name_type_idx ON comments (name, type);
    CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);
    
    
    CREATE TABLE domainmetadata (
      id                    INT AUTO_INCREMENT,
      domain_id             INT NOT NULL,
      kind                  VARCHAR(32),
      content               TEXT,
      PRIMARY KEY (id)
    ) Engine=InnoDB CHARACTER SET 'latin1';
    
    CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind);
    
    
    CREATE TABLE cryptokeys (
      id                    INT AUTO_INCREMENT,
      domain_id             INT NOT NULL,
      flags                 INT NOT NULL,
      active                BOOL,
      published             BOOL DEFAULT 1,
      content               TEXT,
      PRIMARY KEY(id)
    ) Engine=InnoDB CHARACTER SET 'latin1';
    
    CREATE INDEX domainidindex ON cryptokeys(domain_id);
    
    
    CREATE TABLE tsigkeys (
      id                    INT AUTO_INCREMENT,
      name                  VARCHAR(255),
      algorithm             VARCHAR(50),
      secret                VARCHAR(255),
      PRIMARY KEY (id)
    ) Engine=InnoDB CHARACTER SET 'latin1';
    
    CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
    
  • Sau khi cài đặt thành công, tạo database và user như sau:
    • Trên 10.10.40.100
      • Tạo database và user
        1
        2
        3
        4
        5
        create database dns1;
        CREATE USER 'pdns'@'10.10.40.101' IDENTIFIED WITH mysql_native_password BY 'Nm2zdZy46X2i44RN';
        GRANT USAGE ON *.* TO `pdns`@`10.10.40.101`;
        grant all privileges on dns1.* to 'pdns'@'10.10.40.101';
        flush privileges;
        
      • Import file database đã chuẩn bị ở trên vào database
        mysql -u root -p dns1 < pdns.sql
        
    • Trên 10.10.40.101
      • Tạo database và user
        1
        2
        3
        4
        5
        create database dns2;
        CREATE USER 'pdns'@'10.10.40.101' IDENTIFIED WITH mysql_native_password BY 'Nm2zdZy46X2i44RN';
        GRANT USAGE ON *.* TO `pdns`@`10.10.40.101`;
        grant all privileges on dns2.* to 'pdns'@'10.10.40.101';
        flush privileges;
        
      • Import file database đã chuẩn bị ở trên vào database
        mysql -u root -p dns2 < pdns.sql
        
      • Login vào database và thêm vào dòng sau:
        insert into supermasters values ('10.10.40.100','ns2.dns.stg','');
        
    • Trên 10.10.40.102
      • Tạo database và user
        1
        2
        3
        4
        5
        create database dns3;
        CREATE USER 'pdns'@'10.10.40.102' IDENTIFIED WITH mysql_native_password BY 'Nm2zdZy46X2i44RN';
        GRANT USAGE ON *.* TO `pdns`@`10.10.40.102`;
        grant all privileges on dns3.* to 'pdns'@'10.10.40.102';
        flush privileges;
        
      • Import file database đã chuẩn bị ở trên vào database
        mysql -u root -p dns3 < pdns.sql
        
      • Login vào database và thêm vào dòng sau:
        insert into supermasters values ('10.10.40.100','ns3.dns.stg','');
        

Cài đặt PDNS

  • Tiếp cận từng bước theo powerdns repo để cài đặt phiên bản phù hợp. CentOS74.7.4 được sử dụng trong bài này. Cài đặt nó và các thư viện cần sử dụng trên cả ba server:
    1
    2
    3
    4
    yum -y update
    yum install -y epel-release yum-plugin-priorities
    curl -o /etc/yum.repos.d/powerdns-auth-47.repo https://repo.powerdns.com/repo-files/el-auth-47.repo
    yum install -y pdns pdns-backend-mysql mysql-devel
    
  • Kiểm tra kết quả cài đặt
    pdns_server --version
    
    Kết quả phải tương tự như:
    Nov 15 11:34:18 PowerDNS Authoritative Server 4.7.4 (C) 2001-2022 PowerDNS.COM BV
    Nov 15 11:34:18 Using 64-bits mode. Built using gcc 8.3.1 20190311 (Red Hat 8.3.1-3) on Apr 17 2023 07:39:17 by root@89eec22969dd.
    Nov 15 11:34:18 PowerDNS comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it according to the terms of the GPL version 2.
    Nov 15 11:34:18 Features: libcrypto-ecdsa libgeoip libmaxminddb lua lua-records PKCS#11 protobuf sodium curl DoT 
    Nov 15 11:34:18 Built-in modules: 
    Nov 15 11:34:18 Configured with: " '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu'
    

Tiếp theo, config pdns trên các server

Master

Chỉnh sửa config của pdns tại /etc/pdns/pdns.conf

/etc/pdns/pdns.conf
# Allow zone transfers from specified IP addresses
allow-axfr-ips=127.0.0.0/8,::1, 10.10.40.101/32, 10.10.40.102/32
# Notify these IP addresses when the zone is updated
also-notify=10.10.40.101,10.10.40.102
# Set the local port for incoming DNS queries
local-port=53
# Enable PowerDNS API
api=yes
# API key for authentication
api-key=citadel-ambiguous-reapply-applause-monsoon
# Specify the directory where PowerDNS looks for its configuration files
config-dir=/etc/pdns
# Run PowerDNS as a daemon in the background
daemon=yes
# Enable or disable zone transfers
disable-axfr=no
# Enable or disable syslog logging
disable-syslog=no
# Enable the guardian process
guardian=yes
# Launch with the gmysql backend
launch=gmysql
# MySQL database settings for gmysql backend
gmysql-host=10.10.40.100
gmysql-port=3306
gmysql-user=pdns
gmysql-password=Nm2zdZy46X2i44RN
gmysql-dbname=dns1
gmysql-dnssec=yes
# Specify local IP addresses to bind to
local-address=10.10.40.100,10.10.40.111
# Log DNS details and queries
log-dns-details=yes
log-dns-queries=yes
# Log timestamps with log entries
log-timestamp=yes
# Set the logging facility and log level
logging-facility=6
loglevel=9
# Configure PowerDNS as a master server
master=yes
# Time-to-live for negative DNS query cache
negquery-cache-ttl=60
# Allow binding to non-local addresses
non-local-bind=yes
# Specify local IP addresses for queries
query-local-address=10.10.40.100,10.10.40.111
# Enable or disable query logging
query-logging=no
# Set the server ID
server-id=ns1
# Set the group and user ID for the PowerDNS process
setgid=pdns
setuid=pdns
# Enable the webserver
webserver=yes
# Webserver address and allowed IP addresses
webserver-address=127.0.0.1
webserver-allow-from=127.0.0.1,::1,10.10.40.100

Slave

Tương tự như master, thay đỏi địa chỉ trên mỗi slave cho phù hợp

/etc/pdns/pdns.conf
# Specify IP addresses allowed to notify this server
allow-notify-from=10.10.40.100/32
# Enable automatic provisioning of secondary zones
autosecondary=yes
# Specify the directory where PowerDNS looks for its configuration files
config-dir=/etc/pdns
# Run PowerDNS as a daemon in the background
daemon=yes
# Enable or disable syslog logging
disable-syslog=no
# Enable the guardian process
guardian=yes
# Set the local port for incoming DNS queries
local-port=53
# Launch with the gmysql backend
launch=gmysql
# MySQL database settings for gmysql backend
gmysql-host=10.10.40.101
gmysql-port=3306
gmysql-user=pdns
gmysql-password=Nm2zdZy46X2i44RN
gmysql-dbname=dns2
gmysql-dnssec=yes
# Specify local IP addresses to bind to
local-address=10.10.40.101,10.10.40.112
# Log DNS details and queries
log-dns-details=yes
log-dns-queries=yes
# Log timestamps with log entries
log-timestamp=yes
# Set the logging facility and log level
logging-facility=6
loglevel=9
# Time-to-live for negative DNS query cache
negquery-cache-ttl=60
# Allow binding to non-local addresses
non-local-bind=yes
# Specify local IP addresses for queries
query-local-address=10.10.40.101,10.10.40.112
# Enable or disable query logging
query-logging=yes
# Specify that this server is a secondary server
secondary=yes
# Set the server ID
server-id=ns2
# Set the group and user ID for the PowerDNS process
setgid=pdns
setuid=pdns
# Specify that this is a slave server
slave=yes
# Time interval for checking for zone updates (in seconds)
slave-cycle-interval=60
# Enable the webserver
webserver=yes
# Webserver address
webserver-address=127.0.0.1
  • Start pdns trên cả 3 server
    systemctl enable pdns
    systemctl start pdns
    
  • Kiểm tra trạng thái service, kết quả nên là
     pdns.service - PowerDNS Authoritative Server
       Loaded: loaded (/usr/lib/systemd/system/pdns.service; disabled; vendor preset: disabled)
       Active: active (running) since T3 2023-11-14 15:35:35 +07; 23h ago
         Docs: man:pdns_server(1)
               man:pdns_control(1)
               https://doc.powerdns.com
     Main PID: 29723 (pdns_server)
       CGroup: /system.slice/pdns.service
               └─29723 /usr/sbin/pdns_server --socket-dir=/run/pdns --guardian=no --daemon=no --disable-syslog --log-timestamp=no --write-pid=no
    

Cài đặt PowerDNS-Admin

  • Đây là một web UI sử dụng pdns API để quản lý cluster. tiếp cận từng bước theo PowerDNS-Admin wiki để cài đặt.
  • Sử dụng Supervisord để setup web server
  • Thay đổi file config của PowerDNS-Admin
    /etc/pdns/powerdns-admin.py
    import os
    import urllib.parse
    basedir = os.path.abspath(os.path.dirname(__file__))
    
    ### BASIC APP CONFIG
    SALT = '$2b$12$yLUMTIfl21FKJQpTkRQXCu'
    SECRET_KEY = 'AWrjcUZbeofCcTUju4nzW62rprFDcCKn'
    BIND_ADDRESS = '10.10.40.100'
    PORT = 9191
    HSTS_ENABLED = False
    OFFLINE_MODE = False
    FILESYSTEM_SESSIONS_ENABLED = False
    SESSION_COOKIE_SAMESITE = 'Lax'
    CSRF_COOKIE_HTTPONLY = True
    
    ### DATABASE CONFIG
    SQLA_DB_USER = 'pdnsadminuser'
    SQLA_DB_PASSWORD = 'jGabSjQUdMjHQ8RD6b'
    SQLA_DB_HOST = '10.10.40.100'
    SQLA_DB_NAME = 'powerdnsadmin'
    SQLALCHEMY_TRACK_MODIFICATIONS = True
    
    ### DATABASE - MySQL
    SQLALCHEMY_DATABASE_URI = 'mysql://{}:{}@{}/{}'.format(
        urllib.parse.quote_plus(SQLA_DB_USER),
        urllib.parse.quote_plus(SQLA_DB_PASSWORD),
        SQLA_DB_HOST,
        SQLA_DB_NAME
    )
    
    ### DATABASE - SQLite
    # SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'pdns.db')
    
    # SAML Authnetication
    SAML_ENABLED = False
    SAML_ASSERTION_ENCRYPTED = True
    
  • Start dịch vụ PowerDNS-Admin
    supervisorctl reread
    supervisorctl update
    supervisorctl start powerdnsadmin
    
  • Kiểm tra trạng thái của dịch vụ
    supervisorctl status powerdnsadmin
    
  • Kết quả nên là

    powerdnsadmin                    RUNNING   pid 45197, uptime 5 days, 3:44:25
    

  • Tới đây, cài đặt xem như đã hoàn tất. Nếu không có nhu cầu sử dụng recursor, client có thể phân giải DNS bằng cách thay đổi DNS server về các VIP/IP của pdns server. Người dùng có thể vào giao diện web tại http://10.10.40.100:9191 để sử dụng PowerDNS-Admin

  • Sau khi vào giao diện, tạo tài khoản mới, tài khoản đầu tiên đươc tạo sẽ là tài khoản admin.
  • Sau khi có tài khoản, tiến hành đăng nhập. Và cấu hình API để có PowerAdmin có thể sử dụng pdns API

    • Tại thanh công cụ bên trái, chọn SettingsPDNS
    • Nhập vào thông tin URL và API key được cài đặt ở master

    powerdns-admin

  • Tạo domain dns.stg với các records như sau:

    powerdns-admin-records

Cài đặt PDNS Recursor

  • Tiếp cận từng bước theo Recursor Installation để cài đặt pdns-recursor theo hệ điều hành của mình.
  • Config recursor, thay đổi địa chỉ IP và các config khác cho phù hợp
    • recursor.conf: file config chính của recursor
      /etc/pdns-recursor/recursor.conf
      # Read allowed IP addresses from a file
      allow-from-file=/etc/pdns-recursor/allow
      # Enable or disable syslog logging
      disable-syslog=no
      # Log DNSSEC validation failures as warnings
      dnssec-log-bogus=yes
      # Specify a file with forward zones
      forward-zones-file=/etc/pdns-recursor/forward-zones
      # Specify local IP addresses to bind to
      local-address=127.0.0.1,10.10.40.103,10.10.40.116,10.10.40.117
      # Set the local port for incoming DNS queries
      local-port=53
      # Set the logging facility and log level
      logging-facility=6
      loglevel=6
      # Maximum number of cache entries
      max-cache-entries=1000000
      # Maximum Time-to-Live (TTL) for cached items
      max-cache-ttl=3600
      # Time-to-Live (TTL) for negative cache entries
      max-negative-ttl=0
      # Allow binding to non-local addresses
      non-local-bind=yes
      # Enable or disable quiet mode
      quiet=no
      # Suffix for security poll queries
      security-poll-suffix=
      # Set the group and user ID for the PowerDNS recursor process
      setgid=pdns-recursor
      setuid=pdns-recursor
      # Number of worker threads
      threads=8
      
    • forward-zones: recursor sẽ đi hỏi DNS của các domain được tương ứng với các địa chỉ được cấu hình trong file. Config dưới đây nghĩa là, nếu client yêu cầu resolve domain dns.stg thì sẽ hỏi các server pdns Authoritative, còn không thì sẽ trả DNS public (của google và cloudflare)
      /etc/pdns-recursor/forward-zones
      dns.stg =10.10.40.111, 10.10.40.112, 10.10.40.102
      +.=8.8.8.8, 1.1.1.1
      
    • allow: recursor sẽ chỉ cho các server có IP được quy dịnh đươc resolve domain
      /etc/pdns-recursor/allow
      1
      2
      3
      127.0.0.0/8
      10.0.0.0/8
      192.168.0.0/16
      

Hướng dẫn đổi tên NIC bền vững trên hệ điều hành linux

Trong quá trình vận hành hệ thống, nhiều lúc chúng ta phải thay đổi hạ tầng. Trong nhiều tình huống như vậy, một số hệ thống được cài đặt và cấu hình dựa trên MAC/NIC. Trong bài viết này, hướng dẫn cách đổi tên card mạng để bền vững trên hệ thống mới.

  1. Disable the predictable naming rule by system.
    • Mở file kernel booting của hệ thống tại /etc/default/grub
      vim /etc/default/grub
      
    • Thêm net.ifnames=0 vào dòng GRUB_CMDLINE_LINUX
      /etc/default/grub
      ...
      GRUB_CMDLINE_LINUX="crashkernel=auto net.ifnames=0 rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
      ...
      
    • Thực hiện chạy câu lệnh để tạo lại cấu hình GRUB với các tham số kernel đã update.
      sudo grub2-mkconfig -o /boot/grub2/grub.cfg
      
  2. Tạo naming rule để ghi đè default network
    • Mở file tạo rule ghi đè
      vim /etc/udev/rules.d/70-persistent-net.rules
      
    • Thêm vào dòng sau, thay đổi MAC với địa chỉ MAC của bạn. Rule này sẽ đổi tên card mạng hiện có eth0 thành sushi. Nếu có nhiều card mạng cần đổi tên/cấu hình. Lần lượt thay số prefix 70 thêm các số khác.
      /etc/udev/rules.d/70-persistent-net.rules
      SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:a9:7a:e1", ATTR{type}=="1", KERNEL=="eth0", NAME="sushi"
      
    • Reboot và cấu hình sẽ được apply