передайте входящий трафик локальному слушателю

Можно загрузиться с живым дистрибутивом Linux и типом:

dd if=/dev/sda of=/dev/sdb bs=1m

Где /dev/sda узел устройства входа (источник) диск и /dev/sdb узел устройства вывода (целевой) диск. Это сделает диски ТОЧНО идентичными. Конечный диск должен быть, по крайней мере, столь же большим как источник.

3
задан 8 February 2014 в 15:28
1 ответ

Кажется что DNAT для трафика обратной связи невозможен.

Трафик обратной связи пропускает цепочки PREROUTING и OUTPUT. loopback address. A datagram sent by a higher-level protocol to an address anywhere within this block loops back inside the host. This is ordinarily implemented using only 127.0.0.1/32 for loopback. As described in [RFC1122], Section 3.2.1.3, addresses within the entire Блоки 127.0.0.0/8 не появляются ни в одной сети на законных основаниях.


Кроме того, трафик на интерфейс обратной связи рассматривается как Марсианские пакеты :

эти пакеты фактически не могут быть отправлены как заявлено или будет доставлено


Обходной путь:

Простая альтернатива - использовать inted сервер на стороне Сервера и его функция перенаправления .

Таким образом, вы можете определить службу un в inetd и установить порт, который эта служба будет слушать. Затем установите директиву redirect для привязки этого порта к 127.0.0.1:port .

В моем примере ниже я буду использовать xinetd (в Ubuntu 12.04 LTS) для привязки сервера mysql , работающего на 127.0.0.1:10000 :

Шаг 1: Установите пакет: apt-get install xinetd

Шаг 2: Отредактируйте файл конфигурации /etc/xinetd.conf

Добавьте определение службы, подобное приведенному ниже :

service my_redirector
{
 type = UNLISTED
 disable = no
 socket_type = stream
 protocol = tcp
 user = root
 wait = no
 port = 15000
 redirect = 127.0.0.1 10000
 log_type = FILE /tmp/somefile.log
}

Шаг 3: Перезапустить xinetd демон: service xinetd restart

Шаг 4: давайте проверим прослушиватель на порту 15000 :

# netstat -anp | grep 15000
tcp     0      0 0.0.0.0:15000      0.0.0.0:*     LISTEN      4654/xinetd

Шаг 5: Добавьте свои iptables правила:

iptables -A INPUT -i eth0 -p tcp -d 192.168.0.60 --dport 15000 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -s 192.168.0.60 --sport 15000 -j ACCEPT

Давайте протестируем:

Для тестирования я установил mysql для прослушивания 127.0. 0,1: 10000 . Я попытаюсь получить к нему доступ через службу xinetd на порту 15000 .

Во-первых, на стороне сервера я проверяю, что сервер mysql только слушает на 127.0.0.1:10000 :

# netstat -anp | grep :10000
tcp    0    0 127.0.0.1:10000    0.0.0.0:*      LISTEN      4247/mysqld

Затем на стороне клиента пусть ' s проверьте, можем ли мы подключиться через порт 15000 :

# telnet 192.168.0.60 15000
Trying 192.168.0.60...
Connected to 192.168.0.60.
Escape character is '^]'.
_
5.5.35-0ubuntu0.12.04.2-logD46S}<P`.6cr4ITIQ<wcmysql_native_password

Кажется, мы можем! :)

Попробуем подключиться к серверу mysql :

# mysql -h 192.168.0.60 --port=15000 -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 67
Server version: 5.5.35-0ubuntu0.12.04.2-log (Ubuntu)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Готово!

1
ответ дан 3 December 2019 в 07:30

Теги

Похожие вопросы