Giả sử hệ thống của bạn có 2 thiết bị ethernet, eth0
và eth1
và eth0
được kết nối với mạng LAN của bạn, nói IP 192.168.1.x và bạn eth1
thiết bị được kết nối với ISP của bạn (WAN) bạn sẽ muốn sử dụng sau ifconfig
lệnh để có được IP của bạn cho phía mạng WAN.
LƯU Ý: 2 cách đầu tiên giả định rằng bạn đang chạy chúng trên máy tính có 2 thiết bị ethernet và một trong số chúng được kết nối với ISP của bạn (modem cáp và / hoặc modem DSL). Trong trường hợp này, thiết bị ethernet (eth1) sẽ được cấu hình với địa chỉ IP của bạn trên internet (WAN IP).
Cách 1
+------------------------+
+--------+ WAN IP | Computer that wants | LAN IP
|Internet|--------------| to know WAN IP |------------
+--------+ 54.234.1.33 | +------+ +------+ | 192.168.1.1
+-| eth1 |------| eth0 |-+
+------+ +------+
% ifconfig eth1 | awk '/inet / { print $2 }' | sed -e s/addr://
54.234.1.33
Bạn cũng có thể sử dụng ip
lệnh.
% ip addr show eth1 | awk '/inet/ {print $2}' | sed 's#/.*##'
54.234.1.33
Cách 2
Nếu bạn cần tìm ra điều này từ một hệ thống chỉ nằm trên mạng LAN, bạn có thể thiết lập khóa ssh không có cụm mật khẩu và thêm nó vào một tài khoản trên máy LAN của mình để nó có thể truy cập hệ thống từ xa bằng cách truy cập mạng WAN.
+----------------+
+--------+ WAN IP +-------------+ LAN IP | Computer that |
|Internet|----------------|remote-server|-----------------| wants to know |
+--------+ 54.234.1.33 +----+-----+----+ 192.168.1.x +----+ WAN IP |
|eth1| |eth0| |eth0|------------+
+----+ +----+ +----+
% ssh ruser1@remote-server "ifconfig eth1 | awk '/inet / { print \$2 }' | sed -e s/addr://"
54.234.1.33
Cách thứ 3
Nếu bạn không thể ssh vào hộp có quyền truy cập WAN và bạn đang sử dụng bộ định tuyến / bộ chuyển mạch gia đình như hộp Linksys hoặc Netgear. Bạn có thể lấy IP từ thiết bị đó thông qua trang trạng thái HTTP. Tôi cũng đã làm điều này trong quá khứ, một cái gì đó tương tự như những gì được mô tả trong bài đăng trên diễn đàn whatismyip.com này .
192.168.1.2
+----------------+
+--------+ WAN IP +-------------+ LAN IP | Computer that |
|Internet|----------------|router/switch|-----------------| wants to know |
+--------+ 54.234.1.33 +-------------+ 192.168.1.x +----+ WAN IP |
192.168.1.1 |eth0|------------+
+----+
# something like this....
% wget -q -O - http://<username>:<password>@192.168.1.1/Status_Router.asp | grep "ipaddress" | cut -d" " -f2
LƯU Ý: Cách tiếp cận này phụ thuộc nhiều vào bộ định tuyến / bộ chuyển mạch mà bạn có, cho dù đó là nhãn hiệu Linksys, Netgear, v.v. Mỗi người sẽ có một trang duy nhất của riêng họ với IP IP trên đó.
Cách thứ 4
Gửi một truy vấn đối với một trang web bên ngoài sẽ báo cáo lại địa chỉ IP WAN của bạn.
LƯU Ý: Tôi biết rằng câu hỏi ban đầu đã đề cập rằng họ đang tìm giải pháp thay thế cho phương pháp này nhưng tôi đặt nó ở đây để câu trả lời này bao gồm tất cả các cơ sở.
+---------------+
+-------------+ +--------+ +------+ LAN IP | Computer that |
|whatsmyip.com|---|Internet|---|router|---------------| wants to know |
+-------------+ +--------+ +------+ 192.168.1.x +----+ WAN IP |
you're 54.234.1.33 |eth0|-----------+
+----+
# 1st server
% wget -qO - ipv4bot.whatismyipaddress.com
54.234.1.33
# 2nd server
% curl 'https://api.ipify.org?format=json'
{"ip":"54.234.1.33"}
% curl 'https://api.ipify.org?format=txt'
54.234.1.33
# 3rd server
% curl -s checkip.dyndns.org | sed 's#.*Address: \(.*\)</b.*#\1#'
54.234.1.33
Thông tin bổ sung có sẵn tại đây: HOWTO: Kiểm tra địa chỉ IP bên ngoài của bạn từ dòng lệnh