ฉันมีปัญหาในการรับพอร์ตเพื่อส่งต่อไปยัง VM ผ่านกฎ iptable ของ MASQUERADE ฉันทำงานบนเซิร์ฟเวอร์เดียวกันกับ Proxmox แต่ตอนนี้ด้วย XCP-NG ฉันไม่สามารถทำให้มันใช้งานได้ ฉันเคยทำมาแล้วครั้งหนึ่งบนหนึ่งในเซิร์ฟเวอร์เหล่านี้ แต่ฉันไม่สามารถทำซ้ำได้อีกครั้ง การเชื่อมต่อเครือข่ายสำหรับขาออกและรับการอัปเดตและคำขอ http/https บน VM นั้นใช้งานได้ดีฉันไม่สามารถรับพอร์ตเพื่อส่งต่อไปยัง VoyOs/Pfsense VM ได้ ดังนั้นฉันจึงสามารถส่งต่อไปยัง VM ภายในได้
ในระยะสั้นฉันสามารถรับเครือข่ายไปยัง VM ได้ แต่ไม่สามารถส่งต่อพอร์ตได้
ฉันมีเซิร์ฟเวอร์สองเครื่องที่รัน XCP-NG แต่เครื่องหนึ่งใช้ VoyOS และอีกเครื่องหนึ่ง OPNsense:
- XCP-NG : 8.2
- OPNsense : 21.7.1
- VoyOS : ล่าสุด
ฉันทำตามคำแนะนำเหล่านี้:
xenser-single-ip-howto
การตั้งค่าเกตเวย์โดยใช้ iptables และเส้นทางบนลินุกซ์
สร้างเครือข่ายส่วนตัวสะพาน proxmox กับ nat
xen-host-and-guest-sharing-same-ip
แผนที่เครือข่าย
- อินเทอร์เฟซการจัดการ
นิค 0 -> xenbr0
- MASQUERADE เป็น xenbr1 (10.0.0.254) --> Wan- VoyOs/Pfsense (10.0.0.2) --> Lan Internal (10.0.1.1) --> VM's (10.0.1.x)
พยายาม:
iptables -t nat -A POSTROUTING -s '10.0.0.0/24' -o xenbr0 -j MASQUERADE
iptables -A PREROUTING -t nat -p tcp -i xenbr0 -d XXX.XXX.XXX.XX --dport 2727 -j DNAT --to 10.0.0.2:2727
และลบ -d XXX.XXX.XXX.XX IPaddress ภายนอก
iptables -A PREROUTING -t nat -p tcp -i xenbr0 --dport 2727 -j DNAT --to 10.0.0.2:2727
จากนั้นฉันก็ลบกฎเหล่านั้นและลอง:
iptables -I FORWARD 1 -i xenbr1 -j ยอมรับ
iptables -t nat -A โพสต์ -o xenbr0 -j MASQUERADE
และพยายามครั้งสุดท้าย:
iptables --append FORWARD --in-interface xenbr1 -j ยอมรับ
iptables -D FORWARD --in-interface xenbr1 -j ยอมรับ
กฎตาราง IP
# iptables --รายการกฎ
-P อินพุตยอมรับ
-P ยอมรับไปข้างหน้า
-P เอาต์พุตยอมรับ
-N RH-ไฟร์วอลล์-1-INPUT
-N xapi_nbd_input_chain
-N xapi_nbd_output_chain
-อินพุต -p tcp -m tcp --dport 10809 -j xapi_nbd_input_chain
-A อินพุต -p gre -j ยอมรับ
-A อินพุต -j RH-ไฟร์วอลล์-1-อินพุต
-A FORWARD -j RH-ไฟร์วอลล์-1-INPUT
-A OUTPUT -p tcp -m tcp --sport 10809 -j xapi_nbd_output_chain
-A RH-Firewall-1-INPUT -i lo -j ยอมรับ
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type ใด ๆ -j ยอมรับ
-A RH-ไฟร์วอลล์-1-INPUT -i xenapi -p udp -m udp --dport 67 -j ยอมรับ
-A RH-Firewall-1-INPUT -m conntrack --ctstate ที่เกี่ยวข้อง ก่อตั้ง -j ยอมรับ
-A RH-Firewall-1-INPUT -p udp -m conntrack --ctstate NEW -m udp --dport 694 -j ยอมรับ
-A RH-Firewall-1-INPUT -p tcp -m conntrack --ctstate ใหม่ -m tcp --dport 22 -j ยอมรับ
-A RH-Firewall-1-INPUT -p tcp -m conntrack --ctstate ใหม่ -m tcp --dport 80 -j ยอมรับ
-A RH-Firewall-1-INPUT -p tcp -m conntrack --ctstate ใหม่ -m tcp --dport 443 -j ยอมรับ
-A RH-ไฟร์วอลล์-1-อินพุต -p tcp -m tcp --dport 21064 -j ยอมรับ
-A RH-Firewall-1-INPUT -p udp -m หลายพอร์ต --dports 5404,5405 -j ยอมรับ
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
-A xapi_nbd_input_chain -j REJECT --reject-with icmp-port-unreachable
-A xapi_nbd_output_chain -j REJECT --reject-with icmp-port-unreachable
ตาราง IP
# iptables -L && iptables -t แนท -L
เชนอินพุท (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
xapi_nbd_input_chain tcp -- ทุกที่ ทุกแห่ง tcp dpt:nbd
ยอมรับ gre -- ทุกที่ที่ใดก็ได้
RH-Firewall-1-INPUT ทั้งหมด -- ทุกที่ ทุกแห่ง
ส่งต่อไปข้างหน้า (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
RH-Firewall-1-INPUT ทั้งหมด -- ทุกที่ ทุกแห่ง
Chain OUTPUT (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
xapi_nbd_output_chain tcp -- ทุกที่ ทุก tcp spt:nbd
Chain RH-Firewall-1-INPUT (อ้างอิง 2 รายการ)
เป้าหมาย prot เลือกปลายทางต้นทาง
ยอมรับทั้งหมด - ทุกที่ทุกที่
ยอมรับ icmp -- ทุกที่ ทุกที่ icmp ใดๆ
ยอมรับ udp -- ทุกที่ ทุกแห่ง udp dpt:bootps
ยอมรับทั้งหมด -- ทุกที่ ทุกแห่ง ctstate ที่เกี่ยวข้อง ก่อตั้ง
ยอมรับ udp -- ทุกที่ ทุกแห่ง ctstate ใหม่ udp dpt:ha-คลัสเตอร์
ยอมรับ tcp -- ที่ไหนก็ได้ ctstate ใหม่ tcp dpt:ssh
ยอมรับ tcp -- ทุกที่ ทุกแห่ง ctstate ใหม่ tcp dpt:http
ยอมรับ tcp -- ทุกที่ ทุกแห่ง ctstate ใหม่ tcp dpt:https
ยอมรับ tcp -- ที่ไหนก็ได้ tcp dpt:21064
ยอมรับ udp - ทุกที่ ทุกแห่ง หลายพอร์ต dports hpoms-dps-lstn, netsupport
ปฏิเสธทั้งหมด - ทุกที่ที่ปฏิเสธด้วย icmp-host-prohibited
เชน xapi_nbd_input_chain (อ้างอิง 1 รายการ)
เป้าหมาย prot เลือกปลายทางต้นทาง
ปฏิเสธทั้งหมด - ทุกที่ที่ปฏิเสธด้วย icmp-port-ไม่สามารถเข้าถึงได้
เชน xapi_nbd_output_chain (อ้างอิง 1 รายการ)
เป้าหมาย prot เลือกปลายทางต้นทาง
ปฏิเสธทั้งหมด - ทุกที่ที่ปฏิเสธด้วย icmp-port-ไม่สามารถเข้าถึงได้
ห่วงโซ่ PREROUTING (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
DNAT tcp - ทุกที่ ทุก tcp dpt:mgcp-callagent ถึง:10.0.0.2:2727
เชนอินพุท (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
Chain OUTPUT (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
ห่วงโซ่โพสต์ (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
สวมหน้ากากทั้งหมด -- 10.0.0.0/24 ที่ใดก็ได้
/etc/sysconfig/iptables
# cat /etc/sysconfig/iptables
# สร้างโดย iptables-save v1.4.21 ในวันจันทร์ที่ 16 สิงหาคม 20:14:40 น. 2021
*กรอง
:อินพุต ยอมรับ [0:0]
:ส่งต่อ ยอมรับ [0:0]
: ยอมรับเอาต์พุต [6179:9587238]
:RH-ไฟร์วอลล์-1-อินพุต - [0:0]
:xapi_nbd_input_chain - [0:0]
:xapi_nbd_output_chain - [0:0]
-อินพุต -p tcp -m tcp --dport 10809 -j xapi_nbd_input_chain
-A อินพุต -p gre -j ยอมรับ
-A อินพุต -j RH-ไฟร์วอลล์-1-อินพุต
-A FORWARD -j RH-ไฟร์วอลล์-1-INPUT
-A OUTPUT -p tcp -m tcp --sport 10809 -j xapi_nbd_output_chain
-A RH-Firewall-1-INPUT -i lo -j ยอมรับ
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type ใด ๆ -j ยอมรับ
-A RH-ไฟร์วอลล์-1-INPUT -i xenapi -p udp -m udp --dport 67 -j ยอมรับ
-A RH-Firewall-1-INPUT -m conntrack --ctstate ที่เกี่ยวข้อง ก่อตั้ง -j ยอมรับ
-A RH-Firewall-1-INPUT -p udp -m conntrack --ctstate NEW -m udp --dport 694 -j ยอมรับ
-A RH-Firewall-1-INPUT -p tcp -m conntrack --ctstate ใหม่ -m tcp --dport 22 -j ยอมรับ
-A RH-Firewall-1-INPUT -p tcp -m conntrack --ctstate ใหม่ -m tcp --dport 80 -j ยอมรับ
-A RH-Firewall-1-INPUT -p tcp -m conntrack --ctstate ใหม่ -m tcp --dport 443 -j ยอมรับ
-A RH-ไฟร์วอลล์-1-อินพุต -p tcp -m tcp --dport 21064 -j ยอมรับ
-A RH-Firewall-1-INPUT -p udp -m หลายพอร์ต --dports 5404,5405 -j ยอมรับ
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
-A xapi_nbd_input_chain -j REJECT --reject-with icmp-port-unreachable
-A xapi_nbd_output_chain -j REJECT --reject-with icmp-port-unreachable
ให้สัญญา
#แล้วเสร็จเมื่อ จันทร์ ส.ค. 59 20:14:40 น. 2564
# สร้างโดย iptables-save v1.4.21 ในวันจันทร์ที่ 16 สิงหาคม 20:14:40 น. 2021
*แนท
: ยอมรับ [5:322]
: ยอมรับอินพุต [3:164]
: ยอมรับเอาต์พุต [1:73]
:หลังยอมรับ [1:73]
-A PREROUTING -i xenbr0 -p tcp -m tcp --dport 2727 -j DNAT --to-destination 10.0.0.2:2727
-A โพสต์ -s 10.0.0.0/24 -o xenbr0 -j MASQUERADE
ให้สัญญา
#แล้วเสร็จเมื่อ จันทร์ ส.ค. 59 20:14:40 น. 2564
ถ้ากำหนดค่า
#ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
อีเธอร์ 78:2b:cb:3c:81:65 txqueuelen 1000 (อีเธอร์เน็ต)
แพ็คเก็ต RX 24705 ไบต์ 3641727 (3.4 MiB)
ข้อผิดพลาด RX 0 หลุด 0 โอเวอร์รัน 0 เฟรม 0
แพ็กเก็ต TX 47612 ไบต์ 37970921 (36.2 MiB)
ข้อผิดพลาด TX 0 หลุด 0 โอเวอร์รัน 0 พาหะ 0 ชนกัน 0
eth1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
อีเธอร์ 78:2b:cb:3c:81:66 txqueuelen 1000 (อีเธอร์เน็ต)
แพ็คเก็ต RX 0 ไบต์ 0 (0.0 B)
ข้อผิดพลาด RX 0 หลุด 0 โอเวอร์รัน 0 เฟรม 0
แพ็กเก็ต TX 0 ไบต์ 0 (0.0 B)
ข้อผิดพลาด TX 0 หลุด 0 โอเวอร์รัน 0 พาหะ 0 ชนกัน 0
แท้จริง: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 เน็ตมาสก์ 255.0.0.0
วนซ้ำ txqueuelen 1,000 (วนกลับในเครื่อง)
แพ็คเก็ต RX 5951 ไบต์ 33860750 (32.2 MiB)
ข้อผิดพลาด RX 0 หลุด 0 โอเวอร์รัน 0 เฟรม 0
แพ็กเก็ต TX 5951 ไบต์ 33860750 (32.2 MiB)
ข้อผิดพลาด TX 0 หลุด 0 โอเวอร์รัน 0 พาหะ 0 ชนกัน 0
vif1.0: flags=4291<UP,BROADCAST,RUNNING,NOARP,MULTICAST> mtu 1500
อีเธอร์ fe:ff:ff:ff:ff:ff txqueuelen 32 (อีเธอร์เน็ต)
แพ็คเก็ต RX 6 ไบต์ 444 (444.0 B)
ข้อผิดพลาด RX 0 หลุด 0 โอเวอร์รัน 0 เฟรม 0
แพ็กเก็ต TX 0 ไบต์ 0 (0.0 B)
ข้อผิดพลาด TX 0 หลุด 0 โอเวอร์รัน 0 พาหะ 0 ชนกัน 0
vif1.1: flags=4291<UP,BROADCAST,RUNNING,NOARP,MULTICAST> mtu 1500
อีเธอร์ fe:ff:ff:ff:ff:ff txqueuelen 32 (อีเธอร์เน็ต)
แพ็คเก็ต RX 1442 ไบต์ 95984 (93.7 KiB)
ข้อผิดพลาด RX 0 หลุด 0 โอเวอร์รัน 0 เฟรม 0
แพ็กเก็ต TX 1336 ไบต์ 143058 (139.7 KiB)
ข้อผิดพลาด TX 0 หลุด 0 โอเวอร์รัน 0 พาหะ 0 ชนกัน 0
xapi0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
อีเธอร์เป็น:16:43:65:a2:4f txqueuelen 1000 (อีเธอร์เน็ต)
แพ็คเก็ต RX 6 ไบต์ 444 (444.0 B)
ข้อผิดพลาด RX 0 หลุด 0 โอเวอร์รัน 0 เฟรม 0
แพ็กเก็ต TX 0 ไบต์ 0 (0.0 B)
ข้อผิดพลาด TX 0 หลุด 0 โอเวอร์รัน 0 พาหะ 0 ชนกัน 0
xenbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet XXX.XXX.XXX.XX netmask 255.255.255.252 ออกอากาศ XXX.XXX.XXX.XX
อีเธอร์ 78:2b:cb:3c:81:65 txqueuelen 1000 (อีเธอร์เน็ต)
แพ็คเก็ต RX 23841 ไบต์ 3101836 (2.9 MiB)
ข้อผิดพลาด RX 0 หลุด 0 โอเวอร์รัน 0 เฟรม 0
แพ็กเก็ต TX 33197 ไบต์ 36975647 (35.2 MiB)
ข้อผิดพลาด TX 0 หลุด 0 โอเวอร์รัน 0 พาหะ 0 ชนกัน 0
xenbr1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.254 netmask 255.255.255.0 ออกอากาศ 10.0.0.255
อีเธอร์ 78:2b:cb:3c:81:66 txqueuelen 1000 (อีเธอร์เน็ต)
แพ็คเก็ต RX 1442 ไบต์ 95984 (93.7 KiB)
ข้อผิดพลาด RX 0 หลุด 0 โอเวอร์รัน 0 เฟรม 0
แพ็กเก็ต TX 1336 ไบต์ 143058 (139.7 KiB)
ข้อผิดพลาด TX 0 หลุด 0 โอเวอร์รัน 0 พาหะ 0 ชนกัน 0
/etc/sysctl.conf
# การตั้งค่า sysctl ถูกกำหนดผ่านไฟล์ใน
# /usr/lib/sysctl.d/, /run/sysctl.d/ และ /etc/sysctl.d/
#
# การตั้งค่าผู้ขายอยู่ใน /usr/lib/sysctl.d/
# หากต้องการแทนที่ทั้งไฟล์ ให้สร้างไฟล์ใหม่ที่มีไฟล์เดียวกัน
# /etc/sysctl.d/ และตั้งค่าใหม่ที่นั่น เพื่อแทนที่
# เฉพาะการตั้งค่าเฉพาะ เพิ่มไฟล์ด้วยคำศัพท์ในภายหลัง
# ชื่อใน /etc/sysctl.d/ และตั้งค่าใหม่ที่นั่น
#
# สำหรับข้อมูลเพิ่มเติม โปรดดูที่ sysctl.conf(5) และ sysctl.d(5)
net.ipv4.ip_forward = 1