Назад | Перейти на главную страницу

привязка: невозможно назначить запрошенный адрес

Я недавно перешел на AWS из Rackspace и настраиваю простой сервер геолокации, используя Freegeopip. Хотя следующие команды отлично работают на новом сервере Rackspace (Ubuntu), я не могу начать работать с AWS (пробовал Red Hat и Ubuntu). Вот код, который я использовал для его настройки:

curl -s https://storage.googleapis.com/golang/go1.4.1.linux-amd64.tar.gz | tar -C /opt -zx
export GOPATH=$HOME
export GOROOT=/opt/go
export PATH=$PATH:/opt/go/bin
go get github.com/fiorix/freegeoip/cmd/freegeoip
$GOPATH/bin/freegeoip -addr="<MY IP ADDRESS>:8080"

Как я уже сказал, это отлично работает на моем Rackspace instace, но AWS выдает мне эту ошибку:

listen tcp <MY IP ADDRESS>:8080: bind: cannot assign requested address

Я проверил этот порт с помощью netstat, и на нем ничего не работает. Понятия не имею, почему я получаю эту ошибку. Любые идеи?

Во многих случаях привязка к 0.0.0.0 - лучший способ действия, если у вас нет конкретной причины привязать только к определенному адресу.

Но я предполагаю, что то, что вы делаете, не работает, потому что вы пытаетесь привязаться к общедоступному IP-адресу экземпляра, который вы найдете (через ifconfig) ваш IP-стек не знает.

Экземпляры AWS изначально знают только свой частный IP-адрес, к которому вам нужно привязаться.

Общедоступные адреса инстансов EC2 (классический и VPC), ассоциированные с инстансами, преобразовываются 1: 1 NAT в частный адрес сетевой инфраструктурой AWS.

AWS выполняет преобразование сетевых адресов между вашим экземпляром и Интернетом. Таким образом, экземпляр AWS может быть доступен по IP-адресу 08.08.08.0808, однако сервер фактически настроен на использование 88.88.88.88. Что мне нужно сделать, так это привязать к внутреннему IP-адресу сервера, который я нашел с помощью ifconfig.