Làm cách nào để cho phép kết nối đi qua iptables?


17

Tôi có hai máy chủ. Chương trình đầu tiên cần liên lạc với cái thứ hai trên cổng 2194.

Tôi biết nó không hoạt động, bởi vì khi tôi làm:

root@server1 [~]# telnet myserver2.com 2194
Trying 123.123.123.98...
telnet: connect to address 123.123.123.98: Connection timed out
telnet: Unable to connect to remote host: Connection timed out

server1# iptables -L -n

Chain INPUT (policy DROP)
...
...

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy DROP)
...

Chain LOCALINPUT (1 references)
target     prot opt source               destination
...

Chain LOCALOUTPUT (1 references)
target     prot opt source               destination
...

Chain LOGDROPIN (1 references)
target     prot opt source               destination
DROP       all  --  0.0.0.0/0            0.0.0.0/0

Chain LOGDROPOUT (1 references)
target     prot opt source               destination
DROP       all  --  0.0.0.0/0            0.0.0.0/0

Nhưng nó hoạt động khi bạn làm telnet localhost 2194 trên server1? Còn máy chủ telnet1spublicip 2194 từ server1 thì sao?
Geraint Jones

telnet localhost 2194 trên server2 hoạt động. telnet server2ipaddress 2194 trên server2 cũng hoạt động.
siliconpi

1
con bạn làm: iptables -L -n trên cả hai máy chủ và cho tôi biết nếu bạn nhận được nhiều hơn những điều sau đây (tôi không muốn xem quy tắc của mình, v.v; ACCEPT chính sách) đích đích của nguồn tham chiếu prot Chain Chain OUTPUT (ACCEPT chính sách) đích đích của nguồn tham chiếu prot
Geraint Jones

Xin chào! Vui lòng xem chỉnh sửa ...
siliconpi

Câu trả lời:


21

Để cho phép các kết nối đi từ server1 đến server2 trên cổng TCP 2194, hãy sử dụng kết nối này trên server1:

iptables -A OUTPUT -p tcp -d <server2ip> --dport 2194 -j ACCEPT

Để cho phép các kết nối đến từ server1 đến server2 trên cổng TCP 2194, hãy sử dụng kết nối này trên server2:

iptables -A INPUT -p tcp -s <server1ip> --dport 2194 -j ACCEPT

Crap - Tôi đã làm đầu tiên, không làm việc. Tôi đã làm lần thứ hai, điều đó cũng không hoạt động ... Tôi có thể có các cài đặt rất hạn chế tại chỗ ... xem bản chỉnh sửa trước đó
siliconpi

1
Hãy thử sử dụng "-I" thay vì "-A"; điều này đặt các quy tắc mới lên trên tất cả các quy tắc khác có thể đã được áp dụng.
Massimo

Tôi có nên làm bất cứ điều gì khác nếu ứng dụng thực sự sử dụng tên miền, thay vì địa chỉ IP trực tiếp?
siliconpi


3
Điểm trừ của tôi là "i" đối với những người có thể đọc nó dưới dạng L
siliconpi

6

Chỉ cần một vài gợi ý

Là dịch vụ bạn đang chạy chỉ nghe trên localhost? Chạy

netstat -ltn

Nếu bạn thấy một dòng như thế 0.0.0.0:2194thì bạn ổn. Nếu bạn thấy 127.0.0.1:2194thì bạn đang nghe chỉ trên các kết nối địa phương (hoặc :::2194::1:2194tương ứng cho các địa chỉ IPv6, hiển thị như tcp6dòng).

Các quy tắc iptables hiện tại là gì?

iptables -L

Là chính sách DROP / RE DỰ ÁN (nếu không phải như vậy, đối với tất cả các chuỗi)? Có một quy tắc cụ thể cho cổng bạn cần?

Nếu đó là sự cố tường lửa, thì việc sửa đổi quy tắc vi phạm hoặc thêm quy tắc như

iptables -A INPUT -p tcp --dport 2194 -j ACCEPT 

nên làm thủ thuật (chưa được kiểm tra)

=== CHỈNH SỬA ===

Để kiểm tra vấn đề mạng một công cụ tốt là tcpdump. Chạy nó trên cả hai máy chủ trong khi cố gắng kết nối và xem các gói đang đi đâu. ví dụ: trên máy chủ 1 chạy:

tcpdump -i eth0 -n host server2.com

và trên máy chủ 2 chạy:

tcpdump -i eth0 -n host server1.com

Sau đó thử kết nối. Bạn sẽ thấy tất cả các gói TCP được đổ trên màn hình, từ nguồn và đích. Với thông tin này, bạn sẽ có thể xác định được vấn đề ở đâu.


Xin chào - Tôi không nghĩ server2 có bất kỳ vấn đề gì khi chấp nhận kết nối (Tôi có thể kết nối với nó bằng máy tính ở nhà), nhưng tôi nghĩ server1 không cho phép kết nối đi ...
siliconpi

iptables -A OUTPUT -p tcp --dport 2194 -j CHẤP NHẬN
Geraint Jones

Xin chào c10k, điều đó không hoạt động ... Và cố gắng để telnet cũng không hoạt động
siliconpi

Đã thêm một vài ý tưởng khác
Dan Andreatta

Xin chào ở đây 2194 là số cổng của tôi hoặc số cổng IP mục tiêu?
Tommy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.