Как я могу передать порт HTTP и SSH своему внутреннему серверу с помощью iptables?

Если Вы будете использовать чистую Cisco VPN и будете иметь пароль на Вашем маршрутизаторе/переключателе, однако Ваш вход или есть ли у Вас сервер, содержащий пользователей, необходимо будет войти в систему machiene, чтобы остаться подключенными к VPN, если Вы входите в систему как пользователь Windows, был бы, если Вы находитесь на автономных машинах затем, полномочия могут варьироваться на машине к машине, остается ли Ваш аккомпанемент связанным с VPN. Ваш ответ по платформам должен быть да, пока у Вас есть клиент.

5
задан 2 April 2019 в 01:13
4 ответа

Прежде всего убедитесь, что в ядре включена пересылка пакетов

# echo 1 > /proc/sys/net/ipv4/ip_forward

Вы также можете сделать его постоянным, добавив строку ниже в /etc/sysctl.conf

net.ipv4.ip_forward = 1

. Вы должны сделать это на Linux Machine, выступающей в качестве маршрутизатора. Вы можете попробовать следующее правило на маршрутизаторе.

iptables -t nat -A PREROUTING -i eth1 -d x.x.x.x -p tcp --dport 22 -j  DNAT --to-destination 192.168.1.2:22

Также сообщите нам вывод ваших правил NAT из окна маршрутизатора.

iptables -t nat -L -n -v
6
ответ дан 3 December 2019 в 01:10

Прежде всего, включите маршрутизацию в Linux шлюз:

echo 1 > /proc/sys/net/ipv4/ip_forward

Затем добавьте следующие правила с вашим сетевым интерфейсом (например, eth1) и желаемыми портами:

iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.2
iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 22 -j DNAT --to 192.168.1.2
iptables -A FORWARD -p tcp -d 192.168.1.2 --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp -d 192.168.1.2 --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Проверьте свои правила с помощью iptables -L -v , столбцы pkts и bytes покажут вам какие правила согласовываются.

1
ответ дан 3 December 2019 в 01:10

Основываясь на этом замечательном руководстве DigitalOcean о том, как перенаправлять порты, я решил переписать его здесь.

Я потратил много часов на изучение того, как это работает .. Я новичок в Linux, и начинать не всегда легко .. Вот пример моих серверов и его переадресации портов:

Сервер межсетевого экрана (2 карты NIC ) - сведения о сети:

  • Публичный IP-адрес: xx.xx.xx.xx
  • Частный IP-адрес: yy.yy.yy.yy
  • Публичный интерфейс: eth0
  • Частный интерфейс: eth1

Внутренний (например, ssh, веб) сервер (1 NIC-карта) - сведения о сети:

  • Частный IP-адрес: zz.zz.zz.zz
  • Частный интерфейс: eth0

Решение:

Включить пересылку пакетов в ядре:

echo 1 > /proc/sys/net/ipv4/ip_forward

Определить переменные:

# Admin IP address (e.g. public home ip)
ADMIN="aa.aa.aa.aa"

# IP addresses of servers (e.g. in cloud):
FW_eth0_ip="xx.xx.xx.xx"
FW_eth1_ip="yy.yy.yy.yy"
WEB_eth0_ip="zz.zz.zz.zz"

# Services:
SSH="22"
HTTP="80"

Переадресация портов Iptables (с -m conntrack):

iptables -t nat -A PREROUTING -i eth0 -s $ADMIN -d $FW_eth0_ip -p tcp --dport $SSH -j DNAT --to-destination $WEB_eth0_ip
iptables -A FORWARD -i eth0 -o eth1 -p tcp --syn --dport $SSH -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport $SSH -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport $SSH -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport $SSH -d $WEB_eth0_ip -j SNAT --to-source $FW_eth1_ip

Несколько примечаний:

  • "..- s $ ADMIN -d $ FW_eth0_ip .." (1-я строка) - добавлено только из соображений безопасности - это означает, что только ADMIN IP может получить доступ к SSH (если он не нужен, вы можете его удалить)
  • -m conntrack совпадает с -m state
  • . Я рекомендую изменить порт SSH по умолчанию на другой порт, например 1xxxx (в / etc / ssh / sshd_config)
  • проверка Список номеров портов TCP и UDP
  • Я использую порт 15xx1 для доступа к SSH на сервере межсетевого экрана, а 15xxx2 - внутренний

терминал:

# access firewall server
$ ssh sancro@xx.xx.xx.xx -p 15xx1

# access internal server
$ ssh sancro@xx.xx.xx.xx -p 15xx2

Подробнее об используемых правилах прекрасно описаны в упомянутом руководстве.

Это все, что я написал, надеюсь, это поможет вам.

2
ответ дан 3 December 2019 в 01:10

Хотя этот вопрос касается iptables, если у вас также работает FirewallD, вот как получить доступ к HTTP во внутренней сети.

Сначала разрешите http-трафик на вашем внутреннем сервере FirewallD:

# firewall-cmd --permanent --add-service=http

Затем перенаправьте HTTP-трафик с внешнего IP-адреса на порт 80 внутреннего IP-адреса:

# firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toaddr=10.0.0.11

То же самое можно сделать для службы SSH.

1
ответ дан 3 December 2019 в 01:10

Теги

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