Cách dễ nhất và được đề xuất là gán địa chỉ IP tĩnh cho thiết bị trong mạng LAN của bạn. Bắt đầu từ bản phát hành 17.10, Netplan là công cụ quản lý mạng mặc định trên Ubuntu, thay thế cho file cấu hình /etc/network/interfaces trước đây.
Netplan sử dụng các file cấu hình theo cú pháp YAML. Để định cấu hình giao diện mạng với Netplan, bạn cần tạo mô tả YAML cho interface đó và Netplan sẽ tạo các file cấu hình cần thiết cho công cụ kết xuất mà bạn đã chọn.
Netplan hiện hỗ trợ NetworkManager và Systemd-networkd. NetworkManager chủ yếu được sử dụng trên các máy tính để bàn trong khi Systemd-networkd được sử dụng trên các máy chủ không có giao diện.
$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:50:56:ad:c7:0f brd ff:ff:ff:ff:ff:ff
3: ens224: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 00:50:56:ad:e9:08 brd ff:ff:ff:ff:ff:ff
Các file cấu hình Netplan được lưu trữ trong thư mục /etc/netplan và có phần mở rộng là đuôi file yaml. Có thể bạn sẽ tìm thấy một hoặc hai file YAML trong thư mục này. Mỗi server sẽ có các thiết lập có thể khác với các server khác. Thông thường, file được đặt tên là 01-netcfg.yaml, 50-cloud-init.yaml, hoặc NN_interfaceName.yaml, nhưng trong hệ thống của bạn, nó có thể khác.
1. Access vlan.
Hãy mở file cấu hình YAML.
vi /etc/netplan/50-cloud-init.yaml
network:
ethernets:
ens192:
addresses:
- 192.168.13.225/23
dhcp4: no
gateway4: 192.168.12.5
nameservers:
addresses:
- 8.8.8.8
ens224:
addresses:
- 192.168.13.242/23
dhcp4: no
nameservers:
addresses:
- 8.8.8.8
version: 2
Hoặc các bạn có thể sử dụng cấu hình này thay cho cấu hình trên để cài đặt gateway cũng được.
network:
version: 2
renderer: networkd
ethernets:
ens224:
addresses:
- 192.168.13.242/23
dhcp4: no
nameservers:
addresses:
- 8.8.8.8
ens192:
dhcp4: false
dhcp6: false
addresses: [192.168.13.225/23]
# gateway4 is deprecated, use routes instead
routes:
- to: default
via: 192.168.12.5
metric: 100
on-link: true
mtu: 1500
nameservers:
addresses: [8.8.8.8]
Trước khi thay đổi cấu hình, hãy giải thích ngắn gọn về mã.
Mỗi file Yaml bắt đầu bằng network khóa có ít nhất hai phần tử bắt buộc. Yếu tố bắt buộc đầu tiên là phiên bản của định dạng cấu hình mạng và yếu tố thứ hai là loại thiết bị. Loại thiết bị có thể là ethernets, bonds, bridges, hoặc vlans.
Trong phần loại thiết bị (trong trường hợp này là ethernets), bạn có thể chỉ định một hoặc nhiều interface, trong ví dụ này mình chỉ sử dụng 2 interface ens192 và ens224.
Để gán địa chỉ IP tĩnh cho ens192 và ens224, hãy chỉnh sửa file như sau:
- Đặt DHCP thành dhcp4: no.
- Chỉ định địa chỉ IP tĩnh 192.168.13.225/23 và 192.168.13.242/23 tương ứng với file cấu hình ở trên. Bên dưới addresses bạn có thể thêm một hoặc nhiều địa chỉ IP IPv4 hoặc IPv6 sẽ được gán cho interface.
- Chỉ định gateway4: 192.168.12.5 với ens192, còn ens224 mình không dùng gateway nên mình bỏ qua phần này.
- Trong nameservers cho phép bạn khai báo địa chỉ IP addresses của DNS [8.8.8.8, 1.1.1.1].
sudo netplan apply
Xác minh các thay đổi bằng cách gõ ip addr show dev ens224 đối với interface ens224 và ip addr show dev ens192 đối với interface ens192.
$ ip addr show dev ens224
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:ad:e9:08 brd ff:ff:ff:ff:ff:ff
inet 192.168.13.242/23 brd 192.168.13.255 scope global ens224
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fead:e908/64 scope link
valid_lft forever preferred_lft forever
Bạn đã gán thành công IP tĩnh cho server chạy Ubuntu của mình.
2. Vlan trunking.
Nếu bạn sử dụng trunking thì có thể sử dụng cấu hình bên dưới.
network:
version: 2
ethernets:
ens33: {}
ens37:
addresses:
- 192.168.1.21/24
vlans:
vlan.101:
id: 101
link: ens33
addresses: [10.0.101.1/24]
gateway4: 10.0.101.254
nameservers:
addresses: [8.8.8.8]
vlan.102:
id: 102
link: ens33
addresses: [10.0.102.1/24]
Sau khi netplan apply, bạn sẽ thấy interface được tag thêm vlanid và được gán ip tương ứng như bạn đã khai báo.
$ ip addr
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:18:95:5e brd ff:ff:ff:ff:ff:ff
inet6 fe80::20c:29ff:fe18:955e/64 scope link
valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:18:95:68 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.21/24 brd 192.168.1.255 scope global ens37
valid_lft forever preferred_lft forever
inet6 2001:ee0:4f86:10a0:20c:29ff:fe18:9568/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 2591988sec preferred_lft 604788sec
inet6 fe80::20c:29ff:fe18:9568/64 scope link
valid_lft forever preferred_lft forever
4: vlan.101@ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:18:95:5e brd ff:ff:ff:ff:ff:ff
inet 10.0.101.1/24 brd 10.0.101.255 scope global vlan.101
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe18:955e/64 scope link
valid_lft forever preferred_lft forever
5: vlan.102@ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:18:95:5e brd ff:ff:ff:ff:ff:ff
inet 10.0.102.1/24 brd 10.0.102.255 scope global vlan.102
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe18:955e/64 scope link
valid_lft forever preferred_lft forever
Mình gán gateway cho các vlanid tương ứng như bảng route table sau.
$ ip r
default via 10.0.101.254 dev vlan.101 proto static
10.0.101.0/24 dev vlan.101 proto kernel scope link src 10.0.101.1
10.0.102.0/24 dev vlan.102 proto kernel scope link src 10.0.102.1
192.168.1.0/24 dev ens37 proto kernel scope link src 192.168.1.21
Tiến hành kiểm tra kết nối, ta có kết quả như dưới.
$ ping 10.0.101.254
PING 10.0.101.254 (10.0.101.254) 56(84) bytes of data.
64 bytes from 10.0.101.254: icmp_seq=1 ttl=255 time=0.774 ms
64 bytes from 10.0.101.254: icmp_seq=2 ttl=255 time=0.930 ms
64 bytes from 10.0.101.254: icmp_seq=3 ttl=255 time=0.831 ms
64 bytes from 10.0.101.254: icmp_seq=4 ttl=255 time=1.20 ms
--- 10.0.101.254 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3023ms
rtt min/avg/max/mdev = 0.774/0.935/1.207/0.169 ms
$ ping 10.0.102.254
PING 10.0.102.254 (10.0.102.254) 56(84) bytes of data.
64 bytes from 10.0.102.254: icmp_seq=1 ttl=255 time=0.896 ms
64 bytes from 10.0.102.254: icmp_seq=2 ttl=255 time=0.807 ms
64 bytes from 10.0.102.254: icmp_seq=3 ttl=255 time=0.693 ms
64 bytes from 10.0.102.254: icmp_seq=4 ttl=255 time=0.744 ms
--- 10.0.102.254 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3008ms
rtt min/avg/max/mdev = 0.693/0.785/0.896/0.075 ms