github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/goip/README.md (about)

     1  # ip
     2  
     3  [![Travis CI](https://img.shields.io/travis/bingoohuang/ip/master.svg?style=flat-square)](https://travis-ci.com/bingoohuang/ip)
     4  [![Software License](https://img.shields.io/badge/License-MIT-orange.svg?style=flat-square)](https://github.com/bingoohuang/ip/blob/master/LICENSE.md)
     5  [![GoDoc](https://img.shields.io/badge/godoc-reference-blue.svg?style=flat-square)](https://godoc.org/github.com/bingoohuang/ip)
     6  [![Coverage Status](http://codecov.io/github/bingoohuang/ip/coverage.svg?branch=master)](http://codecov.io/github/bingoohuang/ip?branch=master)
     7  [![goreport](https://www.goreportcard.com/badge/github.com/bingoohuang/ip)](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/)