В целом Вы найдете, что различие более известно наоборот.
При помещении стандартного набора в 24x7 среда с загрузкой, теплом, друзьями - Вы будете видеть больше отказов. 'Дважды цена' будет обычно отражаться в отсутствии аппаратного горя и счастья для выполнения в пределах длительного срока производственной среды.
Если это идет длительный срок в установленную в стойку среду, если это БУДЕТ положенным, и если Вы добирающийся до него для работы над ним собираетесь быть горем (удаленное администрирование сервера из полосы является серьезным плюс iLO/DRAC и т.д.) - сервер. Иначе - регулярное разнообразие будет прекрасно.
Это - все в Ваше время - куда это идет - и сколько боли Вы собираетесь страдать, если это прекращает работать.
Неответивший ответ Тома Х лучше, но если он вам не нравится, вот прямой ответ:
Извините, мои навыки работы с iptables лучше всего, когда я могу повозиться, проверить , проверьте, журналы, повторите ... и у меня нет вашей системы, с которой можно было бы поиграть, но в любом случае вот мой совет. Вероятно, вам потребуется отладка с использованием журналов.
Измените направление перенаправления, как указано Йенсом Брэдлером:
echo "1" > /proc/sys/net/ipv4/ip_forward
Докажите, что это правильно
cat /proc/sys/net/ipv4/ip_forward
Вывод из cat:
1
Добавьте правило в ACCEPT, используя Также таблица FORWARD.
sudo iptables -A FORWARD -i wlan0 -p tcp --dport 8000 -j ACCEPT
Удалите "-m state" из входящего правила (необязательно ... я думаю, ненужно):
sudo iptables -A INPUT -i wlan0 -p tcp --dport 8000 -j ACCEPT
Вероятно, где бы вы ни добавили "ESTABLISHED", у вас также должно быть "RELATED" (не конечно, но я думаю, что ответный пакет, который запускает соединение, связан, но не установлен).
sudo iptables -A OUTPUT -o wlan0 -p tcp --sport 8000 -m state --state RELATED,ESTABLISHED -j ACCEPT
Правило FORWARD для выполнения вышеуказанного подтверждения, sudo iptables -A FORWARD -o wlan0 -p tcp -s 127.0.0.1 --sport 8000 -m state --state RELATED, ESTABLISHED -j ACCEPT
Вместо использования wirehark используйте -j LOG.
Сначала проверьте, нет ли еще правил LOG (правила по умолчанию лучше, чем следующие ... но вы использовали flush; мой сервер будет сильно спамить):
sudo iptables --list --line-numbers -v
sudo iptables -t nat --list --line-numbers -v
Если нет, добавьте их:
sudo iptables -A INPUT -j LOG
sudo iptables -A OUTPUT -j LOG
sudo iptables -A FORWARD -j LOG
sudo iptables -t nat -A PREROUTING -j LOG
Посмотрите журналы
tail -F /var/log/firewall
# or if that file doesn't exist:
tail -F /var/log/messages
Вы никогда не сможете выполнить -j DNAT --to 127.0.0.1
.
127.0.0.1 - это суперпупер-специальный адрес; он будет принимать соединения только от 127.0.0.1.
Ответ @Tom H - это способ настройки вашего сервера.
Вот полный отказ от ответа.
как сказал Йенс Брэдлер в своем комментарии, самое простое, что можно сделать здесь, - это привязать службу к общедоступному IP-адресу на порту 8000, а не через NAT для соединения. Вы можете защитить доступ к одному серверу A с помощью следующих правил iptables:
-A INPUT -s 192.168.0.5/32 -p tcp -m tcp --dport 8000 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8000 -j REJECT