การส่งต่อที่อยู่ IP โดยใช้ pf


1

ฉันกำลังพยายามส่งต่อที่อยู่ IP ภายนอกไปยังที่อยู่ IP ภายนอกอื่นด้วย pf คำสั่ง iptables iptables -t nat -A OUTPUT -d [ipaddress1] -j DNAT --to-destination [ipaddress2]จะเทียบเท่า

ฉันได้ลองรูปแบบต่างๆของ nat และ rdr ใน pf.conf ของฉันตัวอย่างคือ: ( $int_ifคือส่วนต่อประสานภายใน, $ext_ifส่วนต่อประสานภายนอก, $out_adคือ ipaddress1 (ที่อยู่เพื่อเปลี่ยนเส้นทาง) และ$res_adเป็น ipaddress2 (ที่อยู่เพื่อเปลี่ยนเส้นทาง)

nat on $int_if from 127.0.0.1 to $out_ad -> $res_ad
rdr pass on $ext_if proto tcp from $out_ad to $res_ad -> 127.0.0.1
rdr pass on $int_if proto tcp from 127.0.0.1 to $out_ad -> $res_ad
rdr pass log proto tcp from any to $out_ad -> $res_ad
nat from $out_ad to $res_ad -> 127.0.0.1
nat on $ext_if from $out_ad to $res_ad -> $ext_if
rdr on $int_if proto tcp from any to $out_ad -> $res_ad
rdr pass quick on $ext_if proto tcp from any to $out_ad -> $res_ad

สิ่งเหล่านี้ดูเหมือนจะไม่หลอกลวง ฉันได้ตั้งค่าsysctl net.inet.ip.forwarding=1เช่นกัน ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก. ขอบคุณ


สำหรับหนึ่งต่อหนึ่งใช้แปลbinat
Oleksandr Samoylyk

ฉันแค่พยายามbinat from 127.0.0.1 to $out_ad -> $res_adและbinat from 192.168.0.6 to $out_ad -> $res_adไม่ได้ผล นั่นเป็นวิธีที่ฉันควรทำหรือไม่?
chaz2505

คำตอบ:


2
sysctl net.inet.ip.forwarding=1

นี่เป็นเพียงการเปิดใช้งานการกำหนดเส้นทางบนเครื่องของคุณ มันอาจทำงานได้ถ้าคุณสร้าง a เพื่ออนุญาตให้กับ IP ปลายทางใด ๆ บนอินเทอร์เฟซภายนอก (อย่างน้อยก็ในทางทฤษฎี) (10.20.30.40 เป็นปลายทางสุดท้ายของคุณในตัวอย่างนี้)

pass in inet proto tcp from any to 10.20.30.40

(แค่ความคิด)

แต่กฎ rdr ของคุณจะไม่ทำงานเพราะมันเกิดขึ้นกับอินเทอร์เฟซเดียวกันซึ่งไม่อนุญาต (ตามโพสต์ในฟอรัม) หรือเพียงแค่ไม่ทำงาน

กฎ NAT สาธารณะในทางกลับกันควรทำงานได้ แต่คุณจะสูญเสียที่อยู่ IP ต้นทางในปลายทางสุดท้าย (ตั้งใจ?)

nat on $ext_if inet from any to 10.20.30.40 -> ($ext_if:0) port 1024:65535
pass on $ext_if inet from any to 10.20.30.40 keep state 

(หรือสถานะ synproxy)

เพื่อวัตถุประสงค์ในการดีบั๊กลองเปิดใช้งานการบันทึกของกฎ (โดยการเพิ่มบันทึกลงในกฎการส่งการติดฉลาก pflog และคำสั่งต่อไปนี้)

/etc/rc.conf
...
pflog_enable="YES"
pflog_logfile="/var/log/pflog
...


# tcpdump -i pflog0 -n -e -ttt

โอ้และโปรดให้โครงสร้างเครือข่ายที่เรียบง่าย;)


ฉันไม่รู้ว่าคุณเข้าใจปัญหานี้หรือไม่เนื่องจากคุณไม่ได้ระบุที่อยู่สองแห่งที่ฉันต้องการส่งต่อจาก / ถึง
chaz2505

ที่อยู่ที่การเชื่อมต่อจะ b NATed สามารถพบได้ในแมโคร $ ext_if: 0 เนื่องจากเป็นที่อยู่ IP แรกของอินเทอร์เฟซนี้ (ฉันมี 3 นามแฝงบนอินเทอร์เฟซนี้เช่น 0 เป็นคนแรก
Daywalker
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.