kitabisa / mubeng

An incredibly fast proxy checker & IP rotator with ease.
Apache License 2.0
1.62k stars 187 forks source link

[FEATURE] IP Rotation on local IPv6 Subnet #60

Open BackInBash opened 3 years ago

BackInBash commented 3 years ago

It would be cool to use the local IPv6 Subnet for the IP rotating feature instead of external proxy servers.

kitabisa-bot[bot] commented 3 years ago

Thank you for raising a issue to us so promptly. Please make sure you have given us as much context as possible.

We will try and get back to you as soon as possible.

on hold

dwisiswant0 commented 3 years ago

Can you explain how your expectations were when used as an illustration, @BackInBash?

BackInBash commented 3 years ago

My thoughts are to use the IP rotation feature for local bound IPv6 addresses and not for other proxy servers. Something like this.

image

dwisiswant0 commented 3 years ago

If indeed:

  1. Dynamically assign (it'll interfere with other requests), or
  2. Subnets have an open port (to use) as a proxy.

If it's the second situation from the above, it should now be possible for you to add it to the proxy pool for random use.


Maybe I still don't understand how your point of view is to use the local subnet as a proxy, such as what input mubeng needs to choose IPv6(?). It would be even more efficient if it didn't require (break) changes in the core.

BackInBash commented 3 years ago

your point of view is to use the local subnet as a proxy

Not as proxy. The proxy server should use the ip pool and randomly select an ip address as its outgoing request ip.

dwisiswant0 commented 3 years ago

your point of view is to use the local subnet as a proxy

Not as proxy. The proxy server should use the ip pool and randomly select an ip address as its outgoing request ip.

Ok then,

...what input mubeng needs to choose IPv6(?)

BackInBash commented 3 years ago

...what input mubeng needs to choose IPv6(?)

No input the only thing you should need in my opinion is a on off switch (bool).

  1. Grab the routing table and get the default ipv6 gateway and save the interface

  2. Get the IPv6 Subnet from the selected Interface

    On Windows it looks like this:

    20 281 ::/0 fe80::464e:6dff:fe40:810b -> This is your Default GW entry 20 is your Interface ID

    C:\Users\BackInBash>route print
    ===========================================================================
    Interface List
    20...00 00 00 00 00 00 ......Intel(R) I211 Gigabit Network Connection
    28...00 00 00 00 00 00 ......VirtualBox Host-Only Ethernet Adapter
    1...........................Software Loopback Interface 1
    23...00 00 00 00 00 00 ......Hyper-V Virtual Ethernet Adapter
    ===========================================================================
    
    IPv6 Route Table
    ===========================================================================
    Active Routes:
    If Metric Network Destination      Gateway
    20    281 ::/0                     fe80::464e:6dff:fe40:810b
    1    331 ::1/128                  On-link
    1    331 ff00::/8                 On-link
    28    281 ff00::/8                 On-link
    20    281 ff00::/8                 On-link
    23   5256 ff00::/8                 On-link
    ===========================================================================
    Persistent Routes:
    None

    To get the IPv6 Subnet from an Interface:

    Get-NetIPAddress -InterfaceIndex 20 -AddressFamily IPv6 | Select-Object -Property IPAddress,PrefixLength

    On Linux:

    BackInBash@yellow:/$ ip -6 route show
    default via fe80::1 dev eth0 proto kernel metric 1024 onlink pref medium

    To get the IPv6 Subnet from an Interface

    ip -o -f inet6 addr show | awk '/scope global/ {print $4}'

    So eth0 is your Interface

  3. Now you have the IPv6 Subnet so you can start to calculate random IPs from and do requests from them.

Here are some example random ipv6 generators:

dwisiswant0 commented 3 years ago

But route scope (*nix) is configured by system (administrator), @BackInBash. Thoughts?

BackInBash commented 3 years ago

Read-only operations should be able to be performed without admin privileges. Which golang lib are you using?