如何检查给定的IP是否是内部的

时间:2012-12-20 10:05:23

标签: javascript

如何仅使用javascript检查给定的IP是否是内部的?

例如,如果您获得的IP为192.168.1.1,则脚本应对此进行验证并发出警报(如果这是内部IP或外部IP)。

4 个答案:

答案 0 :(得分:10)

如果您的意思是私人,请确保它属于以下范围之一:

  

私有IP地址范围

     

可用IP的范围和数量如下:

     

10.0.0.0 - 10.255.255.255地址:16,777,216

     

172.16.0.0 - 172.31.255.255地址:1,048,576

     

192.168.0.0 - 192.168.255.255地址:65,536

这样的功能应该有所帮助:

function isPrivateIP(ip) {
   var parts = ip.split('.');
   return parts[0] === '10' || 
      (parts[0] === '172' && (parseInt(parts[1], 10) >= 16 && parseInt(parts[1], 10) <= 31)) || 
      (parts[0] === '192' && parts[1] === '168');
}

答案 1 :(得分:4)

内部IP如下:

10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255

为他们写正确的正则表达式。

/10\.\d+\.\d+\.\d+/
/192\.168\.\d+\.\d+/

我留给你找出172.xxx范围的正确正则表达式。

答案 2 :(得分:1)

您可以使用ipaddr.js库并检查它是否返回"private"

const ipaddrJs = require('ipaddr.js');
ipaddrJs.parse('192.168.5.1').range()
> 'private'

https://github.com/whitequark/ipaddr.js/blob/master/lib/ipaddr.js

如果您使用Node.js,请查看此处:https://www.npmjs.com/package/ipaddr.js

答案 3 :(得分:0)

试试这个!

[ravibeli@localdomain ~]$ journalctl  -xe
May 07 16:06:53 localdomain sudo[6971]: pam_unix(sudo:session): session opened for user root by (uid=0)
May 07 16:06:53 localdomain audit[6971]: USER_START pid=6971 uid=0 auid=1000 ses=2 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:sess
May 07 16:06:53 localdomain systemd[1]: Starting SYSV: MySQL database server....
-- Subject: Unit mysqld.service has begun start-up
-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mysqld.service has begun starting up.
May 07 16:06:53 localdomain mysqld[8145]: chown: invalid user: ‘mysql:mysql’
May 07 16:06:54 localdomain audit[726]: USER_AVC pid=726 uid=81 auid=4294967295 ses=4294967295 subj=system_u:system_r:system_dbusd_t:s0-s0:c0.c1023 msg='avc: 
                                         exe="/usr/bin/dbus-daemon" sauid=81 hostname=? addr=? terminal=?'
May 07 16:06:54 localdomain mysqld[8145]: Initializing MySQL database:  2018-05-07T10:36:54.847676Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is depre
May 07 16:06:54 localdomain mysqld[8145]: 2018-05-07T10:36:54.851156Z 0 [ERROR] Fatal error: Can't change to run as user 'mysql' ;  Please check that the user
May 07 16:06:54 localdomain mysqld[8145]: 2018-05-07T10:36:54.851678Z 0 [ERROR] Aborting
May 07 16:06:54 localdomain mysqld[8145]: [FAILED]
May 07 16:06:54 localdomain systemd[1]: mysqld.service: Control process exited, code=exited status=1
May 07 16:06:54 localdomain systemd[1]: Failed to start SYSV: MySQL database server..
-- Subject: Unit mysqld.service has failed
-- Defined-By: systemd
-- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mysqld.service has failed.
-- 
-- The result is failed.
May 07 16:06:54 localdomain systemd[1]: mysqld.service: Unit entered failed state.
May 07 16:06:54 localdomain systemd[1]: mysqld.service: Failed with result 'exit-code'.
May 07 16:06:54 localdomain audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=mysqld comm="systemd
May 07 16:06:54 localdomain sudo[6971]: pam_unix(sudo:session): session closed for user root
May 07 16:06:54 localdomain audit[6971]: USER_END pid=6971 uid=0 auid=1000 ses=2 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:sessio
May 07 16:06:54 localdomain audit[6971]: CRED_DISP pid=6971 uid=0 auid=1000 ses=2 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:setcr
lines 1393-1422/1422