Як дозволити вихідні з'єднання через iptables?


17

У мене два сервери. Програмі на першому потрібно зв’язатися з другим на порту 2194.

Я знаю, що це не працює, тому що коли я роблю:

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

але це працює, коли ви робите telnet localhost 2194 на сервері1? що з telnet server1spublicip 2194 з server1?
Geraint Jones

telnet localhost 2194 на сервері2 працює. telnet server2ipaddress 2194 на сервері2 також працює.
siliconpi

1
con you do: iptables -L -n на обох серверах, і скажіть мені, якщо ви отримаєте більше ніж наступне (я не хочу бачити ваші правила тощо ;-)) Chain INPUT (policy ACCEPT) target prot opt ​​source source Chain FORWARD ( політика ACCEPT) target prot opt ​​source source location Chain OUTPUT (policy ACCEPT) target prot opt ​​source source
location

Привіт! Дивіться редагування будь ласка ...
siliconpi

Відповіді:


21

Щоб дозволити вихідні з'єднання з server1 до server2 на порту TCP 2194, використовуйте це на сервері1:

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

Щоб дозволити вхідні з'єднання з server1 до server2 на порту TCP 2194, використовуйте це на сервері2:

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

Лайно - я зробив першу, не працював. Я зробив друге, що не працювало або ... У мене можуть бути дуже обмежувальні налаштування ... див. Редагування раніше
siliconpi

1
Спробуйте використовувати "-I" замість "-A"; це ставить нові правила вище всіх інших, які, можливо, вже існують.
Массімо

Чи слід робити щось інше, якщо програма насправді використовує доменне ім'я, а не ip-адресу безпосередньо?
siliconpi

Вау ... я вмію телефонувати з підказки, лише зробивши першу заяву ...
siliconpi

3
Його мінус - як і в "я" для людей, які могли прочитати це як L
siliconpi

6

Всього кілька покажчиків

Служба, яку ви працюєте, слухає лише в localhost? Біжи

netstat -ltn

Якщо ви бачите такий рядок, 0.0.0.0:2194то ви все в порядку. Якщо ви бачите , 127.0.0.1:2194то ви слухаєте тільки на локальних з'єднань (або :::2194і ::1:2194відповідно для IPv6 - адрес, показаних tcp6ліній).

Які поточні правила iptables?

iptables -L

Чи політика DROP / REJECT (якщо вона не є, для всіх ланцюжків)? Чи є певне правило для потрібного вам порту?

Якщо це проблема з брандмауером, то або зміна правила, що порушує право, або додавання такого типу

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

повинен зробити трюк (неперевірений)

=== EDIT ===

Для тестування мережевого питання хорошим інструментом є tcpdump. Запускайте його на обох серверах, намагаючись підключитися і побачити, куди збираються пакети. наприклад, на сервері 1 запустіть:

tcpdump -i eth0 -n host server2.com

і на сервері 2 запустіть:

tcpdump -i eth0 -n host server1.com

Потім спробуйте підключитися. Ви повинні побачити всі пакети TCP, скинуті на екран, з джерела та місця призначення. За допомогою цієї інформації ви зможете точно визначити, де проблема.


Привіт Ден - я не думаю, що у сервера2 є проблеми з прийняттям зв'язку (я можу підключитися до нього за допомогою домашнього ПК), але я думаю, що сервер1 не дозволяє вихідне з'єднання ...
siliconpi

iptables -A OUTPUT -p tcp --portport 2194 -j ACCEPT
Geraint Jones

Привіт c10k, це не працювало ... І tryign в telnet теж не працював
siliconpi

Додано кілька інших ідей
Dan Andreatta

Привіт тут 2194 - номер мого порту або номер цільового IP-порту?
Томмі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.