Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - doug.dimick

#16
17.7 Legacy Series / Re: Alias for ASN from whois
January 26, 2018, 09:01:18 PM
Tweaked to allow querying for multiple ASNs:

import socket
import re

## https://tools.ietf.org/html/rfc3912
def whois_request(domain, server, port=43):
    _sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    _sock.connect((server, port))
    _sock.send("%s\r\n" % domain)
    _result = ""
    while True:
        _data = _sock.recv(1024)
        if not _data:
            break
        _result += _data
    return _result

def get_AS(AS,IPV4=True,IPV6=True):
    ## sanitize ASN
    _asn = re.search("(?:AS)?(\d{1,10})",AS,re.IGNORECASE)
    if not _asn:
        return ""
    _asn = "AS{0}".format(_asn.group(1))
    is6 = ""
    if IPV6:
        is6 = "[6]?" if IPV4 else "6"
    _raw = whois_request("-i origin {0}".format(_asn),"whois.radb.net")
    if _raw:
        _ips= re.findall("^route{0}:\s+(.*?)$".format(is6),_raw,re.MULTILINE)
        return "\n".join(_ips)
    return ""

if __name__ == "__main__":
    import sys
    if len(sys.argv) > 1:
      for i in range(1,len(sys.argv)):
        AS=sys.argv[i]
        print get_AS(AS,IPV6=False)
    else:
      print "Usage:",sys.argv[0],"as32934"
#17
What options are available to create aliases using ASNs?
#18
ASN lookup for policy routing is a necessary feature for me as well. Also see https://forum.opnsense.org/index.php?topic=5964.msg24801#msg24801.