У меня есть два интерфейса на моем сервере, eth0 и eth0:0. Это - два различных внешних IP-адреса и очевидно два различных обратных домена.
Когда я открываю IO:: Сокет:: соединение INET, Perl использует интерфейс eth0 по умолчанию. Я хотел бы использовать второй интерфейс (eth0:0), потому что это имеет другой IP, и я не хочу использовать свой основной IP или домен.
У меня нет абсолютно никакой идеи, как выбрать который интерфейс соединиться через.
Вот код, который я использую для открытия сокета:
my $sock = new IO::Socket::INET(PeerAddr => $server,
PeerPort => $serverPort,
Proto => 'tcp') or
die "Can't connect to server: $!";
Вы должны указать IO::Socket::INET адрес интерфейса, который вы хотите использовать в качестве параметра LocalAddr
. Представьте, что 10.0.0.1
- это IP-адрес eth0, а 10.0.0.2
- IP-адрес eth0:0, тогда это будет работать следующим образом.
my $sock = new IO::Socket::INET(PeerAddr => $server,
PeerPort => $serverPort,
Proto => 'tcp'
LocalAddr => '10.0.0.2') or
die "Can't connect to server: $!";