Khi bạn có một thiết lập mạng phức tạp, thật khó chịu khi có “ Không có đường dẫn đến máy chủ ”Bắt đầu xuất hiện sau khi nâng lên một giao diện mới. Điều này thường do tuyến đường mặc định bị thay đổi hoặc bị loại bỏ.
Để kiểm tra tuyến đường mặc định của bạn, hãy nhập
lộ trình ip
Như hiển thị ở trên, tôi có ba giao diện vật lý, một giao diện hướng ra ngoài và hai giao diện nội bộ. Tuyến mặc định bị rớt trên mạng khi một kết nối được đặt lại, khiến phần còn lại của mạng của tôi hoạt động bình thường, chỉ có điều máy này không biết kết nối Internet ở đâu.
Để máy có thể truy cập Internet, nó cần phải có một tuyến mặc định có thể được thêm vào bằng lệnh sau
sudo ip route thêm mặc định qua 136.63.176.1
Nếu bạn gặp phải vấn đề này phát sinh nhiều hơn một hoặc hai lần, nó có thể trở nên phiền toái, vì vậy tôi đã viết một vài kịch bản shell để nhanh chóng khắc phục tình hình.
Tập lệnh đầu tiên sẽ lấy ip hiện tại của bạn cho bạn. Tôi đã đặt $ INTF làm STDIN, bạn thay đổi nó thành giao diện cụ thể của mình nếu bạn không muốn nhập tên giao diện.
Sử dụng trình soạn thảo văn bản yêu thích của bạn, tôi thích vim và có một thư mục nguồn trong thư mục chính của tôi
mkdir ~ / src && cd ~ / src
Tôi đã đến getip.sh
#! / bin / bash
#fetch ip địa chỉ đã đặt cho thiết bị nhất định
INTF = $ {1}
PTH = (~ / src /)
khai báo TMP_IP2
TMP_IP2 = $ (ip a | grep $ {INTF} | grep inet | cut -d ”” -f6 | cut -d “/” -f1> $ {PTH} current _ $ {INTF} .ip)
ip a | grep $ {INTF} | grep inet | cắt -d ”-f6 | cắt -d “/” -f1 | cắt -d ”.” -f1-3 | awk ‘{print $ 0 ″ .0 / 24 ″}’> $ {PTH} net _ $ {INTF} .ip
ip a | grep $ {INTF} | grep inet | cắt -d ”-f6 | cắt -d “/” -f1 | cắt -d ”.” -f1-3 | awk ‘{print $ 0 ″ .1 ″}’> $ {PTH} gw _ $ {INTF} .ip
khai báo TMP_IP
TMP_IP = $ (cat $ {PTH} current _ $ {INTF} .ip)
echo “wan ip $ TMP_IP hiện tại”
Lưu và thoát, làm cho nó có thể thực thi và sau đó kiểm tra nó.
sudo chmod a + x getip.sh
bash getip.sh eth0.2
Giả sử rằng nó hoạt động đúng cách, bạn hãy tiếp tục và sao chép nó vào / usr / local / bin / để làm cho nó có thể thực thi trên toàn cầu.
sudo cp getip.sh / usr / local / bin / getip
Bây giờ tôi có thể chỉ cần gõ getip eth0.2 và ip sẽ được trả lại.
Tập lệnh thứ hai sẽ chỉ định tuyến đường mặc định, cũng như chạy tập lệnh đầu tiên.
Tôi đến từ setip.sh
#! / bin / bash
chú giải địa chỉ $ {1}
#fetch ip địa chỉ đã đặt cho thiết bị nhất định
PTH = (~ / src /)
khai báo RT_IP
RT_IP = $ (cat $ {PTH} gw _ $ {1} .ip)
Thay đổi tuyến đường ip mặc định qua $ RT_IP
ip route thêm mặc định qua $ RT_IP
echo “tuyến đường ip - mặc định qua $ RT_IP”
Lưu và thoát. Bạn có thể nhận thấy rằng tôi đã thay đổi và thêm tuyến đường mặc định, đây là trường hợp bạn đặt sai cổng.
sudo chmod a + x setip.sh
sudo setip.sh eth0.2
Bạn có thể kiểm tra lại bảng định tuyến để kiểm tra lại xem tất cả đều tốt.
sudo ip lộ trình
Bạn có thể sao chép các tập lệnh vào / usr / local / bin / nếu bạn muốn chúng có thể thực thi được trên toàn cầu. Nó sẽ vẫn yêu cầu sudo, vì bạn đang sửa đổi và giao diện.
2 phút đọcsudo cp setip.sh / usr / local / bin / setip