macOS Sierraを使用したMac Proでのポート転送


3

IPアドレスが152.1.2.3のmacOS Sierraコンピューターから、192.168.2.3であるNASにポートフォワードしたいと思います。具体的には、NASの192.168.2.3/PhotosのHTTP Webサーバーにアクセスしたいと思います。NASには、HTTP経由で入ってくるすべてのトラフィックが正しいフォルダー(写真)に向けられています。

インターネット共有を有効にし、macOSコンピューター(イーサネット2で152.1.2.3)のイーサネット接続をNAS(イーサネット1で192.168.2.3)に共有します

私のNASはインターネットを見ることができ、アップデートを入手できます。

192.168.2.3と入力すると、コンピューターからローカルでWebサーバーにアクセスでき、192.168.2.3 / PhotosのWebサーバーページに移動します。

ローカルネットワークの外部からアクセスできません。

簡単な解決策は、NASをネットワークに直接接続することですが、ローカルポリシーのためにできません。

要約:次を入力して、NASのWebサーバーにリダイレクトされます-> 152.1.2.3:9999

端末コマンドは次のようになります:

rdr pass on en2 inet proto tcp from any to any port 9999 -> 198.168.2.3 port 80

これは、Appleの問題ではなくネットワークの問題であるため、この質問をトピック外として終了することに投票しています。
ロブ

2
@Rob-OPはMacProをファイアウォール/ルーターとして使用しています-これは間違いなく話題です。
アラン

それはの可能重複しているのでしかし、ポートフォワーディングは、AD上で、ここで議論されているMacOSのシエラのポートフォワーディング
アラン

2
@Allan Appleのインターネット共有が関係しているため、まったく(まったく)重複していません。
クラノマス

回答:


2

macOSでのインターネット共有は、(内部で)2つ以上のインターフェイスを含むブリッジデバイスを作成し、DHCPサーバーをアクティブにし、さまざまなpfルールを設定し、pfを有効にすることによって行われます。

すべてのルールを印刷するには、次のシェルスクリプトを実行する必要があります。

pfdump.sh:

#!/bin/bash

function pfprint() {
  if [ -n "$1" ];then
    sudo pfctl -a "$2" -s"$1" 2>/dev/null
  else
    sudo pfctl -s"$1" 2>/dev/null
  fi
}

function print_all() {

  local p=$(printf "%-40s" $1)
  (
    pfprint r "$1" | sed "s,^,r     ,"
    pfprint n "$1" | sed "s,^,n     ,"
    pfprint A "$1" | sed "s,^,A     ,"
  ) | sed "s,^,$p,"

  for a in `pfprint A "$1"`; do
    print_all "$a"
  done
}

print_all

デフォルトでは、pfは次のpfダンプで無効になっています。

                                        r     scrub-anchor "com.apple/*" all fragment reassemble
                                        r     anchor "com.apple/*" all
                                        n     nat-anchor "com.apple/*" all
                                        n     rdr-anchor "com.apple/*" all
                                        A       com.apple
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

インターネット共有をアクティブにすると、pfが有効になり、ダンプは次のようになります。

                                        r     scrub-anchor "com.apple/*" all fragment reassemble
                                        r     scrub-anchor "com.apple.internet-sharing" all fragment reassemble
                                        r     anchor "com.apple/*" all
                                        r     anchor "com.apple.internet-sharing" all
                                        n     nat-anchor "com.apple/*" all
                                        n     nat-anchor "com.apple.internet-sharing" all
                                        n     rdr-anchor "com.apple/*" all
                                        n     rdr-anchor "com.apple.internet-sharing" all
                                        A       com.apple
                                        A       com.apple.internet-sharing
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.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 6
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

ここで、en1は外部インターフェイス(内部ネットワークと共有するインターフェイス)であり、192.168.2.0 / 24はDHCPサーバーによって提供される内部ネットワークです。両方とも環境によって異なる場合があります。

インターネット共有を有効にして内部サーバーを公開するには、外部インターフェイスのポートをサーバーのIPおよびサービスポートに転送する必要があります。

Terminal.appに入力して、ルーター(Mac Pro)でrdrルールを作成します。

sudo nano /private/etc/pf-rdr.rule

およびコンテンツ:

rdr on en1 inet proto tcp from any to 152.1.2.3 port = 9999 -> 192.168.2.3 port 80

en1が外部インターフェイス、152.1.2.3:9999がIP:port、192.168.2.3:80が内部サーバーのIP:portであると仮定します。外部インターフェイスのデバイス識別子(およびIP)を取得するifconfigには、Mac Proに入力します。

次に、起動デーモンを作成します。

sudo nano /Library/LaunchDaemons/org.user.pfrdr.plist

コンテンツで:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Disabled</key>
    <false/>
    <key>Label</key>
    <string>org.user.pfrdr</string>
    <key>ProgramArguments</key>
    <array>
        <string>/sbin/pfctl</string>
        <string>-a</string>
        <string>com.apple/portforwarding</string>
        <string>-f</string>
        <string>/private/etc/pf-rdr.rule</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/Library/Logs/org.usr.pfrdr.log</string>
    <key>StandardOutPath</key>
    <string>/Library/Logs/org.usr.pfrdr.log</string>
</dict>
</plist>

デーモンを起動します:

sudo launchctl load /Library/LaunchDaemons/org.user.pfrdr.plist

これにより、com.appleアンカーに2番目のrdrルールがpfに追加され、外部ポートが内部ホストに転送されます。

DHCPはIPアドレスを動的に割り当てるため、内部サーバーに固定IPを定義することも役立ちます。

ルーター(Mac Pro)にファイルbootptabを作成します。

sudo nano /etc/bootptab

コンテンツで:

# Bootptab file
# Section 1 -- ignored
%%
# Section 2 -- used
# Hardware types: 1=Ethernet, 6=Wireless
#                 See http://www.ietf.org/rfc/rfc1700.txt
#
# machine entries have the following format:
#
# hostname         hwtype     hwaddr         ipaddr   bootfile
your-nas-ethernet     1 c4:2c:03:3a:7f:65 192.168.2.3 boot
a-wireless-machine    6 60:33:4b:27:6c:62 192.168.2.4 boot
another-ethernet      1 00:0d:93:72:e7:96 192.168.2.2 boot

MACアドレス(hwaddr)とハードウェアタイプ(hwtype)を、ここの環境で見つかった適切なものに置き換えます。ifconfig各ホストに入力することにより、MACアドレスを取得できます。その後、ルーター(Mac Pro)を再起動します。


セキュリティへの影響:

Mac Proをルーターとして使用することにより、インターネットに公開され、そのように脆弱になります。インターネット共有を有効にした後に実行されるPfには、ブロック規則まったくありません。より安全な(そして機能する)ルールを追加する必要があります。


公開したIPは152.1.0.0/16に属します。これは、ノースカロライナ州立大学(NCSU)に割り当てられたIPブロックです。大学がこのネットワークにセキュリティ対策を適用し、他のネットワーク(または「全体」インターネット)からのアクセスを防止している可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.