ในเซิร์ฟเวอร์ของฉัน ฉันต้องการเปลี่ยนเส้นทางคำขอทั้งหมด:
มาจากพอร์ต 81 ถึง 8080
เนื่องจากบริการ Jenkins ไม่ได้รับอนุญาตให้รับฟังที่พอร์ต 80 ฉันจึงทำตาม Jenkins doc
Jenkins - พร็อกซีย้อนกลับ โดยใช้ไฟร์วอลล์
แต่ไม่ทำงาน ด้านล่างนี้เป็นขั้นตอนของฉันและรายละเอียดระบบบางส่วน:
- เวอร์ชัน CentOS = 7.9.2009
[root@xxx ~]# cat /etc/centos-release
CentOS Linux รีลีส 7.9.2009 (คอร์)
- ฉันได้เปิดใช้งานพอร์ตและเพิ่มกฎการส่งต่อพอร์ตในไฟร์วอลล์แล้ว:
(เพิ่มแล้วถาวรและโหลดไฟร์วอลล์ใหม่)
[root@xxx ~]# firewall-cmd --list-all --zone=public
สาธารณะ (ใช้งานอยู่)
เป้าหมาย: ค่าเริ่มต้น
icmp-block-inversion: ไม่
อินเทอร์เฟซ: ens160 lo
แหล่งที่มา:
บริการ: dhcpv6-client http ssh
พอร์ต: 80/tcp 443/tcp 81/tcp
โปรโตคอล:
สวมหน้ากาก: ใช่
ส่งต่อพอร์ต: port=81:proto=tcp:toport=8080:toaddr=
พอร์ตต้นทาง:
icmp บล็อก:
กฎมากมาย:
- ตรวจสอบ netstat:
[root@xxx ~]# netstat -tulpn | ฟัง
tcp 0 0 0.0.0.0:22 0.0.0.0:* ฟัง 1090/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* ฟัง 1724/หลัก
tcp6 0 0 :::8080 :::* ฟัง 1107/java
tcp6 0 0 :::22 :::* ฟัง 1090/sshd
tcp6 0 0 ::1:25 :::* ฟัง 1724/master
ฟังได้เฉพาะ 8080/22/25 เท่านั้น
- ฉันพยายามใช้เครื่องมือ nc เพื่อตรวจสอบการส่งต่อพอร์ต:
[root@xxx ~]# nc -v 127.0.0.1 8080
Ncat: เวอร์ชัน 7.50 ( https://nmap.org/ncat )
Ncat: เชื่อมต่อกับ 127.0.0.1:8080
^ซี
[root@xxx ~]# nc -v 127.0.0.1 81
Ncat: เวอร์ชัน 7.50 ( https://nmap.org/ncat )
Ncat: การเชื่อมต่อถูกปฏิเสธ
8080 ใช้ได้ แต่การส่งต่อ 81 ไม่ทำงาน
- การอ้างอิงบางคนกล่าวว่าจำเป็นต้องตั้งค่า net.ipv4.ip_forward=1
ฉันยังตั้งค่าก่อนหน้านี้:
[root@xxx ~]# sysctl -a |grep "ip_forward"
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_use_pmtu = 0
sysctl: อ่านคีย์ "net.ipv6.conf.all.stable_secret"
sysctl: อ่านคีย์ "net.ipv6.conf.default.stable_secret"
sysctl: อ่านคีย์ "net.ipv6.conf.ens160.stable_secret"
sysctl: อ่านคีย์ "net.ipv6.conf.lo.stable_secret"
- ตรวจสอบ iptables ของฉันอีกครั้ง และฉันไม่ได้ตั้งค่า iptables:
[root@xxx ~]# iptables -L
เชนอินพุท (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
ส่งต่อไปข้างหน้า (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
Chain OUTPUT (ยอมรับนโยบาย)
เป้าหมาย prot เลือกปลายทางต้นทาง
[root@xxx ~]# systemctl สถานะ iptables
ไม่พบ iptables.service
มีแนวคิดเกี่ยวกับวิธีการทำงาน "การส่งต่อพอร์ต" โดยใช้ไฟร์วอลล์หรือไม่
ขอบคุณ.