Автор Тема: IPtables port forwarding донастройка  (Прочетена 2720 пъти)

Starbust

  • Напреднали
  • *****
  • Публикации: 15
    • Профил
Здравейте, нов съм в линукс света. Та проблема ми е следния:

Ползвам Ubuntu 10.04 с iptables. За да пренасоча идващия трафик от едната карта към определен порт на другата ползвам следните правила:

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 3306 -j DNAT --to 192.168.0.2:3306
iptables -A FORWARD -p tcp -m state --state NEW --dport 3306 -d 192.168.0.2 -j ACCEPT

трафика се пренасочва правилно. Отвън мога да се свържа към работещ в локалната мрежа SQL сървър, но проблема ми е, че след пренасочването адреса на източника вече е 192.168.0.1(който е адреса на вътрешната мрежова карта). Не може ли ако моя ип адрес е например 78.108.60.30 той да не се променя на 192.168.0.1 след като е минал през убунту машината?
Активен

teleport

  • Напреднали
  • *****
  • Публикации: 134
    • Профил
Re: IPtables port forwarding донастройка
« Отговор #1 -: Jun 09, 2011, 07:59 »
DNAT не променя source ip-то. Това го прави някое друго правило, вероятно имаш -j MASQUERADE. Покажи и останалите правила в iptables.
Активен

Starbust

  • Напреднали
  • *****
  • Публикации: 15
    • Профил
Re: IPtables port forwarding донастройка
« Отговор #2 -: Jun 09, 2011, 20:01 »
Мерси. Наистина имаше -j MASQUERADE. Като го махнах и се оправи.
Активен

teleport

  • Напреднали
  • *****
  • Публикации: 134
    • Профил
Re: IPtables port forwarding донастройка
« Отговор #3 -: Jun 10, 2011, 16:56 »
Всъщност не трябва да се маха ако машината работи като рутер. Трябва да е активно само за външния (WAN) интерфейс.

Ако публичното IP е примерно на eth0 то правилото трябва да е:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Активен