java设置linux外网出口ip

     2022-03-14     135

关键词:

最近爬虫项目中被封,服务器上绑定了多个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 或者点击 微儿博客

linux检测外网出口地址(代码片段)

找了几个linux下检测外网地址的。curlifconfig.mecurlipinfo.io/ipcurlipecho.net/plain  查看详情

linux怎样设置外网ip、网关、掩码

...通表示网络正常。参考技术A使用setup命令会出现图像化的设置方式。 参考技术BIP和掩码设置用ifconfig,网关用route 参考技术C还是换Win7/Win8算了,Linux好多软件不兼容的 查看详情

8台电脑,共用一个路由器,外网ip一样吗?

...的 参考技术C单一出口,一个出口对应一个IP地址,所以外网是同一个IP。 参考技术D如果是共享一个宽带帐号就是。可以用HTTP代理。VPN。OPENVPN。SOFTETHER 实现改变外网。本回答被提问者采纳 第5个回答 2013-07-23外网IP是同一... 查看详情

linux怎么查看能否ping通外网

1、配置虚拟机网络连接方式 打开虚拟机,打开设置,将NetworkAdapter中的Networkconnection选择NAT方式。2、打开win7系统下的网络共享中心,更改网络适配器,设置VMwareNetworkAdapterVMnet8的ip。3、进入linux系统,点击小红帽——选择syst... 查看详情

linux查看出口ip(代码片段)

命令如下,下面这些命令都可以获取出口ip:curlifconfig.mecurlipinfo.io/ipcurlip.sbcurlicanhazip.comcurlhttp://icanhazip.comcurlhttp://ip.3322.netcurlhttps://httpbin.org/ipcurl-shttp://httpbin.org/ip 查看详情

linux查看出口ip(代码片段)

命令如下,下面这些命令都可以获取出口ip:curlifconfig.mecurlipinfo.io/ipcurlip.sbcurlicanhazip.comcurlhttp://icanhazip.comcurlhttp://ip.3322.netcurlhttps://httpbin.org/ipcurl-shttp://httpbin.org/ip 查看详情

linux服务器配置双ip肿么实现?

...卡那就cd/etc/sysconfig/network-scripts/对ifcfg-eth0和ifcfg-eth1分别设置成需要的ip;然后输入servicenetworkrestart生效;这样就实现双ip了追问直接填写的外网可以在外地维护吗,肿么实现啊/?追答你安我说的做了后,就可以远程连接了啊,... 查看详情

如何查看本机外网ip

...,就会出现一个IP配置窗口,这里会显示当前网络详细的设置信息。其中“IP地址”这行就是你的网吧外网IP地址。第二种方法:点击“开始|程序|附件|MS-DOS方式”,打开一个MS-DOS窗口,在提示符下输入“ipconfig”,回车后就可以... 查看详情

linux双网卡内外网服务器ip配置?

网卡eth0直接设置外网固定IP,网卡eth1连线内网路由设置了静态IP(没有设置网关),如此两个网卡现在处于激活状态,服务器可以访问外网,内外用户也可以访问服务器。问题:把外网网卡取消激活后服务器就不能访问外网了!1,... 查看详情

什么是出口ip

出口IP是指外网IP,比如用的不是外网IP(公网)那么发送的信息必须被路由器进行网络地址转换,信息就会被外网识别。IP定址:IP规定网络上所有的设备都必须有一个独一无二的IP地址,就好比是邮件上都必须注明收件人地址,... 查看详情

如何设置linux内网服务器使外网可以访问

...在使用内网IP(http://192.168.1.2/web)可以访问服务器资源,现想设置一下服务器,达到外网也可以访问程度,请问如何实现?谢谢.参考技术A开放80端口,方法一如果你的服务器是是win2003的话!WIN2003自带防火墙功能!你必需把WIN2003的防火墙关... 查看详情

mac虚拟机nat模式下linux静态ip后无法连外网

Linuxvnet8网卡参数和虚拟机IP设置参数如下NAT模式下网关地址是.2的注意不是.1.1是vmnet8的地址,它并不是网关,网关是由VMwareNATservice服务提供的。参考技术A在linux里把网关IP设为MAC虚拟机软件虚拟网络的IP,而不是虚拟网络的网关I... 查看详情

linux怎么配置网络设置(linux怎么配置网络连接外网)

参考技术A1、linux怎么配置网络。2、linux怎么配置网络连接外网。3、linux怎么配置网络地址。4、linux怎么配置网络ip。1."linux怎么配置网络,为您提供linux怎么配置网络图文信息,打开已安装的虚拟机。2.在终端窗口中输入命令V... 查看详情

java网络访问指定出口ip

java网络访问指定出口ipTableofContents1.socket2.apachehttpclient1socket可以在Socket构造函数中指定使用的本地ip,如:Socketsocket=newSocket("127.0.0.1",12345,InetAddress.getByAddress(newbyte[]{newInteger(10).byteValue(),newIntege 查看详情

linux能上内网不能上外网

...啊搜索更多相关主题的帖子:LINUX内网把vmware中网卡的模式设置为NAT模式linux中的IP设置为自动获取,并手动设置一下linux中的DNS,重启网络。参考技术A两种办法,第一种,nat,自动获取私有地址,这个设置并不在linux中,而是在虚... 查看详情

ssh反向代理设置

一、功能描述:通过ssh反向代理服务器使得没有公网ip的Linux服务器可以被外网访问。1、实验主机ip:(1)终端1(192.168.1.101):在局域网内,可以访问外网,无公网ip(2)终端2(192.168.1.102):在局域网内,可以访问外网,无公... 查看详情

如何让外网连接esxi虚拟机系统

如何让外网连接管理ESXi网页,及连接ESXi的虚拟机进行远程桌面(虚拟机系统有,Windows,macos,Linux)有公网ip的话,在出口路由做个映射就好了参考技术A安装神卓内网穿透,外网可以控制桌面,传输文件,也可以访问其访问 查看详情

mssqlserver2005在本机上如何用本机的外网连接数据库引擎linux下的java程序如何访问mssqlserver数据库

...指教,,1.先申请个域名,把IP地址转换到你服务器的IP.2.设置远程连接.参考如下:SqlServer2005的1433端口打开和进行远程连接SQLcode如何打开sqlserver2005的1433端口配置工具->SqlServerConfigurationManager->MSSQLSERVER的协议看看TC 查看详情