Перенаправлення локального порту через міст через Інтернет-спільний статичний IP


4

У мене є свій кабельний модем (10.0.0.1) до iMac (10.0.0.36), а мій iMac (10.0.0.36) з (Bridge100 192.168.2.1) Інтернет спільним IP-адресою до моєї машини Debian (192.168.2.34), і все що працює чудово. Тепер я хотів би переслати порт 80 з Інтернету через місток на моєму iMac на свою машину Debian ...

10.0.0.1:80 <-> 10.0.0.36:8080 <-> 192.168.2.1:8080 <-> 192.168.2.34:80

Я знайшов наступне посилання , яке веде мене до

rdr on bridge100 inet proto tcp from any to 10.0.0.36 port = 8080 -> 192.168.2.34 port 80

Однак це не працює ... Тепер у посиланні вони переходять до localhost, і я знайшов це посилання, яке говорить, що мені може знадобитися щось на зразок

pass out route-to (bridge100 192.168.2.1) from any to 10.0.0.36

Але мені не вдалося pfctlправильно проаналізувати вищезазначений рядок

Будь-які ідеї про те, як я можу переслати з 10.0.0.36:80 <-> 192.168.2.1 <-> 192.168.2.34:80?

Редагувати: Кабельний модем / маршрутизатор - це TG852G від Xfinity ...

Редагувати: pfdump

                                        r     scrub-anchor "com.apple/*" all fragment reassemble
                                        r     anchor "com.apple/*" all
                                        r     anchor "usr.home/*" all
                                        n     nat-anchor "com.apple/*" all
                                        n     rdr-anchor "com.apple/*" all
                                        A       com.apple
                                        A       com.apple.internet-sharing
                                        A       usr.home
com.apple                               r     anchor "200.AirDrop/*" all
com.apple                               r     anchor "250.ApplicationFirewall/*" all
com.apple                               A       com.apple/200.AirDrop
com.apple                               A       com.apple/250.ApplicationFirewall
com.apple/200.AirDrop                   A       com.apple/200.AirDrop/Bonjour
com.apple/200.AirDrop/Bonjour           r     pass in on p2p0 inet6 proto udp from any to any port = 5353 keep state
com.apple/200.AirDrop/Bonjour           r     pass out on p2p0 proto tcp all flags any keep state
com.apple.internet-sharing              r     scrub-anchor "base_v4" all fragment reassemble
com.apple.internet-sharing              r     anchor "base_v4" all
com.apple.internet-sharing              n     nat-anchor "base_v4" all
com.apple.internet-sharing              n     rdr-anchor "base_v4" all
com.apple.internet-sharing              A       com.apple.internet-sharing/base_v4
com.apple.internet-sharing/base_v4      r     scrub on en1 all no-df fragment reassemble
com.apple.internet-sharing/base_v4      r     scrub on bridge100 all no-df max-mss 1460 fragment reassemble
com.apple.internet-sharing/base_v4      r     scrub on bridge100 proto esp all no-df fragment reassemble
com.apple.internet-sharing/base_v4      r     pass on en1 all flags any keep state
com.apple.internet-sharing/base_v4      r     pass on en1 proto esp all no state
com.apple.internet-sharing/base_v4      r     pass on bridge100 all flags any keep state rtable 7
com.apple.internet-sharing/base_v4      n     nat on en1 inet from 192.168.2.0/24 to any -> (en1:0) extfilter ei
com.apple.internet-sharing/base_v4      n     no nat on bridge100 inet from 192.168.2.1 to 192.168.2.0/24
com.apple.internet-sharing/base_v4      n     rdr on bridge100 inet proto tcp from 192.168.2.0/24 to any port = 21 -> 127.0.0.1 port 8021
usr.home                                r     anchor "SSH" all
usr.home                                A       usr.home/SSH
usr.home/SSH                            n     rdr on en1 inet proto tcp from any to 10.0.0.36 port = 8080 -> 192.168.2.34 port 80

Відповіді:


2

Правильною командою для переадресації трафіку http у вашому випадку є:

echo "rdr on $ext inet proto tcp from any to 10.0.0.36 port = 80 -> 192.168.2.34 port 80" | sudo pfctl -a com.apple/HTTP -f -

З $ ext: інтерфейс iMac, підключений до маршрутизатора / модему (ймовірно, або en0 або en1). Перенаправлення робиться на вхідний інтерфейс і трафік! Тому тут rdr on bridge100 ...немає сенсу: ви не очікуєте трафіку HTTP з пунктом призначення 192.168.2.34 від мосту100 до мережі за тим самим мостом100.

Вищевказана команда використовує тимчасовий допоміжний конт com.apple/HTTP і після перезавантаження вона не буде втрачена.

Якщо ви хочете ввімкнути його постійно, створіть окремий якір, як зазначено в цій відповіді: pfctl - як додати якор і зробити його активним / завантажити його або тут: Переадресація портів на Mac Pro з macOS Sierra .

A pass out route-to ...потрібен лише в тому випадку, якщо ви хочете перенаправляти вихідний трафік з iMac.


Теоретично потрібен додатковий статичний маршрут на маршрутизаторі / модемі (TG852G):

route to 192.168.2.0/24 via 10.0.0.36

Тут (різний роутер, хоча) він працював і без нього.

Рішення Double-NAT зазвичай не рекомендуються в середовищах SOHO, і я пропоную приєднати сервер Debian Linux безпосередньо до одного з Ethernet-портів маршрутизатора / модему або взаємопов'язаного комутатора.


дякую за вашу відповідь, на жаль, вона все ще не працює, будь-які поради, які ви можете запропонувати для усунення несправностей?
Джефрі Л. Робертс

@ JeffreyL.Roberts Ви отримуєте повідомлення про помилку? Чи можете ви розмістити де-небудь pfdump - або тут (додавши його до свого питання як додаток) або на pastebin.com.
кланомат

погано, як ви пропонуєте, і підключіть коробку безпосередньо до кабельного модему
Джеффрі Л. Робертс,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.