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

Не удалось заставить iptables правильно пересылать в SuSE Linux

Я изо всех сил пытаюсь перенаправить порт через iptables. Я много гуглил, но все решения, которые я пробовал, не работают.

Очень простая установка с тремя компьютерами в одной локальной сети

192.168.0.1 # destination
192.168.0.2 # redirector (only one interface)
192.168.0.3 # source

Мой iptables config тоже довольно прост

# iptables -L -n -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 to:192.168.0.1
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443 to:192.168.0.1

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0

# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

# iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT

Согласно тому, что я читал, это должно работать. Но это не так. Я альтернативно играл с iptables -t nat -I POSTROUTING 1 -p tcp -d 192.168.0.1 --dport 443 -j SNAT --to-source 192.168.0.1 но тоже не работает. И да ip_forward включен.

Сидя в 192.168.0.2:80/443 должен возвращать контент из 192.168.0.1нет? Любые идеи?

У меня все заработало! Правильные правила

iptables -t nat -A PREROUTING -d 192.168.0.2 ! -s 192.168.0.1 -p tcp --dport 80 -j DNAT --to 192.168.0.1:80
iptables -t nat -A POSTROUTING -d 192.168.0.1 -p tcp --dport 80 -j SNAT --to 192.168.0.2.

Добавление -d помогло.