У меня проблема на машине Debian Etch ... По темным и бурным причинам его ip на eth0 странный, но мы должны оставить его вот так ...
Его ifconfig:
eth0 Link encap:Ethernet
inet addr:128.0.0.250 Mask:255.255.0.0
eth1 Link encap:Ethernet
inet addr:192.168.1.250 Mask:255.255.255.0
С помощью команды:
iptables –t nat –L POSTROUTING
Я получил:
target prot opt source destination
ACCEPT 0 -- 128.0.0.2 anywhere
MASQUERADE 0 -- !192.168.1.0/24 anywhere
Второе правило, если я правильно понял, делает физический трафик отличным от 192.168.1.0/24. Другими словами, все пакеты, направляемые в локальную сеть, для которой у меня есть правило маршрутизации, отправляются с IP-адреса машины Debian Etch, теряя своего реального отправителя.
Я бы хотел, чтобы на этой машине не NAT не проходил трафик. Попробую пояснить ... Он должен NAT только трафик, идущий с 128.0.0.250 (его ip) и исходящий с 192.168.1.250.
В последнее время я изучаю Linux, и это многовато: / Кто-нибудь может помочь (возможно, дать указания по резервному копированию конфигурации, чтобы я мог быть в безопасности в случае полного беспорядка)?
Большое спасибо!
Вы можете создать резервную копию текущей конфигурации iptables с помощью:
iptables-save >iptables-20101117
Это сохранит текущие действующие правила, которые можно восстановить с помощью:
iptables-restore <iptables-20101117
Команда "iptables -L" не перечисляет всю информацию о правилах, включая такие вещи, как ограничения интерфейса, поэтому мы не можем видеть здесь полную картину. Я обычно смотрю на вывод «iptables-save», чтобы убедиться, что вижу полную информацию о правилах.
Согласно правилу, не должно быть трафика, исходящего с его внутреннего IP-адреса 128 и выходящего через интерфейс 192. Трафик, покидающий интерфейс 192, должен быть привязан к IP-адресу интерфейса 192. Так что, если вам не нужно правило MASQUERADE, вы можете его удалить.
Обычно я меняю правила, редактируя файл и используя iptables-restore для полного набора правил. iptables-restore является атомарным, поэтому сразу применяется полный набор новых правил.
Кроме того, вы можете получить более подробный результат с помощью:
iptables –t nat –vnL POSTROUTING
Это покажет вам интерфейсы ввода / вывода для правила. (часть -n говорит, что он не разрешает номера портов / IP-адреса, на которые мне легче смотреть, но это скорее вопрос вкуса ...)
Что касается правил, то с NAT я стараюсь придерживаться правил на основе интерфейса, а не сопоставления IP-адресов, поскольку он более устойчив в средах, где внешний IP-адрес может измениться.
Наиболее распространенное правило NAT для исходящего трафика:
iptables -t nat -I POSTROUTING -s <LAN netblock> -o eth0 -j MASQUERADE
Таким образом, весь трафик из локальной сети, направленный в более широкий мир (если это то, что такое eth0), будет иметь IP-адрес eth0. (Отредактировано с исправлением)
Однако, если я правильно прочитал ваш запрос, похоже, вам вообще не нужен NAT. Помните, что трафик, поступающий непосредственно с самого компьютера, всегда будет иметь адрес источника интерфейса, на котором он идет. Для этого вам не нужны никакие правила NAT.
Здесь полезная диаграмма: http://www.shorewall.net/NetfilterOverview.html показывающий поток пакета через различные таблицы.