Note on port forwarding to LXD container

จาก Wiki Opensource

บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 17-11-2559
อัปเดตโดย วิบูลย์ วราสิทธิชัย


ที่เครื่อง Ubuntu host ให้ใส่คำสั่ง iptables นี้ สำหรับ port forward ที่มาถึง host TCP port 80 ส่งต่อไปยัง LXD container port 80

mama@ubuntu:~$ sudo iptables -t nat -I PREROUTING -i enp0s3 -p tcp -d 10.0.100.206/32 --dport 80 -j DNAT --to-destination 10.0.223.206:80


และใส่คำสั่ง iptables นี้ สำหรับ port forward ที่มาถึง host TCP port 2222 ส่งต่อไปยัง LXD container port 22

mama@ubuntu:~$ sudo iptables -t nat -I PREROUTING -i enp0s3 -p tcp -d 10.0.100.206/32 --dport 2222 -j DNAT --to-destination 10.0.223.206:22


และตรวจสอบดูจะเห็นมีบรรทัด iptables ที่ทำงานอยู่ใน -t nat ดังนี้

mama@ubuntu:~$ sudo iptables -nL -t nat[sudo] password for mama: 
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            10.0.100.206         tcp dpt:2222 to:10.0.223.206:22
DNAT       tcp  --  0.0.0.0/0            10.0.100.206         tcp dpt:80 to:10.0.223.206:80

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  10.0.223.0/24       !10.0.223.0/24       
mama@ubuntu:~$ 


เมื่ออยู่ที่เครื่องอื่น เช่น 10.0.100.1 เป็นต้น สามารถที่จะ connect ไปยัง LXD container TCP port 80 และ 22 ได้

mama@myrouter:~/test$ wget 10.0.100.206/serverip.php
--2016-11-17 15:18:12--  http://10.0.100.206/serverip.php
Connecting to 10.0.100.206:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘serverip.php’

    [ <=>                                   ] 67,690      --.-K/s   in 0s      

2016-11-17 15:18:12 (181 MB/s) - ‘serverip.php’ saved [67690]


และ

mama@myrouter:~/test$ ssh -p 2222 ubuntu@10.0.100.206
ubuntu@10.0.100.206's password: 
Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-47-generic x86_64)

 * Documentation:  https://help.ubuntu.com/
Last login: Thu Nov 17 08:12:58 2016 from 10.0.100.1
ubuntu@myserver:~$