github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/goip/README.md (about) 1 # ip 2 3 [](https://travis-ci.com/bingoohuang/ip) 4 [](https://github.com/bingoohuang/ip/blob/master/LICENSE.md) 5 [](https://godoc.org/github.com/bingoohuang/ip) 6 [](http://codecov.io/github/bingoohuang/ip?branch=master) 7 [](https://www.goreportcard.com/report/github.com/bingoohuang/ip) 8 9 show host IP addresses 10 11 ## API 12 13 ```go 14 import "github.com/bingoohuang/ip" 15 16 // ListAllIPv4 list all IPv4 addresses. 17 // The input argument ifaceNames are used to specified interface names 18 // (filename wild match pattern supported also, like eth*) 19 allIPv4s, _ := ip.ListAllIPv4() 20 allEth0IPv4s, _ := ip.ListAllIPv4("eth0") 21 allEth0En0IPv4s, _ := ip.ListAllIPv4("eth0", "en0") 22 allEnIPv4s, _ := ip.ListAllIPv4("en*") 23 24 // GetOutboundIP gets preferred outbound ip of this machine. 25 outboundIP := ip.Outbound() 26 27 // MainIP tries to get the main IP address and the IP addresses. 28 mainIP, ipList := ip.MainIP() 29 ``` 30 31 ## Usages 32 33 on mac: 34 35 ```bash 36 $ ip 37 INFO[0000] MainIP: 192.168.162.41, IP List: [192.168.162.41] 38 INFO[0000] OutboundIP: 192.168.162.41 39 INFO[0015] 公网IP 60.247.93.190 40 INFO[0015] TabaoAPI &{Code:0 Data:{Country:中国 CountryID:CN Area: AreaID: Region:北京 RegionID:110000 City:北京 CityID:110100 Isp:电信}} 41 INFO[0015] Convert 60.247.93.190 to decimal number(base 10) : 1022844350 42 INFO[0015] Convert decimal number(base 10) 1022844350 to IPv4 address: 60.247.93.190 43 INFO[0015] 0.0.0.0 isBetween 255.255.255.255 and 60.247.93.190 : true 44 INFO[0015] 60.247.93.190 is public ip: true 45 INFO[0015] iface {Index:1 MTU:16384 Name:lo0 HardwareAddr: Flags:up|loopback|multicast} 46 INFO[0015] iface {Index:2 MTU:1280 Name:gif0 HardwareAddr: Flags:pointtopoint|multicast} 47 INFO[0015] iface {Index:3 MTU:1280 Name:stf0 HardwareAddr: Flags:0} 48 INFO[0015] iface {Index:4 MTU:0 Name:XHC0 HardwareAddr: Flags:0} 49 INFO[0015] iface {Index:5 MTU:0 Name:XHC1 HardwareAddr: Flags:0} 50 INFO[0015] iface {Index:6 MTU:0 Name:XHC20 HardwareAddr: Flags:0} 51 INFO[0015] iface {Index:7 MTU:0 Name:VHC128 HardwareAddr: Flags:0} 52 INFO[0015] iface {Index:8 MTU:1500 Name:en5 HardwareAddr:ac:de:48:00:11:22 Flags:up|broadcast|multicast} 53 INFO[0015] addrs [fe80::aede:48ff:fe00:1122/64] 54 INFO[0015] √ Got fe80::aede:48ff:fe00:1122 55 INFO[0015] iface {Index:9 MTU:1500 Name:ap1 HardwareAddr:f2:18:98:a5:12:27 Flags:broadcast|multicast} 56 INFO[0015] iface {Index:10 MTU:1500 Name:en0 HardwareAddr:f0:18:98:a5:12:27 Flags:up|broadcast|multicast} 57 INFO[0015] addrs [fe80::413:5cf0:7a62:facf/64 192.168.162.41/24] 58 INFO[0015] √ Got fe80::413:5cf0:7a62:facf 59 INFO[0015] √ Got 192.168.162.41 60 INFO[0015] iface {Index:11 MTU:1500 Name:en1 HardwareAddr:82:68:2b:61:34:01 Flags:up|broadcast|multicast} 61 INFO[0015] iface {Index:12 MTU:1500 Name:en2 HardwareAddr:82:68:2b:61:34:00 Flags:up|broadcast|multicast} 62 INFO[0015] iface {Index:13 MTU:1500 Name:en3 HardwareAddr:82:68:2b:61:34:05 Flags:up|broadcast|multicast} 63 INFO[0015] iface {Index:14 MTU:1500 Name:en4 HardwareAddr:82:68:2b:61:34:04 Flags:up|broadcast|multicast} 64 INFO[0015] iface {Index:15 MTU:1500 Name:bridge0 HardwareAddr:82:68:2b:61:34:01 Flags:up|broadcast|multicast} 65 INFO[0015] iface {Index:16 MTU:2304 Name:p2p0 HardwareAddr:02:18:98:a5:12:27 Flags:up|broadcast|multicast} 66 INFO[0015] iface {Index:17 MTU:1484 Name:awdl0 HardwareAddr:02:62:29:9b:38:bf Flags:up|broadcast|multicast} 67 INFO[0015] addrs [fe80::62:29ff:fe9b:38bf/64] 68 INFO[0015] √ Got fe80::62:29ff:fe9b:38bf 69 INFO[0015] iface {Index:18 MTU:1500 Name:llw0 HardwareAddr:02:62:29:9b:38:bf Flags:up|broadcast|multicast} 70 INFO[0015] addrs [fe80::62:29ff:fe9b:38bf/64] 71 INFO[0015] √ Got fe80::62:29ff:fe9b:38bf 72 INFO[0015] iface {Index:19 MTU:1380 Name:utun0 HardwareAddr: Flags:up|pointtopoint|multicast} 73 INFO[0015] iface {Index:20 MTU:2000 Name:utun1 HardwareAddr: Flags:up|pointtopoint|multicast} 74 ``` 75 76 on linux: 77 78 1. `make docker` 79 1. `bssh scp -H q7 ~/dockergo/bin/ip-v1.0.0-amd64-glibc2.28.gz r:bingoohuang` 80 81 ```bash 82 $ ./ip-v1.0.0-amd64-glibc2.28 83 INFO[0000] MainIP: 192.168.1.7, IP List: [192.168.1.7 192.168.1.17 172.18.0.1 172.17.0.1 172.19.0.1 10.42.2.0] 84 INFO[0000] OutboundIP: 192.168.1.7 85 INFO[0000] 公网IP 123.206.1.162 86 INFO[0000] TabaoAPI &{Code:0 Data:{Country:中国 CountryID:CN Area: AreaID: Region:上海 RegionID:310000 City:上海 CityID:310100 Isp:电信}} 87 INFO[0000] Convert 123.206.1.162 to decimal number(base 10) : 2077145506 88 INFO[0000] Convert decimal number(base 10) 2077145506 to IPv4 address: 123.206.1.162 89 INFO[0000] 0.0.0.0 isBetween 255.255.255.255 and 123.206.1.162 : true 90 INFO[0000] 123.206.1.162 is public ip: true 91 INFO[0000] iface {Index:1 MTU:65536 Name:lo HardwareAddr: Flags:up|loopback} 92 INFO[0000] iface {Index:2 MTU:1500 Name:eth0 HardwareAddr:52:54:00:ef:16:bd Flags:up|broadcast|multicast} 93 INFO[0000] addrs [192.168.1.7/24 192.168.1.17/32] 94 INFO[0000] √ Got 192.168.1.7 95 INFO[0000] √ Got 192.168.1.17 96 INFO[0000] iface {Index:3 MTU:1500 Name:br-8983f91a1c88 HardwareAddr:02:42:49:a5:88:9f Flags:up|broadcast|multicast} 97 INFO[0000] addrs [172.18.0.1/16] 98 INFO[0000] √ Got 172.18.0.1 99 INFO[0000] iface {Index:4 MTU:1500 Name:docker0 HardwareAddr:02:42:b3:f8:ea:89 Flags:up|broadcast|multicast} 100 INFO[0000] addrs [172.17.0.1/16] 101 INFO[0000] √ Got 172.17.0.1 102 INFO[0000] iface {Index:7 MTU:1500 Name:br-d4979d31f397 HardwareAddr:02:42:65:78:5e:15 Flags:up|broadcast|multicast} 103 INFO[0000] addrs [172.19.0.1/16] 104 INFO[0000] √ Got 172.19.0.1 105 INFO[0000] iface {Index:284 MTU:1450 Name:flannel.1 HardwareAddr:ce:1d:c7:1e:20:36 Flags:up|broadcast|multicast} 106 INFO[0000] addrs [10.42.2.0/32] 107 INFO[0000] √ Got 10.42.2.0 108 INFO[0000] iface {Index:287 MTU:1500 Name:calif3053f9c1b9 HardwareAddr:ee:ee:ee:ee:ee:ee Flags:up|broadcast|multicast} 109 INFO[0000] iface {Index:288 MTU:1500 Name:calie04efa792c4 HardwareAddr:ee:ee:ee:ee:ee:ee Flags:up|broadcast|multicast} 110 INFO[0000] iface {Index:33 MTU:1500 Name:vethb98680d HardwareAddr:ce:8b:3c:1c:c1:9a Flags:up|broadcast|multicast} 111 INFO[0000] iface {Index:37 MTU:1500 Name:veth69f8b3d HardwareAddr:3e:1d:13:80:f0:a7 Flags:up|broadcast|multicast} 112 INFO[0000] iface {Index:7726 MTU:1500 Name:calibd36e9f9137 HardwareAddr:ee:ee:ee:ee:ee:ee Flags:up|broadcast|multicast} 113 INFO[0000] iface {Index:7752 MTU:1500 Name:cali76dffd9c471 HardwareAddr:ee:ee:ee:ee:ee:ee Flags:up|broadcast|multicast} 114 INFO[0000] iface {Index:7674 MTU:1500 Name:cali94579f886d8 HardwareAddr:ee:ee:ee:ee:ee:ee Flags:up|broadcast|multicast} 115 INFO[0000] iface {Index:7679 MTU:1500 Name:cali59741a8250f HardwareAddr:ee:ee:ee:ee:ee:ee Flags:up|broadcast|multicast} 116 ``` 117 118 ## List available network interfaces: 119 120 `tcpdump -D` 121 122 ```bash 123 $ tcpdump -D 124 1.en0 [Up, Running] 125 2.p2p0 [Up, Running] 126 3.awdl0 [Up, Running] 127 4.llw0 [Up, Running] 128 5.utun0 [Up, Running] 129 6.utun1 [Up, Running] 130 7.lo0 [Up, Running, Loopback] 131 8.bridge0 [Up, Running] 132 9.en1 [Up, Running] 133 10.en2 [Up, Running] 134 11.en3 [Up, Running] 135 12.en4 [Up, Running] 136 13.gif0 [none] 137 14.stf0 [none] 138 15.XHC0 [none] 139 16.XHC1 [none] 140 17.ap1 [none] 141 18.XHC20 [none] 142 19.VHC128 [none] 143 ``` 144 145 ```bash 146 # tcpdump -D 147 1.eth0 148 2.docker0 149 3.nflog (Linux netfilter log (NFLOG) interface) 150 4.nfqueue (Linux netfilter queue (NFQUEUE) interface) 151 5.flannel.1 152 6.usbmon1 (USB bus number 1) 153 7.calie04efa792c4 154 8.calibd36e9f9137 155 9.veth69f8b3d 156 10.cali76dffd9c471 157 11.calif3053f9c1b9 158 12.br-d4979d31f397 159 13.br-8983f91a1c88 160 14.cali59741a8250f 161 15.cali94579f886d8 162 16.vethb98680d 163 17.any (Pseudo-device that captures on all interfaces) 164 18.lo [Loopback] 165 ``` 166 167 ```bash 168 $ hostname -I 169 192.168.1.7 192.168.1.17 172.18.0.1 172.17.0.1 172.19.0.1 10.42.2.0 170 ``` 171 172 ```shell 173 [root@tencent-beta17 ~]# ifconfig eth0 174 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 175 inet 192.168.108.7 netmask 255.255.255.0 broadcast 192.168.108.255 176 ether 52:54:00:ef:16:bd txqueuelen 1000 (Ethernet) 177 RX packets 1838617728 bytes 885519190162 (824.7 GiB) 178 RX errors 0 dropped 0 overruns 0 frame 0 179 TX packets 1665532349 bytes 808544539610 (753.0 GiB) 180 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 181 [root@tencent-beta17 ~]# ip a 182 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 183 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 184 inet 127.0.0.1/8 scope host lo 185 valid_lft forever preferred_lft forever 186 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 187 link/ether 52:54:00:ef:16:bd brd ff:ff:ff:ff:ff:ff 188 inet 192.168.108.7/24 brd 192.168.108.255 scope global eth0 189 valid_lft forever preferred_lft forever 190 inet 192.168.108.17/32 brd 192.168.108.255 scope global eth0 191 valid_lft forever preferred_lft forever 192 3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 193 link/ether 02:42:f7:47:e6:02 brd ff:ff:ff:ff:ff:ff 194 inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 195 valid_lft forever preferred_lft forever 196 4: br-d4979d31f397: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 197 link/ether 02:42:17:47:99:97 brd ff:ff:ff:ff:ff:ff 198 inet 172.19.0.1/16 brd 172.19.255.255 scope global br-d4979d31f397 199 valid_lft forever preferred_lft forever 200 14: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN 201 link/ether 2e:09:7c:c5:b0:83 brd ff:ff:ff:ff:ff:ff 202 inet 10.42.2.0/32 scope global flannel.1 203 valid_lft forever preferred_lft forever 204 849: veth120ec58@if848: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-d4979d31f397 state UP 205 link/ether 42:33:d1:8a:ed:55 brd ff:ff:ff:ff:ff:ff link-netnsid 1 206 851: veth62f525c@if850: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-d4979d31f397 state UP 207 link/ether 62:eb:7f:58:ac:f3 brd ff:ff:ff:ff:ff:ff link-netnsid 0 208 852: cali84fc7ac85e8@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP 209 link/ether ee:ee:ee:ee:ee:ee brd ff:ff:ff:ff:ff:ff link-netnsid 3 210 ``` 211 212 mac: 213 214 ```sh 215 ➜ ip git:(master) ✗ ifconfig en0 216 en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 217 options=400<CHANNEL_IO> 218 ether f0:18:98:a5:12:27 219 inet6 fe80::40d:d0ee:8501:f4a7%en0 prefixlen 64 secured scopeid 0xa 220 inet 192.168.162.21 netmask 0xffffff00 broadcast 192.168.162.255 221 nd6 options=201<PERFORMNUD,DAD> 222 media: autoselect 223 status: active 224 ``` 225 226 ## thanks to the Giant Shoulders 227 228 1. [A minimalist HTTP headers inspector](http://gethttp.info/)