..........

binding to the local IP seems to be a windows only thing.

No, it is a pretty standard BSD socket layer thing. (Windows got its original
TCP stack from there too). I just tested a Linux RHEL6 host binding to a
specific address just now using telnet:

  /usr/bin/telnet -b x.x.x.193 x.x.x.174 22

where the .193 is not the primary address - it is an additional local address.
The connection was correctly received by the target as from the alias address,
not the base address:
I don't think I'll be able to do all I need with telnet :(


........

Please show me the exact code you're using. This really should work without
annoying "device" binding.

The counter examples in the articules you cite are for particularly weird
circumstances, such as where the routing table cannot correctly deduce the
interface (distinct attached networks with the _same_ network numbering -
ghastly). They don't say "binding to the local IP seems to be a windows only
thing" that I can see.

Please post your failing code. I suspect you're missing something.
.......
Well originally I was hacking on miproxy to try and get it to use a specific ip address. I must have messed up somewhere there as when I try this more obvious code

from socket import socket, SOL_SOCKET
BIND_DEVICE='eth0.0'
sock = socket()
sock.settimeout(10)
sock.bind(('xx.xx.xx.13', 0))
#sock.setsockopt(SOL_SOCKET, 25, BIND_DEVICE)
sock.connect(("int.hhhhhh.com", 80))
sock.send("GET / HTTP/1.0\r\n\r\n")
print sock.recv(20)
sock.close()

it does work as intended and I can see the .13 address hitting the remote server. I guess my hack of the miproxy code didn't work as intended.

Anyhow my upstream provider has taken over the problem so hopefully I will get the address cleared at some point.
--
Robin Becker

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to