Шлюз Ubuntu 20.04, iptables NAT и переадресация портов

я в лабиринте, тщетно пытаюсь настроить правила для иметь возможность доступа из Интернета к моему внутреннему веб-серверу (192.168.12.10).

дома у меня есть шлюз Ubuntu 20.04 (192.168.12.1) с двумя интерфейсами:

  • eth1: для внешнего / Интернета с общедоступным IP, например 123.123.123.123
  • br0: для внутреннего с частным IP

Еще у меня есть ноутбуки.

Кажется, все работает нормально со следующими правилами iptables. По умолчанию у меня нет доступа извне к внутреннему.

iptables -vnL --line-number

Chain INPUT (policy DROP 373 packets, 25051 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1      101  9891 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
2    16175 3203K ACCEPT     all  --  br0    *       0.0.0.0/0            0.0.0.0/0
3     2517  342K ACCEPT     all  --  eth1   *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 ACCEPT     all  --  lo     lo      0.0.0.0/0            0.0.0.0/0
2        0     0 ACCEPT     all  --  lo     eth1    0.0.0.0/0            0.0.0.0/0
3        0     0 ACCEPT     all  --  br0    br0     0.0.0.0/0            0.0.0.0/0
4    58714   11M ACCEPT     all  --  br0    eth1    0.0.0.0/0            0.0.0.0/0
5    60179  155M ACCEPT     all  --  eth1   br0     0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
6        0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: avg 5/min burst 5 LOG flags 0 level 7 prefix "FW FW denied: "

Chain OUTPUT (policy ACCEPT 2098 packets, 234K bytes)
num   pkts bytes target     prot opt in     out     source               destination

iptables -t nat -vnL --line-number

Chain PREROUTING (policy ACCEPT 2209 packets, 192K bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 1215 packets, 89074 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 648 packets, 59463 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     3807  290K MASQUERADE  all  --  *      eth1    0.0.0.0/0            0.0.0.0/0

Моя проблема в том, что я не могу установить правильные правила для доступа к моему веб-серверу из снаружи.

У меня было два правила в цепочке FORWARD и два правила в цепочке PREROUTING.

iptables -vnL --line-number

Chain INPUT (policy ACCEPT 2 packets, 100 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1      155 14331 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
2    21779 4281K ACCEPT     all  --  br0    *       0.0.0.0/0            0.0.0.0/0
3     2953  401K ACCEPT     all  --  eth1   *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 ACCEPT     all  --  lo     lo      0.0.0.0/0            0.0.0.0/0
2        0     0 ACCEPT     all  --  lo     eth1    0.0.0.0/0            0.0.0.0/0
3        0     0 ACCEPT     all  --  br0    br0     0.0.0.0/0            0.0.0.0/0
4    67303   12M ACCEPT     all  --  br0    eth1    0.0.0.0/0            0.0.0.0/0
5        0     0 ACCEPT     tcp  --  eth1   *       0.0.0.0/0            192.168.12.10        ctstate NEW,RELATED,ESTABLISHED tcp dpt:80
6        0     0 ACCEPT     tcp  --  eth1   *       0.0.0.0/0            192.168.12.10        ctstate NEW,RELATED,ESTABLISHED tcp dpt:443
7    69670  168M ACCEPT     all  --  eth1   br0     0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
8        1    60 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: avg 5/min burst 5 LOG flags 0 level 7 prefix "FW FW denied: "

Chain OUTPUT (policy ACCEPT 8 packets, 1208 bytes)
num   pkts bytes target     prot opt in     out     source               destination

iptables -t nat -vnL --line-number

Chain PREROUTING (policy ACCEPT 211 packets, 19200 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        1    40 DNAT       tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 to:192.168.12.10:80
2        0     0 DNAT       tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443 to:192.168.12.10:443

Chain INPUT (policy ACCEPT 169 packets, 9937 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 21 packets, 1677 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 12 packets, 813 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     4419  338K MASQUERADE  all  --  *      eth1    0.0.0.0/0            0.0.0.0/0

Результат всегда один и тот же.

Когда я пробую, например, curl -I 123.123.123.123 , запрос отправляется на веб-сервер внутри шлюза. Когда работает, я получаю ответ, когда не работает curl: (7) Не удалось подключиться к порту 123.123.123.123. 80: В соединении отказано

Мой запрос никогда не достигает внутреннего веб-сервера 192.168.12.10.

UFW не работает, и я установил net.ipv4.ip_forward = 1.

Если кто-нибудь может мне помочь?

Спасибо

0
задан 29 March 2021 в 05:33

1 ответ

Я не совсем специалист, но блокирует ли ваш брандмауэр доступ к нужным портам? Попробуйте запустить

firewall-cmd --list-ports

и посмотрите, открыты ли ваши порты 80 и 443.

0
ответ дан 23 April 2021 в 23:29

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

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