`
嚣张把刀
  • 浏览: 9558 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Java设置Linux外网出口ip

阅读更多

最近爬虫项目中被封,服务器上绑定了多个ip,就想着怎样才能把多个ip都利用起来,想过设置成代理服务器的想法,但是由于某些原因放弃,所以采用动态改变服务器出口ip的方式将多个ip利用起来。

首先获取服务器绑定的ip

public static void getLocalIps(){
	try {
        for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
            NetworkInterface intf = en.nextElement();
            String name = intf.getName();
            if (!name.contains("docker") && !name.contains("lo")) {
                for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                    InetAddress inetAddress = enumIpAddr.nextElement();
                    if (!inetAddress.isLoopbackAddress()) {
                        String ipaddress = inetAddress.getHostAddress().toString();
                        if (!ipaddress.contains("::") && !ipaddress.contains("0:0:") && !ipaddress.contains("fe80")) {
                            localIps.add(ipaddress);
                        }
                    }
                }
            }
        }
    } catch (SocketException ex) {
        System.out.println("获取ip地址异常");
        ex.printStackTrace();
    }
}

 

编写切换linux出口ip的脚本

#!/bin/sh
iptables -t nat -I POSTROUTING -o eth0 -d 0.0.0.0/0 -s 192.168.0.1 -j SNAT --to-source $1

 

使用java调用shell脚本,切换出口ip

public static void setOutIp(){
    for (String ip : localIps) {
        try {
            Runtime.getRuntime().exec(ApplicationConfig.prop.getProperty("ipshell")+" "+ip);
            logger.info("设置出口ip:"+ip);
            if(checkIpCanUsed(null, null)){//查看ip是否可用
                return;
            }
        } catch (IOException e) {
            logger.error(e.getMessage());
        }
    }
}

 

附:查看linux出口ip的方法

 

curl icanhazip.com
curl ifconfig.me
curl curlmyip.com
curl ip.appspot.com
curl ipinfo.io/ip
curl ipecho.net/plain
curl www.trackip.net/i

本文由微儿博客原创,博客地址:www.weare.net.cn 或者点击 微儿博客

分享到:
评论

相关推荐

    java获取linux服务器上的IP操作

    Java获取Linux服务器上的IP操作 Java获取Linux服务器上的IP操作是Java开发中的一项重要任务。然而,在Linux服务器上获取IP地址却存在一些问题。在本文中,我们将详细介绍Java获取Linux服务器上的IP操作,包括Linux...

    或许本机外网IP和本机IP

    在IT领域,了解和获取本机IP地址以及外网IP地址是常见的需求,尤其是在网络编程、服务器配置或者网络诊断中。下面将详细解释这两个概念及其获取方法。 首先,我们要理解什么是"本机IP"和"外网IP"。 1. 本机IP...

    简单实用的邮件主机内网ip和外网ip自动发送程序

    该程序的核心目标是实现邮件主机自动检测其内网IP和外网IP,并将这些信息定时发送至指定的邮箱地址,以便于用户监控网络环境的变化。这个功能在远程办公、服务器管理、网络安全监控等多个场景中非常实用。下面我们将...

    VMware下配置Linux系统局域网和外网访问图文教程

    在VMware中配置Linux系统以实现局域网和外网访问是每个Linux用户的基本技能,尤其是对于初学者来说,这一步至关重要。以下是一份详细的步骤指南,帮助您完成这一过程。 首先,确保您的VMware虚拟机已经安装了Linux...

    linux下java和tomcat配置 非常详细 适合菜鸟)

    - 再次尝试从外网访问Tomcat:`http://[Linux IP地址]:8080`。 #### 四、总结 通过以上步骤,我们已经在Linux环境中成功配置了Java运行环境并部署了Tomcat服务器。这对于初学者来说是一个很好的实践过程,有助于...

    阿里云服务器安装配置tomcat 添加外网访问端口的教程

    阿里云服务器安装配置Tomcat以及添加外网访问端口的完整流程可以分为几个关键步骤,涉及到的IT知识点包括Java环境的配置、Tomcat的安装和配置、安全组规则的设置以及端口映射和防火墙操作。下面将详细介绍这些步骤及...

    Java实现SNMP获得OId值

    ### Java实现SNMP获取OID值:深入解析与代码示例 #### SNMP协议简介与OID概念 简单网络管理协议(SNMP)是一种应用层协议,用于收集和组织有关网络设备的信息,如路由器、交换机和服务器等,并对其进行管理。SNMP...

    Flex通过web返回客户端IP

    - **外网IP**:当应用通过Internet连接到Web服务,返回的IP应该是客户端的公共(外网)IP,这是其他网络用户能看到的IP地址。 5. **Flex代码示例**: 在Flex应用中,你可以使用`URLLoader`类来发送HTTP请求并接收...

    Linux开发技术

    21. **压缩和解压,以及Java网络编程**:介绍了在Linux下进行文件压缩和解压的工具,如gzip、tar等,并讲解了Java在Linux环境下的网络编程。 以上就是Linux开发技术的初步学习内容,通过这一系列教程,初学者可以...

    用java实现获取MAC地址的方法

    如果要在Linux或MacOS环境下运行,需要替换相应的命令或使用跨平台的方法(例如使用Java的`NetworkInterface`类)。 2. **安全性和权限问题**: - 在实际应用中,直接执行系统命令可能会带来安全风险。此外,在...

    Linux通过命令仅获取IP地址的方法

    除了命令行方式外,还可以通过编程语言(如Java)来获取Linux系统的IP地址。以下是一个简单的示例代码: ```java public static String getLinuxLocalIp() throws SocketException { String ip = ""; try { for ...

    syslog协议发送日志(java)

    这段配置设置了一个名为"SYSLOG"的appender,将日志发送到指定的syslog服务器,使用`LOCAL0`设施,并添加了应用名称作为标签。 如果你选择使用`java.util.logging`,可以创建一个`Handler`来实现syslog日志发送: ...

    Android获取实时连接热点的设备IP

    "Android获取实时连接热点的设备IP" Android获取实时连接热点的设备IP是指在Android系统中获取当前热点连接的设备IP地址的相关技术。主要涉及到Android系统中获取Wifi热点设备的Ip地址的代码实现。 知识点一:/...

    最新版linux elasticsearch-8.3.3-linux-x86_64.tar.gz

    例如,你可以指定绑定的IP地址,端口号,以及是否允许外网访问。 Elasticsearch与Kibana、Logstash和Beats等工具配合使用,构成了著名的ELK(Elasticsearch, Logstash, Kibana)堆栈。Logstash负责收集、解析和转换...

    如何获得本地IP地址

    这个函数通过创建一个UDP套接字并连接到Google的DNS服务器(8.8.8.8),然后获取套接字的本地地址,从而得到本机的外网IP。如果只想获取内网IP,可以省略连接步骤,直接查询本地接口。 在Java中,可以使用`java.net...

    Linux下Weblogic9集群配置

    总的来说,Linux下Weblogic 9的集群配置是一个复杂但至关重要的过程,需要对网络、操作系统、Web服务器和Java EE概念有深入理解。正确的配置能大大提高服务的可用性和性能,同时降低单点故障的风险,确保业务的连续...

    TCP/IP协议与网络编程技术

    第6章:简要的介绍了一下TCP/IP协议在Windows和LINUX操作系统下的实现原理TCP/IP协议的二进制代码。 下篇包含以下6章内容: 第7章:介绍了网络程序设计有关的基础知识、一个网络程序入门实例和Winsock中编写网络程序...

    nacos1.3.2.zip nacos1.3.2 windows和linux都有从外网GitHub上下载原版

    7. **API和SDK支持**:Nacos提供了丰富的Java API和客户端SDK,使得开发者可以轻松集成到自己的应用中,进行服务注册、配置变更监听等操作。 8. **监控与健康检查**:Nacos内置了健康检查机制,能够实时监控服务...

    详解阿里云Linux启动tomcat并能外网访问

    【阿里云Linux启动Tomcat并实现外网访问】 在阿里云上部署Java应用程序时,通常会使用Apache Tomcat作为应用服务器。这篇指南将详细介绍如何在阿里云Linux服务器上启动Tomcat,并配置使其能够被外网访问。以下是...

    LINUX学习笔记.pdf

    NAT模式下,虚拟机可以访问外网但不能与其他物理主机通信,这种方式不会造成IP冲突。主机模式则使虚拟机成为一个独立的主机,无法访问外网。 在安装虚拟机和CentOS系统的具体步骤中,首先要进入BIOS设置虚拟化,...

Global site tag (gtag.js) - Google Analytics