ฉันกำลังพยายามเปลี่ยนเส้นทางการรับส่งข้อมูล localhost บนพอร์ตเฉพาะไปยัง ip เครือข่ายที่เชื่อมต่อ
ฉันกำลังใช้ต่อไปนี้
เสียงสะท้อน "
rdr ผ่าน inet proto tcp จากพอร์ตใด ๆ ไปยังพอร์ตใด ๆ 9300 -> 192.168.64.29 พอร์ต 9300
rdr ผ่าน inet proto tcp จากพอร์ตใด ๆ ไปยังพอร์ตใด ๆ 3406 -> 192.168.64.29 พอร์ต 3406
rdr ผ่าน inet proto tcp จากพอร์ตใด ๆ ไปยังพอร์ตใด ๆ 1234 -> 127.0.0.1 พอร์ต 8000
" | sudo pfctl -ef -
มันใช้งานได้ดีสำหรับ 1234 -> 8000
ฉันมีเซิร์ฟเวอร์ Python อย่างง่ายที่ทำงานบนพอร์ต 8000
หลาม -m http.server 8000 --bind 127.0.0.1
ไปที่ http://localhost:1234/ โหลดเซิร์ฟเวอร์ที่ทำงานบน 8000 อย่างดี
เอาต์พุตของ sudo pfctl -s สถานะ
tcp ทั้งหมด 127.0.0.1:8000 <- 127.0.0.1:58791 FIN_WAIT_2:FIN_WAIT_2
tcp ทั้งหมด 127.0.0.1:8000 <- 127.0.0.1:58792 FIN_WAIT_2:FIN_WAIT_2
แต่กฎที่คล้ายกันในการเปลี่ยนเส้นทาง 127.0.0.1:9300 -> 192.168.64.29:9300
และ 127.0.0.1:3406 -> 192.168.64.29:3406
ไม่ทำงาน
ฉันสามารถเห็น SYN_SENT
ในเอาต์พุตของ sudo pfctl -s สถานะ
เอาต์พุต
tcp ทั้งหมด 127.0.0.1:8000 <- 127.0.0.1:58791 FIN_WAIT_2:FIN_WAIT_2
tcp ทั้งหมด 127.0.0.1:8000 <- 127.0.0.1:58792 FIN_WAIT_2:FIN_WAIT_2
tcp ทั้งหมด 192.168.64.29:9300 <- 127.0.0.1:9300 <- 127.0.0.1:58796 ปิด:SYN_SENT
tcp ทั้งหมด 192.168.64.29:9300 <- 127.0.0.1:9300 <- 127.0.0.1:58797 ปิด:SYN_SENT
ฉันได้อ่านไม่กี่เธรดที่ฉันต้องเปิดใช้งานการส่งต่อ แต่ดูเหมือนจะไม่ทำงาน
sudo sysctl -w net.inet.ip.forwarding=1
ฉันเปิดพอร์ต 9300 และ 3406 บน IP 192.168.64.29
ซึ่งเปิดอยู่ สะพาน100
inet 192.168.64.1 netmask 0xffffff00 ออกอากาศ 192.168.64.255
Proto Recv-Q Send-Q Local Address ที่อยู่ต่างประเทศ State PID/ชื่อโปรแกรม
tcp 0 0 0.0.0.0:3406 0.0.0.0:* ฟัง -
tcp 0 0 0.0.0.0:9300 0.0.0.0:* ฟัง -
tcp 0 0 127.0.0.53:53 0.0.0.0:* ฟัง -
tcp 0 0 0.0.0.0:22 0.0.0.0:* ฟัง -
tcp6 0 0 :::2375 :::* ฟัง -
tcp6 0 0 :::3406 :::* ฟัง -
tcp6 0 0 :::9300 :::* ฟัง -
tcp6 0 0 :::22 :::* ฟัง -
SYN_SENT:ปิด
ไม่แน่ใจว่าทำไม / ถ้ามันถูกบล็อก แต่ไปที่ 192.168.64.29:9300 ใช้งานได้ดี