ฉันจะส่งต่อการรับส่งข้อมูลจากพอร์ตเฉพาะไปยังเครื่องอื่นได้อย่างไร
+-----------------+ +----------------------+ +------ ------------------+
| ลูกค้า | | ตัวกลาง | | เซิร์ฟเวอร์ |
| (หน้าต่าง) | | (เดเบียน) | | (วินโดวส์) |
| 10.10.1.30-+-----+-10.10.1.1 (eno1) | | |
+-----------------+ | 10.10.2.1 (ens6f3)-+------+-10.10.2.2 (พอร์ต 3389) |
----------------------+ ++------------------------
ในกรณีทดสอบนี้ ฉันกำลังพยายาม RDP (พอร์ต TCP 3389) จาก ลูกค้า
ถึง เซิร์ฟเวอร์
. ฉันกำลังพยายามตั้งค่า iptables
กฎเกี่ยวกับ ตัวกลาง
แต่ฉันไม่สามารถทำเช่นนั้นได้:
$ sudo sysctl -a
...
net.ipv4.ip_forward = 0
net.ipv4.conf.all.forwarding = 0
net.ipv4.conf.eno1.forwarding = 0
net.ipv4.conf.ens6f3.forwarding = 0
...
$ sudo sysctl net.ipv4.conf.eno1.forwarding=1
$ sudo iptables -A PREROUTING -t nat -i eno1 -p tcp --dport 3389 -j DNAT --to 10.10.2.2:3389
$ sudo iptables -A FORWARD -p tcp -d 10.10.2.2 --dport 3389 -j ยอมรับ
$ sudo iptables -t แนท -L -n -v
CHAIN PREROUTING (นโยบายยอมรับ 0 แพ็คเก็ต, 0 ไบต์)
pkts bytes target prot เลือกใช้ปลายทางต้นทาง
0 0 DNAT tcp -- eno1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3389 ถึง 10.10.2.2:3389
ตอนนี้ฉันกำลังพยายาม RDP จาก 10.10.1.30 เป็น 10.10.1.1 ฉันคาดว่าจะลงชื่อเข้าใช้ 10.10.2.2 แต่ฉันไม่ได้รับการตอบสนองจากพอร์ตนั้น
ผมทำอะไรผิดหรือเปล่า?
ฉันได้ลองแล้ว:
$ sudo sysctl net.ipv4.ip_forward=1
$ sudo iptables -A FORWARD -i eno1 -o ens6f3 -p tcp --syn --dport 3389 -m conntrack --ctstate NEW -j ยอมรับ
$ sudo iptables -A FORWARD -i eno1 -o ens6f3 -m conntrack --ctstate ก่อตั้งที่เกี่ยวข้อง -j ยอมรับ
$ sudo iptables -A FORWARD -i ens6f3 -o en01 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT