• Julien Muchembled's avatar
    UPnP: randomize external port · 3a9e668c
    Julien Muchembled authored
    Some routers are so broken that UPnP NAT don't report ConflictInMappingEntry
    when redirecting the same port several times.
    
    Here is for example what we had with a Numericable Box (France):
    
    0 (1024, 'TCP', ('192.168.0.29', 1194), 're6stnet openvpn server (1194/tcp)', '1', '', 0)
    1 (1024, 'TCP', ('192.168.0.16', 1194), 're6stnet openvpn server (1194/tcp)', '1', '', 0)
    2 (1024, 'TCP', ('192.168.0.33', 1194), 're6stnet openvpn server (1194/tcp)', '1', '', 0)
    3 (1024, 'TCP', ('192.168.0.20', 1194), 're6stnet openvpn server (1194/tcp)', '1', '', 0)
    ('192.168.0.29', 1194, 're6stnet openvpn server (1194/tcp)', True, 0)
    
    Obviously, this can't work.
    
    It seems that this router also accepts a limited number of NAT rules, far less
    than we'd like, so even if there's still a probability of conflict with this
    commit, it will be good enough for our use.
    3a9e668c
upnpigd.py 3.55 KB