Недавно я учился использовать iptables и создал небольшую сеть в виртуальном боксе. У меня есть сервер Debian Natting для внутренних клиентов. Один из внутренних клиентов размещает сервер minecraft для тестирования.
Я хочу иметь любые входящие соединения, использующие порт 25565, идущие в eth0 с сервера debian, чтобы перенаправить их , в частности на внутренний сервер minecraft (192.168.200.4) из eth1. Как и в обычном роутере Linksys.
То, что я придумал, но на самом деле не работает, было:
iptables -A FORWARD -i eth0 --dport 25565 -o eth1 -d 192.168.200.4 -j ACCEPT
Затем я прочитал там ошибки и другие мелочи, что на самом деле мне нужно использовать ПОСТРОУТИРОВАНИЕ / ПЕРЕДАЧУ. Итак, я попробовал:
iptables -t nat -A POSTROUTING -i eth0 -p tcp --dport 25565 -o eth1 -d 192.168.200.4 -j ACCEPT
Теперь очевидно, что ничего из этого не работает, но я хочу знать, на правильном ли я пути?
Вот диаграмма виртуальной сети, чтобы вы могли видеть ее визуально:
http : //i.imgur.com/nj7pmK8.jpg
В настоящее время конфигурация iptables выглядит так:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere tcp dpt:telnet
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Любые дополнительные детали будут с удовольствием добавлены:)
(Все в цепочке INPUT - это просто другие правила i Раньше я возился с ней, единственными правилами в ней были правила в цепочке FORWARD)
Это руководство, которому я следовал для NAT: http: //www.revsys.ru / Writings / quicktips / nat.html
В вашей схеме ваш внешний IP неверен : 192.168.1.161
является внутренним IP.
У вас есть реальный внешний (публичный) IP: проверьте его, например, с помощью http://www.whatismyip.com (надеюсь, он исправлен).
Сначала вам нужно использовать PREROUTING
цепочку для DNAT вашего внешнего IP на ваш внутренний IP :
iptables -t nat -A PREROUTING -p tcp -d $PUBLIC_IP --destination-port 25565 -j DNAT --to 192.168.200.4:25565
Затем вам нужно разрешить пересылку пакетов между интерфейсами от источника к цели :
iptables -A FORWARD -p tcp -i eth0 -o eth1 -d 192.168.200.4 --destination-port 25565 -m state --state NEW -j ACCEPT
Однако, просмотрите в Google о том, как это сделать для Web-сервера, и вы найдете много ресурсов (и на этом сайте тоже). Логика остается прежней
.