Я изо всех сил пытаюсь перенаправить порт через 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 помогло.