Почему передача Ubuntu 16 не работает?

Я пытаюсь реализовать очень простую передачу Ubuntu от одного IP до другого. Я не забочусь о безопасности на том этапе (это работает в песочнице теперь), мне просто нужен он для работы.

Я установил FORWARD политика к ACCEPT и позволил передать в sysctl.conf. Затем, я добавил передающие правила TCP, таким образом, у меня есть это:

# Filter settings
*filter
# Disallow incoming traffic
:INPUT DROP
# Allow forward traffic
:FORWARD ACCEPT
# Allow outgoing traffic
:OUTPUT ACCEPT

COMMIT


*nat
:PREROUTING ACCEPT
:POSTROUTING ACCEPT
:OUTPUT ACCEPT

# Required to share Internet
-A POSTROUTING -j MASQUERADE

-A PREROUTING -p tcp -d 192.168.0.107 --dport 80 -j DNAT --to-destination 192.168.0.100:80

COMMIT

Компьютерный IP Ubuntu 192.168.0.107. Другой компьютерный IP 192.168.0.100. Так, я хочу перенаправить порт Ubuntu 80 к другому компьютерному адресу. Другой компьютер выполняет сервер HTTP, таким образом, http://192.168.0.100 на Ubuntu компьютер открывает демонстрационную веб-страницу.

Однако, когда я пытаюсь открыться http://192.168.0.107, это перестало работать. Когда я работаю curl для получения лучшего сообщения об ошибке я получаю это:

curl: (7) Failed to connect to 192.168.0.107 port 80: Connection refused

У кого-либо есть идея этой ошибочной причины?

0
задан 29 August 2018 в 01:14

1 ответ

Этот ответ основан на предположении, который Вы пытаетесь портировать вперед на той же подсети и через один сетевой интерфейс, который необычен.

Вы не имели дело с обратным каналом правильно или использовали корректное пред и отправляете таблицы маршрутизации. Необходимо отобразить пакет возврата так, чтобы это, казалось, к отправителю прибыло из исходного IP-адреса, к которому это отправило запрос во-первых. Вот протестированный пример, но для моей LAN:

#!/bin/sh
#
# 1070028_firewall 2018.08.09 Ver:0.01
#       Basic port forwarding on one interface.
#       Note: this method is unusual.
#       Currently for this question:
#       https://askubuntu.com/questions/1070028/why-does-ubuntu-16-forwarding-not-work
#

# The location of the iptables program
#
IPTABLES=/sbin/iptables

# Set some stuff
#
EXTIF="ens5"
UNIVERSE="0.0.0.0/0"
EXTIP="192.168.111.120"

#
echo Enabling forwarding...
echo "1" > /proc/sys/net/ipv4/ip_forward

# Clearing any previous configuration
# and setting policies as per the question

iptables -P INPUT DROP
iptables -F INPUT
iptables -P OUTPUT ACCEPT
iptables -F OUTPUT
iptables -P FORWARD ACCEPT
iptables -F FORWARD
iptables -t nat -F
iptables -X

# Clear the counters

iptables -Z
iptables -t nat -Z

# loopback interfaces are valid.

$IPTABLES -A INPUT -i lo -s $UNIVERSE -d $UNIVERSE -j ACCEPT

# forward path

$IPTABLES -t nat -A PREROUTING -p tcp -i $EXTIF --dport 80 -j DNAT --to 192.168.111.1:80

# with a default policy of ACCEPT, the following rule is not needed.
# shown here for completeness only.

# $IPTABLES -A FORWARD -p tcp -i $EXTIF -d 192.168.111.1 --dport 80 -j ACCEPT

# return path

$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j SNAT --to-source $EXTIP

Необходимо смочь использовать ПОДМЕНУ вместо SNAT, но я не протестировал его.

0
ответ дан 28 October 2019 в 01:56

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

Похожие вопросы: