Tiện ích cũ ipfw
khô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.
Tiện ích cũ ipfw
khô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.
Câu trả lời:
Để 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 -
sudo pfctl -F all -f /etc/pf.conf
và để 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
pf.conf
tệp
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.
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
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"
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
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
ping
là bạn của bạn trong việc chẩn đoán các vấn đề mạng.
Để 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.sh
tậ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 đó echo
là 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.sh
tập lệnh:
Tương tự như enable.sh
chú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