Пересылать входящие пакеты из порта 25565 внутреннему клиенту natted? IPTables

Недавно я научился использовать iptables, и я создал небольшую сеть nat в virtualbox. У меня есть сервер 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

Затем я прочитал об ошибках и других посторонних, что это на самом деле POSTROUTING/PREROUTING, что мне нужно использовать. тогда я попробовал:

iptables -t nat -A POSTROUTING -i eth0 -p tcp --dport 25565 -o eth1 -d 192.168.200.4 -j ACCEPT

Сейчас, очевидно, ничего из этого не работает, но я хочу знать, нахожусь ли я на правильном пути?

Вот схема виртуальной сети, так что вы можете увидеть ее визуально:

https://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 - это просто другие правила, с которыми я раньше связывался, изначально единственными правилами, которые у него были, были те, что были в цепочке FORWARD)

Это руководство, которое я использовал для NAT: http://www.revsys.com/writings/quicktips/nat.html

1 ответ

Решение

В вашей схеме ваш внешний 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 о том, как это сделать для веб-сервера, и вы найдете множество ресурсов (также на этом сайте). Логика остается прежней.

Другие вопросы по тегам