我想使用 python 创建一个可以处理多个 ip 的爬虫,所以我需要一个具有多个 ip 的虚拟机。
我使用 python 发送请求如下:
import requests
from requests_toolbelt.adapters import source
def send_request():
session = requests.session()
new_source = source.SourceAddressAdapter('5.34.201.22')
session.mount('http://', new_source)
session.mount('https://', new_source)
response = session.get('https://example.com/')
我正在使用 ubuntu server 22.04,有 4 个接口,我想更改netplan
配置以拥有 4 个静态 ip。
我使用ip route show
命令来查找这些接口的网关。
default via 5.34.200.1 dev eth2 proto static
default via 188.121.116.1 dev eth1 proto static
default via 5.34.200.1 dev eth0 proto static
default via 188.121.116.1 dev eth0 proto static
default via 188.121.116.1 dev eth3 proto dhcp src 188.121.119.142 metric 100
5.34.200.0/22 dev eth2 proto kernel scope link src 5.34.201.218
5.34.200.0/22 dev eth0 proto kernel scope link src 5.34.201.22
169.254.169.254 via 188.121.116.10 dev eth3 proto dhcp src 188.121.119.142 metric 100
188.121.116.0/22 dev eth1 proto kernel scope link src 188.121.116.94
188.121.116.0/22 dev eth0 proto kernel scope link src 188.121.116.94
188.121.116.0/22 dev eth3 proto kernel scope link src 188.121.119.142 metric 100
188.121.116.1 dev eth3 proto dhcp scope link src 188.121.119.142 metric 100
188.121.116.10 dev eth3 proto dhcp scope link src 188.121.119.142 metric 100
我修改了netplan
配置文件/etc/netplan/50-cloud-init.yaml
如下:
network:
version: 2
ethernets:
eth0:
addresses:
- 5.34.201.22/22
- 5.34.201.218/22
nameservers:
addresses:
- 8.8.8.8
routes:
- to: default
via: 5.34.200.1
eth1:
addresses:
- 188.121.116.94/22
- 188.121.119.142/22
nameservers:
addresses:
- 8.8.8.8
routes:
- to: default
via: 188.121.116.1
mtr
我使用这样的命令测试了 ips 。
mtr -a 5.34.201.22 example.com
但没有连接。
更新
也尝试过这个。
network:
version: 2
ethernets:
eth0:
addresses:
- 5.34.201.22/22
nameservers:
addresses:
- 8.8.8.8
routes:
- to: default
via: 5.34.200.1
eth1:
addresses:
- 188.121.116.94/22
nameservers:
addresses:
- 8.8.8.8
routes:
- to: default
via: 188.121.116.1
eth2:
addresses:
- 5.34.201.218/22
nameservers:
addresses:
- 8.8.8.8
routes:
- to: default
via: 5.34.200.1
eth3:
addresses:
- 188.121.119.142/22
nameservers:
addresses:
- 8.8.8.8
routes:
- to: default
via: 188.121.116.1
但它没有作用。
答案1
eth2:
[...skip...]
routes:
- to: default <=== default route #1
via: 5.34.200.1
eth3:
[...skip...]
routes:
- to: default <=== default route #2
via: 188.121.116.1
如果没有其他可用路由,则选择默认路由。根据定义,您只能有一个默认路由,其他路由必须指定到与接口位于同一子网的路由器。
https://en.wikipedia.org/wiki/Default_route
多宿主是将一台主机或计算机网络连接到多个网络的做法。这样做是为了提高可靠性或性能。 https://en.wikipedia.org/wiki/Multihoming
但是,如果您拥有多个面向 Internet 的 IP 地址,则您只能在 Internet 上显示为多个特定 IP 地址。在一台未直接连接到 Internet 的计算机上拥有多个 IP 地址将不允许您这样做。
因此,您必须发送经过转发的数据包,尽管该数据包确实与 Internet 有多个连接。
“多个出口 IP”是指来自 Tor 的流量来自多个 IP 地址。这至少可以说是一种变通方法。您将无法控制 IP 地址,Tor 会为您提供它所提供的任何 IP 地址。可能有更好的解决方案,可以使用多个虚拟专用服务器 (VPS),您将流量发送到这些服务器,然后它会从每个 VPS 上的地址转发流量。
如果您真正想做的是监控某项需要运行的服务,那么有各种各样的选择。
寻找 APM,即应用程序性能监控,也称为应用程序性能管理。
https://www.google.com/search?q=foss+apm
https://en.wikipedia.org/wiki/Application_performance_management