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 --номер строки

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 --номер строки

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

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

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

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

UFW выключен и i установлен net.ipv4.ip_forward=1.

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

Спасибо

-121--899779- Есть ли способ с ssmtp включить файл в качестве тела? С ssmtp, есть ли способ включить файл как только тело? Я хотел бы отправить, как указано ниже, чтобы я мог просто написать себе кое-что: $ ssmtp me@gmail.com Кому: мне От: меня Тема: Файл < имя _ файла ...

С ssmtp, есть ли способ включить файл как только тело?

Я хотел бы отправить, как ниже, так что я могу просто отправить себе по электронной почте что-то:

$ ssmtp me@gmail.com
To: me
From: me
Subject: A File

< fileName
Ctrl + D

Я пробовал это, но только «< fileName» получает по электронной почте, а не файл.

Я не хочу открывать файл и предварять К:, От:, Тема:, а затем удалять это из файла после его поступления.

Я знаю, что могу сделать просто:

ssmtp me@gmail.com <fileName
Ctrl + D

Но это оставляет поля Тема, Кому и От пустыми в моем почтовом клиенте.

Спасибо!

1
задан 29 March 2021 в 09:04

2 ответа

Ринзвинд, спасибо за вдохновение. Вот что я придумал. Я положил это в свой.Файл bash_aliases:

alias email='{ 
echo To: Kevin;
echo From: Kevin;
echo Subject: Subject;
echo;
cat FILE;
} | ssmtp myEmailAddress'

Чтобы запустить это, я набираю:

$ email
(Then I press Ctrl + Alt + E)

, чтобы вызвать команду, не выполняя ее. Затем я редактирую ФАЙЛ или что-нибудь еще, что хочу, и затем нажимаю Enter.

Также работает добавление подсказки для имени файла при постоянной отправке самому себе:

alias email='{ 
echo To: Kevin;
echo From: Kevin;
echo Subject: Subject;
echo;
read -p "Enter filename: " fileName;
cat $fileName;
} | ssmtp myEmailAddress'

В этом случае я не нажимаю Ctrl + Alt + E. Я просто нажимаю Enter, затем указываю имя файла и нажимаю Enter. очередной раз.

Конечно, я бы использовал другой псевдоним для одного из них, если бы использовал оба,но первый более универсален, поэтому я его использую.

Весело!

0
ответ дан 23 April 2021 в 23:29
{
    echo To: me@gmail.com
    echo From: from@gmail.com
    echo Subject: A file
    echo
    find /dir/to/folder/ -type f -size +1M -name "fileName"
} | ssmtp me@gmail.com
1
ответ дан 23 April 2021 в 23:29

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

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