Wednesday, 5 February 2020

Grep, SilverSearcher (ag), RipGrep (rg) và file ẩn

Trên *NIX, một file được gọi là file ẩn (hidden file) khi tên của nó bắt đầu với dấu chấm (.).

Các file phổ biến thường gặp là các file để cấu hình các phần mềm, ví dụ: .vimrc .bashrc .gitignore .gitlabci,yml ...

Image by OpenClipart-Vectors from Pixabay

Khi muốn tìm một từ khóa bất kỳ trong các file ở thư mục hiện tại, ta có thể dùng grep:

grep -Rin noi_dung .  # dấu chấm đại diện cho thư mục hiện tại

$ mkdir testdir; echo pika > testdir/.filepassword
$ cd testdir/
$ grep -Rin pika .
./.filepassword:1:pika

Một nhược điểm của grep so với các chương trình "hiện đại" hơn như SilverSearcher (ag) hay RipGrep (rg) là

Monday, 3 February 2020

Cài Unbound làm caching DNS resolver trên máy ảo OpenBSD 6.6

 DNS Server (recursive name server)


Người dùng máy tính đặc biệt ở Việt Nam đã từng biết đổi DNS để vào Facebook những ngày mạng còn "chậm".

Những con số như 8.8.8.8 (Google DNS), 208.67.222.222 (OpenDNS) hay 1.1.1.1 (Cloudflare DNS) không còn lạ gì.
Những địa chỉ IP này có chạy 1 DNS server làm nhiệm vụ trả lời IP tương ứng của các domain được hỏi.

Ví dụ facebook.com có (những) IP là gì?
$ nslookup facebook.com 8.8.8.8
Server:        8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:    facebook.com
Address: 31.13.95.36
Name:    facebook.com
Address: 2a03:2880:f102:83:face:b00c:0:25de

authoritative name server vs recursive resolver

Chương trình chạy ở 8.8.8.8 sẽ tìm địa chỉ IP tương ứng với domain facebook.com như bạn đã yêu cầu. Đây là một dịch vụ "trung gian", nó sẽ đi hỏi các "root nameservers" (.com, .org...) để tìm câu trả lời, bản thân nó không có câu trả lời.
Việc đi hỏi chỗ khác để lấy câu trả lời gọi là "recursive query", bởi chỗ khác cũng có thể không có câu trả lời và phải đi hỏi tiếp cấp cao hơn. Chương trình thực hiện tính năng tìm kiếm "hộ" này gọi là Recursive resolver. Khác với chương trình có câu trả lời TRỰC TIẾP cho 1 domain cụ thể - gọi là authoritative name server.

Ưu điểm của các dịch vụ này

- Tính sẵn sàng cao, ít khi bị sập (đều do những "ông lớn" internet vận hành)
- Có thể nhanh hơn, ví dụ với Google DNS 8.8.8.8, khi được truy cập, một server của Google nằm gần bạn nhất sẽ trả lời. (Phía dưới số 8.8.8.8 không phải là 1 máy ở đâu đó, mà là rất nhiều máy, và nó chọn cái nào gần bạn nhất)

NHƯỢC ĐIỂM

- Privacy (sự riêng tư): mọi câu hỏi của bạn, dịch vụ DNS đều biết. Tức là bạn vào website nào, thì Google (cho 8.8.8.8), hay Cloudflare (1.1.1.1), ... đều biết cả. Nghe có vẻ không to tát, nhưng hãy nghĩ xem, chỉ cần biết các trang web bạn vào ngày hôm nay, cũng phần LỚN biết bạn đang làm gì (youtube, facebook, hay các trang web top truy cập của Việt Nam)

Unbound

Sunday, 2 February 2020

Vagrant - vẫn là công cụ quản lý máy ảo tuyệt vời ở năm 2020

- What???
- Yeah!!!

Vagrant không phải mới, không phải lạ, ra đời cỡ 10 năm trước hay hơn.

Vagrant là gì


/ˈveɪɡr(ə)nt/ A person without a settled home or regular work who wanders from place to place and lives by begging.


Vagrant là công cụ để quản lý (tạo/bật/tắt) máy ảo, chạy ngon lành trên các hệ điều hành phổ biến.
Vagrant là công cụ không thể thiếu của developer thời trước khi có Docker.

Bạn có thể tạo một máy ảo nhanh nhất trong bao nhiêu phút?

- Tải file ISO , vd Ubuntu
- Cài Virtualbox, hay KVM hay VMWare
- Cài máy ảo, format ổ đĩa, next next next ..., tùy vào từng hệ điều hành sẽ phải thao tác khác nhau.

Hoặc đơn giản với vagrant:

- Cài KVM hay Virtualbox hay VMWare
- Chạy lệnh: vagrant init
- Sửa file Vagrantfile vừa được tạo, thay box "base" bằng box mong muốn, ví dụ  "generic/ubuntu1804" (tìm các "box" trên https://vagrantcloud.com/search)
- Chạy lệnh: vagrant up
- Vagrant sẽ tải "box" về máy trong lần đầu sử dụng box này (các lần sau vẫn dùng box generic/ubuntu1804 sẽ không cần tải lại ở các lần sau), sau đó máy sẽ bật lên trong vòng ~< 1 phút, không cần cài đặt
- SSH bằng lệnh: vagrant ssh

Các câu lệnh vagrant cần thiết