У меня есть два сервера, и 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, не работают!
Ваши 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
, если вам нужна межсетевая защита.
Полагаю, вы пробовали 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