Apa cara modern untuk melakukan penerusan pelabuhan di El Capitan? (porta depan 80 hingga 8080)

56

Utilitas lama ipfwtidak disarankan dalam versi terbaru Mac OS X dan sekarang hilang dari El Capitan.

Apa cara modern untuk melakukan penerusan pelabuhan di El Capitan?

Saya hanya ingin port 80 untuk meneruskan ke port 8080.

Basil Bourque
sumber
Mohon terima jawaban.
Efren

Jawaban:

79

Untuk meneruskan semua lalu lintas port 80 ke port 8080, Anda dapat memasukkan yang berikut dari baris perintah Terminal.

echo "
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -

Diambil dari https://salferrarello.com/mac-pfctl-port-forwarding/

Sal Ferrarello
sumber
1
Bekerja dengan sempurna!
Anupam Jain
17
dan dari artikel yang disebutkan, untuk menghapusnya sudo pfctl -F all -f /etc/pf.conf,, dan untuk menampilkan aturan penerusan port Anda saat ini,sudo pfctl -s nat
Brad Parks
4
perlu diingat bahwa solusi ini tidak menambahkan aturan tetapi menggantikan aturan lain yang dimuat sebelumnya, termasuk pf.conffile
erandros
36

Cara modern untuk meneruskan port di El Capitan sedang digunakan pf. Dalam contoh di bawah ini, semua permintaan port 80 diteruskan ke port 8080 pada host yang sama. Harap sesuaikan pengalihan dengan kebutuhan Anda.

  1. Buat file anchor org.user.forwarding di /private/etc/pf.anchors

    sudo touch /private/etc/pf.anchors/org.user.forwarding
    

    dengan konten berikut dan baris kosong yang tertinggal

    rdr pass on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
    rdr pass on en0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
    rdr pass on en1 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
    

    atau

    rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
    
  2. Ubah file /private/etc/pf.conf tetapi simpan baris kosong yang tertinggal

    file asli:

    scrub-anchor "com.apple/*"
    nat-anchor "com.apple/*"
    rdr-anchor "com.apple/*"
    dummynet-anchor "com.apple/*"
    anchor "com.apple/*"
    load anchor "com.apple" from "/etc/pf.anchors/com.apple"
    

    untuk

    scrub-anchor "com.apple/*"
    nat-anchor "com.apple/*"
    rdr-anchor "com.apple/*"
    rdr-anchor "org.user.forwarding"
    dummynet-anchor "com.apple/*"
    anchor "com.apple/*"
    load anchor "com.apple" from "/etc/pf.anchors/com.apple"
    load anchor "org.user.forwarding" from "/etc/pf.anchors/org.user.forwarding"
    
  3. Parsing dan uji file anchor Anda untuk memastikan tidak ada kesalahan:

    sudo pfctl -vnf /etc/pf.anchors/org.user.forwarding
    
  4. Sekarang ubah /System/Library/LaunchDaemons/com.apple.pfctl.plist dari

    <array>
        <string>pfctl</string>
        <string>-f</string>
        <string>/etc/pf.conf</string>
    </array>
    

    untuk

    <array>
        <string>pfctl</string>
        <string>-e</string>
        <string>-f</string>
        <string>/etc/pf.conf</string>
    </array>
    

    Anda harus menonaktifkan Perlindungan Integritas Sistem untuk mencapai ini. Setelah mengedit file SIP diaktifkan kembali. Setelah reboot Mac pf Anda akan diaktifkan (itulah opsi -e).

    Atau Anda dapat membuat daemon peluncuran Anda sendiri mirip dengan jawaban di sini: Menggunakan Server 5.0.15 untuk berbagi internet TANPA berbagi internet .

Setelah sistem memperbarui atau memutakhirkan beberapa file asli di atas mungkin telah diganti dan Anda harus menerapkan kembali semua perubahan.

Jika Anda ingin meneruskan di berbagai antarmuka Anda harus mengaktifkan ini di /etc/sysctl.conf:

net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1
klanomath
sumber
7
Mengapa tidak ada perintah sederhana untuk melakukan ini lagi? Terlalu rumit sekarang.
Dr.Knowitall
@klanomath - ini berfungsi dan saya dapat meneruskan port x ke port y pada 127.0.0.1 dll, tetapi saya tidak dapat meneruskan port ke windows saya vm berjalan pada desktop paralel, Ada ide? inilah pertanyaan saya stackoverflow.com/questions/40695684/…
Sudhir N
Tampaknya tidak berfungsi saat meneruskan port ke VM yang berjalan pada desktop paralel
Sudhir N
@sudhir Anda tidak berhasil menautkan ke Pertanyaan baru Anda. Secara default, Parallels VM tidak terlihat oleh jaringan, sebagai tindakan pencegahan keamanan. Anda dapat mengubah pengaturan dalam konfigurasi VM untuk membuat VM terlihat. Dan ingat, pingadalah teman Anda dalam mendiagnosis masalah jaringan.
Basil Bourque
3

Untuk memperluas solusi dari jawaban @ sal-ferrarello, saya membuat dua Script Shell super-dasar untuk mengaktifkan atau menonaktifkan pengalihan tanpa mengurangi entri yang sudah ada di pf.

I. Pertama temukan entri apa yang sudah Anda miliki dengan:

sudo pfctl -s nat

Output saya seperti:

No ALTQ support in kernel
ALTQ related functions disabled
nat-anchor "com.apple/*" all
rdr-anchor "com.apple/*" all

Yang menarik bagi kami adalah entri aktual jadi ommit dua baris info pertama.

II Buat enable.shskrip:

#!/bin/sh
echo "
nat-anchor \"com.apple/*\" all
rdr-anchor \"com.apple/*\" all
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -
sudo pfctl -s nat

Dua baris pertama setelah itu echoadalah entri yang sudah ada di sana. Baris ketiga adalah dengan redirect baru - dalam hal ini 80 hingga 8080. Pada akhirnya kami memanggil sudo pfctl -s natuntuk melihat apakah perubahan diterapkan.

AKU AKU AKU. Buat disable.shskrip:

Mirip dengan enable.shkita membuat skrip, tetapi tanpa 80-> 8080 redirect, tetapi dengan entri yang sudah ada sebelumnya:

#!/bin/sh
echo "
nat-anchor \"com.apple/*\" all
rdr-anchor \"com.apple/*\" all
" | sudo pfctl -ef -
sudo pfctl -s nat
mayat
sumber