Назад | Перейти на главную страницу

Debian etch: как исправить неправильные iptables / NAT

У меня проблема на машине 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 показывающий поток пакета через различные таблицы.