2013-07-24 44 views
18

Vì vậy, tôi đang sử dụng AWS bằng EC2 và tôi đang cố gắng mở một cổng cho Postgresql. Trong AWS Tôi đã có nó mở:Cổng mở trong Ubuntu

TCP 
Port (Service)  Source     Action 
0 - 65535   sg-92aadda2 (default) Delete 
22 (SSH)   0.0.0.0/0    Delete 
80 (HTTP)   0.0.0.0/0    Delete 
5432    0.0.0.0/0    Delete 

Khi tôi netstat nó trông như thể cổng đang lắng nghe:

# netstat -an | grep 5432 
tcp  0  0 127.0.0.1:5432   0.0.0.0:*    LISTEN 

Khi tôi làm một nmap localhost tôi nhận được như sau:

Nmap scan report for localhost (127.0.0.1) 
Host is up (0.000010s latency). 
Not shown: 997 closed ports 
PORT  STATE SERVICE 
22/tcp open ssh 
80/tcp open http 
5432/tcp open postgresql 

Và đây là nơi thú vị bắt đầu. Khi tôi làm một nmap từ một máy chủ thay thế tôi nhận được như sau:

PORT  STATE SERVICE 
22/tcp open ssh 
80/tcp open http 
5432/tcp closed postgresql 

Tôi cũng nhìn iptables của tôi để xem nếu tôi nhớ da diết cái gì đó, nhưng iptables trông trống (mà nên có nghĩa là họ không thực sự làm nhiều)

$ iptables -L 
Chain INPUT (policy ACCEPT) 
target  prot opt source    destination 
ACCEPT  all -- anywhere    anywhere 
REJECT  all -- anywhere    127.0.0.0/8   reject-with icmp-port-unreachable 
ACCEPT  all -- anywhere    anywhere    state RELATED,ESTABLISHED 
ACCEPT  tcp -- anywhere    anywhere    tcp dpt:http 
ACCEPT  tcp -- anywhere    anywhere    tcp dpt:https 
ACCEPT  tcp -- anywhere    anywhere    state NEW tcp dpt:ssh 
ACCEPT  tcp -- anywhere    anywhere    tcp dpt:postgresql 
ACCEPT  icmp -- anywhere    anywhere 
LOG  all -- anywhere    anywhere    limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: " 
DROP  all -- anywhere    anywhere 

Chain FORWARD (policy ACCEPT) 
target  prot opt source    destination 
DROP  all -- anywhere    anywhere 

Chain OUTPUT (policy ACCEPT) 
target  prot opt source    destination 
ACCEPT  all -- anywhere    anywhere 

Tôi thiếu điều gì đó khiến tôi không thể tìm ra cách truy cập vào ip. Bất cứ khi nào tôi thử, tôi nhận được lỗi sau:

Is the server running on host "xx.xx.xx.xx" and accepting TCP/IP connections on port 5432? 

Làm cách nào để tôi có thể mở cổng để máy chủ bên ngoài có quyền truy cập vào nó? Cảm ơn trước =) Lemme biết nếu bạn cần bất kỳ dữ liệu bổ sung.

EDIT: Như hỏi dưới đây, tôi thử nghiệm telnet, và tôi đã có thể telnet vào localhost, nhưng khi cố từ bên ngoài tôi nhận được:

$ telnet xx.xx.xx.xx 5432 
Trying xx.xx.xx.xx... 
telnet: Unable to connect to remote host: Connection refused 

Ngoài ra, tôi đôi kiểm tra và tôi đã đúng có thể telnet vào ssh:

$ telnet xx.xx.xx.xx 22 
Trying xx.xx.xx.xx... 
Connected to xx.xx.xx.xx. 
Escape character is '^]'. 
SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.1 
+0

bạn đang bỏ lỡ một câu hỏi thực tế, do đó, nó không hoàn toàn rõ ràng những gì bạn muốn chúng tôi trả lời. Ngoài ra, "Bất cứ khi nào tôi thử tôi nhận được lỗi sau:" bạn đang cố gắng cung cấp cho bạn lỗi đó là gì? Bạn đã thử telnet vào máy chủ chưa? Ngoài ra, không có nhiều trong iptables của bạn, nhưng nếu bạn có một mặc định từ chối kích hoạt thì không có gì là nhận được hộp đó TRỪ những gì được chỉ định để được cho phép trong iptables của bạn –

+0

@RussellUhl Xin lỗi, tôi nghĩ tôi đã hỏi nó, nhưng dường như không. Tôi đã thêm câu hỏi vào cuối. Tôi đã không cố gắng telnetting vào máy chủ. Tôi sẽ thử ngay bây giờ. –

+0

không phải lo lắng. Tôi đã chỉnh sửa bình luận của tôi ở trên để bao gồm một cái gì đó trên iptables của bạn. Hãy chắc chắn rằng bạn kiểm tra xem đó là –

Trả lời

33

Sửa /etc/postgresql/<version>/main/postgresql.conf và thiết lập listen_addresses để outgoing interface của bạn hoặc tất cả. Khởi động lại postgresql: sudo service postgresql restart.

+1

Điều này cũng giúp tôi: http://www.cyberciti.biz/tips/postgres-allow-remote-access-tcp-connection.html – nikeee

+1

Chỉ cần một bình luận cho bất cứ ai làm điều này: tham số địa chỉ IP 'listen_addresses' là tham số mà posgresql đang nghe ** từ ** (đích INPUT trong cú pháp' iptables'), không phải IP mà nó đang nghe ** tới * * (nguồn INPUT). – Escher

23

Nó làm việc cho tôi phương pháp cuối cùng (thks Julio):

Edit: postgresql.conf

sudo nano /etc/postgresql/9.3/main/postgresql.conf

Bật hoặc thêm:

listen_addresses = '*'

Khởi động lại cơ sở dữ liệu:

sudo service postgresql restart


Bên cạnh đó, bạn có thể kiểm tra các tập tin: pg_hba.conf

sudo nano /etc/postgresql/9.3/main/pg_hba.conf

Và thêm mạng hoặc máy chủ địa chỉ của bạn:

host all all 192.168.1.0/24 md5

Các vấn đề liên quan