В настоящее время у меня есть устройство NAS, работающее под портом 80. Чтобы получить доступ к NAS извне, я назначил порт 8080 порту 80 на NAS следующим образом:
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 10.32.25.2:80
Это работает как шарм. Однако это работает только в том случае, если я захожу на веб-сайт извне сети (на работе, в другом доме и т. Д.). Поэтому, когда я mywebsite.com:8080
набираю, IPTables делает работу правильно, и все работает нормально.
Теперь у меня проблема, как я могу перенаправить этот порт изнутри сети? Мое доменное имя mywebsite.com
указывает на мой маршрутизатор (мой сервер Linux) изнутри (10.32.25.1), но я хочу перенаправить порт 8080 на порт 80 10.32.25.2 изнутри.
Любая подсказка?
Редактировать # 1
Пытаясь помочь облегчить этот вопрос, я составил эту схему. Пожалуйста, не стесняйтесь обновлять, если это неправильно или искажает то, что вы ищете.
iptables
| .---------------.
.-,( ),-. v port 80 |
.-( )-. port 8080________ | |
( internet )------------>[_...__...°]------------->| NAS |
'-( ).-' 10.32.25.2 ^ 10.32.25.1 | |
'-.( ).-' | | |
| '---------------'
|
|
__ _
[__]|=|
/::/|_|
10.32.25.1:8080
перенаправить на10.32.25.2:80
. Мое правило выше работает снаружи, но не внутри моей сети. Поэтому, если я нахожусь в офисе, я могу получить доступ к своему NAS с сайта website.com:8080, и он полностью прозрачен. Из моего дома website.com:8080 указывает на 10.32.25.1, потому что это мой роутер или Linux-сервер. Я хочу перенаправить порт 8080 на NAS также на порт 80, но опять же прозрачным способом.eth0 10.32.25.2
, чтобы мы могли писать iptables на основе входящего интерфейсаОтветы:
Я наконец нашел, как. Во-первых, я должен был добавить
-i eth1
свое «внешнее» правило (eth1 - это мое WAN-соединение). Мне также нужно было добавить еще два правила. Вот, в конце концов, что я пришел с:источник
Вы также забыли упомянуть, что перенаправление пакетов должно быть включено, чтобы иметь возможность выполнять NAT назначения. По умолчанию он обычно выключен, поэтому правила iptables работать не будут. Это может быть включено путем выдачи:
источник
Сначала разрешите пересылку с
Затем установите приемлемые правила с
Вы можете поместить эти строки,
/etc/rc.local
например. Примечание: поскольку Debian jessie сделал его исполняемым и включил службу rc.local черезисточник
Сначала вам нужно убедиться, что у вас активирована переадресация:
cat /proc/sys/net/ipv4/ip_forward
Если нет
1
, бегиecho 1 > /proc/sys/net/ipv4/ip_forward
.Если вы хотите, чтобы трафик с 10.32.25.1 через порты 80 и 443 переадресовывался в порт 80.32.25.2, то вам следует воспользоваться приведенным ниже правилом:
источник