บังคับให้ทราฟฟิก IP โลคัลไปยังอินเตอร์เฟสภายนอก


30

ฉันมีเครื่องที่มีอินเตอร์เฟสหลายตัวที่ฉันสามารถกำหนดค่าได้ตามต้องการ:

  • eth1: 192.168.1.1
  • eth2: 192.168.2.2

ฉันต้องการส่งต่อปริมาณข้อมูลทั้งหมดที่ส่งไปยังหนึ่งในที่อยู่ในพื้นที่เหล่านี้ผ่านอินเทอร์เฟซอื่น ตัวอย่างเช่นการร้องขอทั้งหมดไปยังเซิร์ฟเวอร์ iperf, ftp, http ที่ 192.168.1.1 ไม่ควรส่งภายในเท่านั้น แต่ส่งต่อผ่าน eth2 (และเครือข่ายภายนอกจะดูแลการกำหนดเส้นทางแพ็กเก็ตไปยัง eth1 อีกครั้ง)

ฉันลองและดูคำสั่งหลายอย่างเช่น iptables เส้นทาง ip ฯลฯ ... แต่ไม่มีอะไรทำงาน

พฤติกรรมที่ใกล้เคียงที่สุดที่ฉันสามารถทำได้คือ:

ip route change to 192.168.1.1/24 dev eth2

ซึ่งส่ง 192.168.1.x ทั้งหมดบน eth2 ยกเว้น 192.168.1.1 ซึ่งยังคงกำหนดเส้นทางภายใน ฉันจะทำ NAT การส่งต่อข้อมูลจราจรทั้งหมดไปยัง 192.168.1.2 ปลอมใน eth1 ได้หรือไม่เปลี่ยนเส้นทางไปเป็น 192.168.1.1 ภายในองค์กรหรือไม่ ที่จริงฉันกำลังต่อสู้กับ iptables แต่มันยากเกินไปสำหรับฉัน

เป้าหมายของการตั้งค่านี้คือทำการทดสอบไดรเวอร์อินเตอร์เฟสโดยไม่ต้องใช้พีซีสองเครื่อง

ฉันใช้ลีนุกซ์ แต่ถ้าคุณรู้ว่าจะทำอย่างไรกับ Windows ฉันจะซื้อมัน!

แก้ไข:

เครือข่ายภายนอกเป็นเพียงสายเคเบิลแบบไขว้ระหว่าง eth1 และ eth2 สมมติว่าฉันมีเซิร์ฟเวอร์ http บนเครื่องของฉัน ตอนนี้ฉันต้องการเข้าถึงเซิร์ฟเวอร์นี้จากเครื่องเดียวกัน แต่ฉันต้องการบังคับให้ทราฟฟิก TCP / IP ผ่านสายเคเบิล eth1 / eth2 นี้ ฉันควรกำหนดค่าอินเทอร์เฟซสำหรับสิ่งนี้อย่างไร


คุณกำลังบอกว่าคุณต้องการทราฟฟิกมิเรอร์ทั้งหมดผ่านอินเตอร์เฟส 1 และ 2 แต่กลับไปที่อินเตอร์เฟส 2 จากเราเตอร์อื่นหรือ ไม่สามารถทำสิ่งแปลก ๆ สวย ๆ ในเครือข่ายได้ใช่ไหม จะเป็นการดีกว่าที่จะนำทราฟฟิกมิร์เรอร์จากอินเตอร์เฟส 2 ไปยังระบบอื่นที่เพิ่งลดทราฟฟิกแล้วคุณสามารถตรวจสอบได้หรือใช้ซอฟต์แวร์เวอร์ชวลไลเซชันเพื่อดักจับทราฟฟิก บางทีฉันอาจจะพลาดคำอธิบายบางอย่าง
Bart Silverstrim

ดูเหมือนว่าเขาต้องการสร้างแพ็คเก็ตพูด 192.168.1.1 ซึ่งเป็น IP ของ eth1 แต่แทนที่จะเป็นสแต็ก Linux ที่รับแพ็กเก็ตนั้นทั้งหมดภายในเขาต้องการให้แพ็กเก็ตถูกบังคับให้ใช้ eth2 (ซึ่งจะถูกส่งกลับไปยังภายนอกเป็น eth1 และจากนั้นเป็นสแต็ก Linux) ฉันไม่แน่ใจว่าเป็นไปได้หรือไม่ เมื่อเลเยอร์เครือข่ายตรวจพบที่อยู่เป็นอินเทอร์เฟซภายในก็จะมีเหตุผลเล็กน้อยที่จะดูตารางเส้นทาง คนอื่นอาจรู้ดีกว่า
PP

คำตอบ:


14

ฉันขยายคำตอบของ Caladona เนื่องจากฉันไม่เห็นแพ็กเก็ตตอบกลับ สำหรับตัวอย่างนี้:

  1. บนพีซีในพื้นที่ของฉันฉันมี NIC บนเครือข่ายย่อยต่าง ๆ192.168.1 / 24 , 192.168.2 / 24
  2. มีเราเตอร์ / พีซีภายนอกที่สามารถเข้าถึงเครือข่ายย่อยทั้งสองได้
  3. ฉันต้องการส่งทราฟฟิกสองทิศทางผ่าน NICs บนพีซีในพื้นที่
  4. การกำหนดค่าต้องการที่อยู่ IP ที่ไม่ได้ใช้สองรายการสำหรับแต่ละเครือข่ายย่อย

เส้นทาง iptable ของพีซีในเครื่องถูกตั้งค่าเป็น SNAT และ DNAT ทราฟฟิกขาออกไปยัง IP 'ปลอม'

iptables -t nat -A POSTROUTING -d 192.168.1.100 -s 192.168.2.0/24 -j SNAT --to-source      192.168.2.100
iptables -t nat -A PREROUTING  -d 192.168.1.100 -i eth0           -j DNAT --to-destination 192.168.1.1
iptables -t nat -A POSTROUTING -d 192.168.2.100 -s 192.168.1.0/24 -j SNAT --to-source      192.168.1.100
iptables -t nat -A PREROUTING  -d 192.168.2.100 -i eth1           -j DNAT --to-destination 192.168.2.1

กฎทำดังต่อไปนี้:

  1. เขียนซ้ำแหล่ง 192.168.2.1 เป็น 192.168.2.100 บนแพ็กเก็ตขาออก
  2. เขียนซ้ำ 192.168.1.100 ปลายทางเป็น 192.168.1.1 บนแพ็กเก็ตที่เข้ามา
  3. เขียนซ้ำซอร์ส 192.168.1.1 เป็น 192.168.1.100 บนแพ็กเก็ตขาออก
  4. เขียนซ้ำปลายทาง 192.168.2.100 เป็น 192.168.2.1 บนแพ็กเก็ตที่เข้ามา

เพื่อสรุประบบโลคัลสามารถพูดคุยกับเครื่อง 'เสมือน' ที่มีที่อยู่ 192.168.1.100 และ 192.168.2.100

ถัดไปคุณต้องบังคับให้พีซีในพื้นที่ของคุณใช้เราเตอร์ภายนอกเพื่อเข้าถึง IP ปลอมของคุณ คุณทำได้โดยการสร้างเส้นทางตรงไปยัง IP ผ่านทางเราเตอร์ คุณต้องการตรวจสอบให้แน่ใจว่าคุณได้บังคับให้แพ็กเก็ตไปยังอีกฝั่งหนึ่งของซับเน็ตปลายทาง

ip route 192.168.1.100 via $ROUTER_2_SUBNET_IP 
ip route 192.168.2.100 via $ROUTER_1_SUBNET_IP

ในที่สุดเพื่อให้การทำงานทั้งหมดนี้เราเตอร์ภายนอกต้องทราบวิธีการเข้าถึง IP ปลอมในพีซีของคุณ คุณสามารถทำได้ด้วยการเปิด ARP พร็อกซีสำหรับระบบของคุณ

echo 1 | sudo tee /proc/sys/net/ipv4/conf/all/proxy_arp
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

ด้วยการตั้งค่านี้คุณสามารถใช้ IP ปลอมเป็นระบบจริงบนพีซีของคุณ การส่งข้อมูลไปที่. 1 subnet จะบังคับให้แพ็กเก็ตออกมาเป็นอินเตอร์เฟส. 2 การส่งข้อมูลไปที่ซับเน็ต. 2 จะบังคับให้แพ็กเก็ตออกมาเป็นอินเตอร์เฟซ. 1

ping 192.168.1.100
ping 192.168.2.100

วิธีของคุณดีกว่ามาก! โปรดทราบว่าฉันยังต้องการ ip_forward เพื่อให้สิ่ง ARP ทำงานได้: echo 1> / proc / sys / net / ipv4 / ip_forward
calandoa

28

ฉันประสบความสำเร็จในการใช้งานต่อไปนี้บน Linux เพื่อทดสอบปริมาณงานของการ์ด 10Gbps แบบดูอัลพอร์ตใหม่ในโหมด "ลูปแบ็ค" นั่นคือพอร์ตหนึ่งต่อเข้ากับพอร์ตอื่นโดยตรง ทั้งหมดนี้เป็นเพียงเล็กน้อยของวูดูเพื่อบังคับให้ห่อหุ้มสาย แต่ถ้าคุณทำไม่ได้ลีนุกซ์จะลัดวงจรทราฟฟิกผ่านเคอร์เนล (ดังนั้นคำถามของ OP) ในคำตอบของ Casey ข้างต้นฉันไม่แน่ใจว่าจำเป็นหรือไม่ที่จะต้องมีเราเตอร์ภายนอกหรือไม่ก็ได้ แต่สิ่งต่อไปนี้มีอยู่ในตัวเองอย่างสมบูรณ์ อินเตอร์เฟสทั้งสองคือ eth2 และ eth3

มอบ IP ให้กับอินเทอร์เฟซและวางบนเครือข่ายแยก:

ifconfig eth2 10.50.0.1/24
ifconfig eth3 10.50.1.1/24

ต่อไปเราจะตั้งค่าสถานการณ์ NAT สองครั้ง: เครือข่ายปลอมใหม่สองเครือข่ายที่ใช้เพื่อเข้าถึงเครือข่ายอื่น ในระหว่างทาง, ให้แหล่ง NAT กับเครือข่ายปลอมของคุณ ระหว่างทางแก้ไขปลายทาง และในทางกลับกันสำหรับเครือข่ายอื่น:

# nat source IP 10.50.0.1 -> 10.60.0.1 when going to 10.60.1.1
iptables -t nat -A POSTROUTING -s 10.50.0.1 -d 10.60.1.1 -j SNAT --to-source 10.60.0.1

# nat inbound 10.60.0.1 -> 10.50.0.1
iptables -t nat -A PREROUTING -d 10.60.0.1 -j DNAT --to-destination 10.50.0.1

# nat source IP 10.50.1.1 -> 10.60.1.1 when going to 10.60.0.1
iptables -t nat -A POSTROUTING -s 10.50.1.1 -d 10.60.0.1 -j SNAT --to-source 10.60.1.1

# nat inbound 10.60.1.1 -> 10.50.1.1
iptables -t nat -A PREROUTING -d 10.60.1.1 -j DNAT --to-destination 10.50.1.1

ตอนนี้บอกให้ระบบทราบวิธีการไปยังเครือข่ายปลอมแต่ละแห่งและเตรียมรายการ arp ไว้ล่วงหน้า (อย่าลืมเปลี่ยนที่อยู่ MAC ของคุณอย่าใช้ของฉัน):

ip route add 10.60.1.1 dev eth2
arp -i eth2 -s 10.60.1.1 00:1B:21:C1:F6:0F # eth3's mac address

ip route add 10.60.0.1 dev eth3 
arp -i eth3 -s 10.60.0.1 00:1B:21:C1:F6:0E # eth2's mac address

คนโง่คนนี้มากพอที่จะใส่แพ็กเก็ตลงบนสายไฟ ตัวอย่างเช่น:

ping 10.60.1.1

ออกไป eth2 แหล่ง IP 10.50.0.1 ได้รับ NATted ที่ 10.60.0.1 และเมื่อเข้าสู่ eth3 ปลายทาง 10.60.1.1 ได้รับ NATted ที่ 10.50.1.1 และการตอบกลับนั้นเป็นการเดินทางที่คล้ายกัน

ตอนนี้ใช้ iperf เพื่อทดสอบปริมาณงาน เชื่อมโยงกับ IP ที่ถูกต้องและตรวจสอบว่า IP ใดที่คุณติดต่อ (ที่อยู่ปลอมของอีกฝั่ง):

# server
./iperf -B 10.50.1.1 -s

# client: your destination is the other end's fake address
./iperf -B 10.50.0.1 -c 10.60.1.1 -t 60 -i 10

ตรวจสอบให้แน่ใจว่าทราฟฟิกกำลังออกไปที่เส้นลวดจริงๆ:

tcpdump -nn -i eth2 -c 500

นอกจากนี้คุณยังสามารถรับชม / proc / ขัดจังหวะเพียงเพื่อให้แน่ใจว่ามีการใช้การ์ด:

while true ; do egrep 'eth2|eth3' /proc/interrupts ; sleep 1 ; done

อย่างไรก็ตามฉันพบว่าโพสต์นี้กำลังค้นหาวิธีการทำเช่นนี้ขอบคุณสำหรับคำถามและคำตอบและหวังว่าสิ่งนี้จะช่วยให้ทุกคนค้นพบโพสต์นี้ได้ในอนาคต


+1 สุดยอดวิธีแก้ปัญหา - ไม่จำเป็นต้องเปิดใช้งานการส่งต่อ IP! นี่เป็นสิ่งที่ฉันต้องการในตอนนี้ (สำหรับการทดสอบ 10GB ผ่านลูปแบ็ค)
นิลส์

16

เช่นเคย - ฉันช้าไปหน่อย - แต่ทุกวันนี้เราสามารถใช้เนมสเปซเครือข่ายเพื่อแยกอินเทอร์เฟซและป้องกันการส่งต่อภายในเครื่อง (และเล่นกับ iptables :))

สร้างเนมสเปซ (ทำทั้งหมดด้วยสิทธิ์ที่จำเป็นเช่นในฐานะรูท):

ip netns add ns_server
ip netns add ns_client

โปรดทราบว่าขณะนี้ต้องสามารถเข้าถึงสถานะ / การกำหนดค่าอินเทอร์เฟซภายในบริบทของเนมสเปซที่กำหนดดังนั้นจึงจะไม่ปรากฏหากคุณรันลิงค์ IPเปล่าเนื่องจากจะทำงานในบริบทของเนมสเปซเริ่มต้น การรันคำสั่งภายในเนมสเปซสามารถทำได้โดยใช้

ip netns exec <namespace-name> <command>

เป็นคำนำหน้า

ตอนนี้กำหนดเนมสเปซให้กับอินเทอร์เฟซใช้การตั้งค่าและตั้งค่าอินเทอร์เฟซ:

ip link set eth1 netns ns_server
ip netns exec ns_server ip addr add dev eth1 192.168.1.1/24
ip netns exec ns_server ip link set dev eth1 up
ip link set eth2 netns ns_client
ip netns exec ns_client ip addr add dev eth2 192.168.1.2/24
ip netns exec ns_client ip link set dev eth2 up

ตอนนี้คุณสามารถรันแอปพลิเคชั่นภายในเนมสเปซ - สำหรับเซิร์ฟเวอร์ iperf ที่รัน

ip netns exec ns_server iperf -s -B 192.168.1.1

และลูกค้า:

ip netns exec ns_client iperf -c 192.168.1.1 -B 192.168.1.2

ทราฟฟิกจะถูกส่งผ่านส่วนต่อประสานทางกายภาพในฐานะที่เป็นเครือข่ายทั้งหมด, ส่วนต่อประสาน, การกำหนดเส้นทาง ... ถูกแยกออกโดยเนมสเปซดังนั้นเคอร์เนลจึงไม่สามารถจับคู่ที่อยู่ที่ใช้ภายในทราฟฟิก

หากคุณทำการทดลองเสร็จแล้วให้ลบเนมสเปซออก:

ip netns del <namespace-name>

อินเทอร์เฟซจะถูกกำหนดใหม่ให้กับเนมสเปซเริ่มต้นและการกำหนดค่าทั้งหมดที่ทำในเนมสเปซจะหายไป (เช่นไม่จำเป็นต้องลบที่อยู่ IP ที่กำหนด)


นี่เป็นสิ่งที่ตรงไปตรงมามากกว่าเวทมนตร์คู่ที่ถูกแนะนำและไม่ต้องการการประสานงานจากคอมพิวเตอร์เครื่องอื่นบนเครือข่ายและไม่ต้องใช้โทโปโลยีทางกายภาพใด ๆ คำขอเดียวของฉันคือคุณเพิ่มคำสั่งเพื่อเพิ่มเส้นทาง
Huckle

2

ตกลงในที่สุดฉันก็ประสบความสำเร็จในการตั้งค่า config ของฉัน

แนวคิดคือการใช้ที่อยู่ปลอมอื่นเพื่อบังคับเส้นทางของที่อยู่ปลอมนี้ไปยังอินเทอร์เฟซ 2 จากนั้นแปลที่อยู่ปลอมด้วยที่อยู่จริง 2 ด้วย NAT / iptables

การตั้งค่าของฉันทำจากเราเตอร์หนึ่งตัวฉันสามารถเทลเน็ตระหว่าง IF1 (อินเตอร์เฟส 1) และ IF2

ในการตั้งค่าของฉัน FAKE_ADDR และ IF1_ADDR อยู่ในซับเน็ตเดียวกัน

ifconfig $IF1 $IF1_ADDR netmask 255.255.255.0
ifconfig $IF2 $IF2_ADDR netmask 255.255.255.0

iptables -t nat -A PREROUTING -d $FAKE_ADDR -i $IF2 -j DNAT --to-destination $IF2_ADDR
iptables -t nat -A POSTROUTING -s $IF2_ADDR -d $IF1_ADDR/24 -j SNAT --to-source $FAKE_ADDR

route add $FAKE_ADDR gw $ROUTER_ADDR

และบนเราเตอร์:

route add $FAKE_ADDR gw $IF2_ADDR

หากฉันส่งบางสิ่งไปยัง FAKE_ADDR pkt จะถูกส่งต่อผ่าน IF1 ไปยังเราเตอร์แล้วส่งต่อไปยัง IF2 อีกครั้งจากนั้น FAKE_IP จะถูกแทนที่ด้วย IF2_ADDR แพ็คเก็ตถูกประมวลผลโดยเซิร์ฟเวอร์ผลลัพธ์จะถูกส่งกลับไปที่ IF1_ADDR จาก IF2_ADDR ซึ่งจะถูกแทนที่ด้วย FAKE_ADDR

อาจเป็นไปได้ที่จะใช้การกำหนดค่าที่ง่ายกว่าด้วยสายเคเบิลครอสโอเวอร์เพียงเส้นเดียว แต่เนื่องจากฉันไม่ได้ลองฉันก็อยากจะให้วิธีแก้ปัญหาการทำงานของฉัน


หากเราเตอร์กำลังส่ง $ FAKE_ADDR ไปยัง $ IF2_ADDR กฎ DNAT ของคุณไม่จำเป็นต้องเป็น "-i $ IF2" แทนที่จะเป็น "-i $ IF1" หรือไม่
cmcginty

คุณพูดถูกเคซี่ย์แก้ไขเสร็จแล้ว
calandoa

1

คำตอบที่ได้รับข้างต้นโดย Thomas Tannhäuserเป็นจุดบน!

ฉันมีสถานการณ์ที่คล้ายกัน: เครื่องเดียวที่มีสองอินเตอร์เฟส enet แผนของฉันคือใช้อินเทอร์เฟซหนึ่งเป็นเซิร์ฟเวอร์ (ตัวรับ) และอีกอันเป็นไคลเอนต์ (ผู้ส่ง) แต่ละอินเตอร์เฟสจะเชื่อมต่อกับเราเตอร์และ iperf จะผลักดันการรับส่งข้อมูลผ่านเราเตอร์เพื่อวัดปริมาณงาน, PPS, ความล่าช้าเป็นต้น

น่าเสียดายที่วิธีการ iptables นั้นใช้งานง่ายและเต็มไปด้วยปัญหา หลังจากเวลาผ่านไปไม่กี่ชั่วโมงฉันก็เลิกแผนการโจมตีนี้ จากแรงบันดาลใจจากคำแนะนำของ Thomas ฉันทำการบ้านเล็กน้อยบน Linux IP Namespaces และเริ่มชื่นชมความเรียบง่ายและความสง่างามของโซลูชันนี้

ด้านล่างคือรายการคำสั่งที่แน่นอนที่ฉันใช้ในการกำหนดค่า Fedora FC26 ของฉันเพื่อให้บริการในความสามารถนี้ อินเทอร์เฟซสองรายการคือ enp1s0 และ enp3s0 เราเตอร์มีสองอินเตอร์เฟสที่มีที่อยู่ 192.168.2.112 และ 172.16.16.2 ขั้วต่อ FC26 ENET แต่ละตัวถูกต่อสายโดยตรงกับเราเตอร์ที่เกี่ยวข้อง

# How to configure the IP Namespaces
ip netns add iperf-server
ip netns add iperf-client
ip link set enp1s0 netns iperf-server
ip link set enp3s0 netns iperf-client
ip netns exec iperf-server ip addr add dev enp1s0 192.168.2.139/20
ip netns exec iperf-client ip addr add dev enp3s0 172.16.16.2/24
ip netns exec iperf-client ip link set dev enp3s0 up
ip netns exec iperf-server ip link set dev enp1s0 up
ip netns exec iperf-server route add default gw 192.168.2.112
ip netns exec iperf-client route add default gw 172.16.16.1

# Test the interfaces and network using ping
ip netns exec iperf-client ping -c1 172.16.16.1
ip netns exec iperf-server ping -c1 192.168.2.112
ip netns exec iperf-server ping -c1 172.16.16.2
ip netns exec iperf-client ping -c1 192.168.2.139

# Start Iperf Server for UDP test
ip netns exec iperf-server iperf -u -s
# Run Client against Iperf server for UDP test
ip netns exec iperf-client iperf -u -c 192.168.2.139

0

ดูเหมือนว่าคุณต้องการเปลี่ยนกล่อง linux ของคุณให้เป็นกล่องชนิดเราเตอร์ / สะพาน / เกตเวย์ / ไฟร์วอลล์ ทรัพยากรต่อไปนี้อาจเป็นสิ่งที่คุณกำลังมองหา:

โครงการเราเตอร์ Linux

รายการของการกระจายเราเตอร์หรือไฟร์วอลล์

Linux LiveCD Router

Linux Journal - เราเตอร์ Linux

อัพเดตตามข้อมูลเพิ่มเติม:

ฉันไม่คิดว่าคุณจะสามารถทำสิ่งที่คุณต้องการได้ ระบบปฏิบัติการจะตรวจสอบตารางเส้นทางภายในเสมอและ 'ดู' ทั้งสองที่อยู่ IP ในเครื่อง จากนั้นจะกำหนดเส้นทางการรับส่งข้อมูลภายในระบบปฏิบัติการและไม่เคยติดขัด คุณจะต้องมีเครื่องที่สองหรือสองเครื่องเสมือน (ตรวจสอบXen )


0

จำนวนมากของสิ่งที่จะผ่านไปที่นี่ดังนั้นฉันไม่สามารถรับประกันความถูกต้องทั้งหมดของฉัน แต่คำถามเดิมดูเหมือนว่าจะมองหาสิ่งที่เรียกว่า"ส่งไปที่ตัวเอง" เทคนิค ค้นหาการเชื่อมโยงแสดงสิ่งที่ฉันคิดว่าเป็นโปรแกรมปรับปรุงเคอร์เนลที่ดีที่สุดในขณะที่ลิงก์ด้านบน + การสนทนาและการแก้ไขด้วยวิธีการอื่น ๆ LKML

ฉันคิดว่าควรดูเนมสเปซเครือข่ายด้วย"ip netns"ของ iproute2IP" นอกจากนี้ยังใช้อินเทอร์เฟซพิเศษและมายากลการกำหนดเส้นทางดังนั้นอาจไม่ซับซ้อนน้อยกว่า iptables hoopla ขนาดใหญ่ในคำตอบอื่น ๆ

ความคิดเห็นยินดีต้อนรับแน่นอนถ้าใครพบสิ่งที่มีประโยชน์กับสิ่งเหล่านี้ - วิธีอะไรอะไรที่เกี่ยวกับการใช้งานของคุณ


0

ตรวจสอบบทความนี้ นี่คือขั้นตอนโดยละเอียดที่กล่าวถึงเพื่อเปิดใช้งานการเข้าถึงอินเทอร์เน็ตไปยัง VirtualBox vm โดยใช้การส่งต่อ NAT

http://jackal777.wordpress.com/2012/02/13/virtualbox-host-only-networking-nat-for-internet-access/


ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
Scott Pack

-1

นี่คือวิธีที่ฉันได้ทำงานกับ IPV6

IPS ที่ได้รับมอบหมายคงที่

/sbin/ifconfig eth1 inet6 add 2001:db8::1/127 
/sbin/ifconfig eth3 inet6 add 2001:db8::2/127 

ตั้งค่าโฮสต์เฉพาะเส้นทางไปยังที่อยู่ "FAKE"

ip -6 route add 2001:db8::2/128 dev eth1 metric 1
ip -6 route add 2001:db8::1/128 dev eth3 metric 1

เติมข้อมูลตาราง Neighbor ... เหมือนกับ arp

ip -6 neighbor add 2001:db8::1 lladdr 90:e2:ba:0d:75:e8 dev eth3 # eth1's mac address
ip -6 neighbor add 2001:db8::2 lladdr 90:e2:ba:0d:75:e9 dev eth1 # eth3's mac address

เพิ่มรายการ ip6tables

ip6tables -t nat -A POSTROUTING -s 2001:db8::1 -d 2013::2 -j SNAT --to-source 2001:db8::1
ip6tables -t nat -A PREROUTING -d 2001:db8::1 -j DNAT --to-destination 2001:db8::1
ip6tables -t nat -A POSTROUTING -s 2001:db8::2 -d 2013::1 -j SNAT --to-source 2001:db8::2
ip6tables -t nat -A PREROUTING -d 2001:db8::2 -j DNAT --to-destination 2001:db8::2

คุณใช้การกระจายแบบใด ครั้งล่าสุดที่ฉันตรวจสอบเคอร์เนลไม่มีตาราง NAT สำหรับ IPv6
fukawi2
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.