Подключите два сервера с кабелем RJ-45 и iptables (без переключателя!)

У меня есть два сервера, и server_1 подключен к ИНТЕРНЕТ-порту (фермы сервера) в eth0. Никакой переключатель. Они соединились с кабелем от (server_1) eth1-> (server_2) eth0:

ifconfig of (server_1):
eth0    inet addr:199.203.51.24,
eth0:1  inet addr:212.235.19.200,
eth1 inet addr:10.0.0.1

ifconfig of (server_2):
eth0   inet addr:10.0.0.2

Я хочу подключить server_2 к Интернету с server_1 и получить для него статический IP-адрес от gatway в (server_1) eth0.

испытанное использование iptables в (server_2) как это:

iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.0.0.2 -j SNAT --to-source 212.235.19.203
iptables -t nat -A PREROUTING -d 212.235.19.203 -j DNAT --to-destination 10.0.0.2

в то время как IP маскирования 212.235.19.203. это, хорошо работает только для мира, но!! внутри server_2, пытающиеся проверять с помощью ping-запросов 212.235.19.203, не работают!

0
задан 23 July 2014 в 15:16
2 ответа

Ваши iptables правила нарушаются разными способами. Во-первых, ваша цепочка POSTROUTING имеет два правила, но первое соответствует каждому пакету, поэтому второе правило никогда не используется.

Во-вторых, ваши правила SNAT и MASQUERADE должны применяться только к пакетам, уходящим по eth0.

Но начиная с 212.235.19. 203 назначен только одному компьютеру, возможно, лучше вообще не использовать NAT.

Альтернативным решением является то, что вы позволяете хосту, назначенному в данный момент 10.0.0.2, на самом деле назначить 212.235.19.203 физическому сетевому интерфейсу (с сетевой маской 255.255.255.255)). Шлюзу необходим статический маршрут, указывающий, что 212.235.19.203/32 подключен локально по eth1. Кроме того, вы можете включить proxy_arp на eth0.

В этой комбинации вы получите IP-адрес, действительно маршрутизированный на предполагаемый узел, что сделает все лучше. Вы можете избежать правил NAT для этого IP, вы все еще можете фильтровать трафик в цепочке FORWARDING, если вам нужна межсетевая защита.

.
1
ответ дан 4 December 2019 в 17:22

Полагаю, вы пробовали iptables в (server_1), а не в (server_2), как вы сказали.

Проблема здесь в том, что (server_2) не знает, что он должен отвечать на пакеты, чей адрес назначения 212. 235.19.203.

Одно из возможных решений - использовать следующее в (server_2):

iptables -t nat -I PREROUTING -d 212.235.19.203 -j REDIRECT
0
ответ дан 4 December 2019 в 17:22

Теги

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