Cách hiện đại để chuyển tiếp cổng trên El Capitan là gì? (chuyển tiếp cổng 80 đến 8080)


56

Tiện ích cũ ipfwkhông được khuyến khích trong các phiên bản gần đây của Mac OS X và hiện đã được chuyển từ El Capitan.

Cách hiện đại để chuyển tiếp cảng ở El Capitan là gì?

Tôi chỉ đơn giản muốn cổng 80 chuyển tiếp sang cổng 8080.


Hãy chấp nhận một câu trả lời.
Efren

Câu trả lời:


79

Để chuyển tiếp tất cả lưu lượng truy cập cổng 80 sang cổng 8080, bạn có thể nhập thông tin sau từ dòng lệnh Terminal.

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

Lấy từ https://salferrarello.com/mac-pfctl-port-forwarding/


1
Làm việc hoàn hảo!
Anupam Jain

17
và từ bài viết được đề cập, để xóa nó sudo pfctl -F all -f /etc/pf.confvà để hiển thị các quy tắc chuyển tiếp cổng hiện tại của bạn,sudo pfctl -s nat
Brad

4
Hãy nhớ rằng giải pháp này không thêm quy tắc mà thay thế bất kỳ quy tắc nào khác được tải trước đó, bao gồm cả pf.conftệp
xóa

36

Cách hiện đại để chuyển tiếp các cổng ở El Capitan đang sử dụng pf. Trong ví dụ bên dưới, tất cả các yêu cầu cổng 80 được chuyển tiếp đến cổng 8080 trên cùng một máy chủ. Vui lòng điều chỉnh chuyển hướng theo nhu cầu của bạn.

  1. Tạo tệp neo org.user.forwarding trong /private/etc/pf.anchors

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

    với nội dung sau đây và một dòng trống

    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
    

    hoặc là

    rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
    
  2. Sửa đổi tệp /private/etc/pf.conf nhưng giữ một dòng trống ở cuối

    tập tin gốc:

    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"
    

    đến

    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. Phân tích và kiểm tra tệp neo của bạn để đảm bảo không có lỗi:

    sudo pfctl -vnf /etc/pf.anchors/org.user.forwarding
    
  4. Bây giờ sửa đổi / System / L Library / LaunchDaemons / com.apple.pfctl.plist từ

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

    đến

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

    Bạn phải vô hiệu hóa Bảo vệ toàn vẹn hệ thống để thực hiện việc này. Sau khi chỉnh sửa tập tin SIP reenable. Sau khi khởi động lại, pf Mac của bạn sẽ được bật (đó là tùy chọn -e).

    Ngoài ra, bạn có thể tạo trình nền khởi chạy của riêng mình tương tự như câu trả lời ở đây: Sử dụng Máy chủ 5.0.15 để chia sẻ internet mà KHÔNG chia sẻ internet .

Sau khi cập nhật hệ thống hoặc nâng cấp, một số tệp gốc ở trên có thể đã được thay thế và bạn phải áp dụng lại tất cả các thay đổi.

Nếu bạn muốn chuyển tiếp qua các giao diện khác nhau, bạn phải kích hoạt tính năng này trong /etc/sysctl.conf:

net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1

7
Tại sao không có lệnh đơn giản để làm điều này nữa? Bây giờ thì quá phức tạp.
Dr.Knowitall

@klanomath - điều này hoạt động và tôi có thể chuyển tiếp cổng x sang cổng y trên 127.0.0.1, v.v., nhưng tôi không thể chuyển tiếp cổng tới windows vm của tôi chạy trên màn hình song song đây là câu hỏi của tôi stackoverflow.com/questions
40695684 / từ

Dường như không hoạt động khi chuyển tiếp cổng tới máy ảo đang chạy trên máy tính để bàn tương tự
Sudhir N

@sudhir Bạn đã không liên kết thành công đến Câu hỏi mới của bạn. Theo mặc định, VM Parallels không hiển thị với mạng, như một biện pháp phòng ngừa bảo mật. Bạn có thể thay đổi cài đặt trong cấu hình của VM để hiển thị VM. Và hãy nhớ, pinglà bạn của bạn trong việc chẩn đoán các vấn đề mạng.
Basil Bourque


3

Để mở rộng giải pháp từ @ sal-ferrarello câu trả lời, tôi đã tạo ra hai siêu cơ bản Shell Scripts để cho phép hoặc vô hiệu hóa chuyển hướng mà không ảnh hưởng mục đã tồn tại trong pf.

I. Trước tiên hãy tìm những mục bạn đã có:

sudo pfctl -s nat

Đầu ra của tôi là:

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

Những gì chúng tôi quan tâm là các mục thực tế vì vậy đầu tiên hai dòng thông tin.

II. Tạo enable.shtập lệnh:

#!/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

Hai dòng đầu tiên sau đó echolà các mục đã có. Dòng thứ ba là với chuyển hướng mới - trong trường hợp này là 80 đến 8080. Cuối cùng, chúng tôi gọi sudo pfctl -s natđể xem nếu thay đổi được áp dụng.

III. Tạo disable.shtập lệnh:

Tương tự như enable.shchúng tôi tạo tập lệnh, nhưng không có chuyển hướng 80-> 8080, nhưng với các mục đã có trước đó:

#!/bin/sh
echo "
nat-anchor \"com.apple/*\" all
rdr-anchor \"com.apple/*\" all
" | sudo pfctl -ef -
sudo pfctl -s nat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.