openplanning

Chuyển hướng cổng 80, 443 trong Ubuntu sử dụng iptables

  1. Vấn đề với Ubuntu
  2. Cấu hình iptables

1. Vấn đề với Ubuntu

Khi bạn đăng nhập vào hệ điều hành Linux (Bao gồm cả Ubuntu) với một user không phải là "root", bạn không thể chạy các ứng dụng với cổng (port) < 1024. Chỉ có "root" mới có đặc quyền (privilege) chạy các ứng dụng như vậy.

Vì vậy nếu bạn đang đăng nhập với user khác "root", thì bạn không thể triển khai ứng dụng web với cổng 80 hoặc 443. Website của bạn sẽ có một địa chỉ không được thân thiện, vì nó sẽ có thêm số cổng (port number) trên đường dẫn. Chẳng hạn:
  • http://yoursite.com:8080 (Địa chỉ không thân thiện)
  • http://yoursite.com (Địa chỉ thân thiện).
Trong trường hợp này bạn vẫn phải triển khai ứng dụng web trên một cổng (port) >= 1024, chẳng hạn 8080. Người dùng truy cập vào website của bạn thông qua cổng 80, và nó sẽ được chuyển hướng (redirect) tới cổng 8080. Việc chuyển hướng này được thực hiện bởi hệ điều hành, giống như hình minh họa dưới đây:
Để chuyển hướng bạn cần phải cấu hình iptables.

2. Cấu hình iptables

Trước hết bạn cần kiểm tra các ứng dụng đang chạy và cổng (port) mà nó đang sử dụng.
netstat -ntl
Tomcat đang chạy trên cổng 8080:
Tiếp theo, chạy lệnh dưới đây để chuyển hướng (redirect) cổng 80 sang cổng 8080.
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
Chạy lệnh dưới đây để đảm bảo việc chuyển hướng đó làm việc tốt.
sudo iptables -t nat -L
Tiếp theo bạn phải lưu các thông tin cấu hình ở trên, để đảm bảo nó vẫn sẽ có tác dụng khi bạn khởi động lại hệ điều hành.
sudo sh -c "iptables-save > /etc/iptables.rules"

sudo apt-get install iptables-persistent
Chú ý: Nếu bạn muốn xóa bỏ cấu hình chuyển hướng 80 sang 8080 đã thực hiện ở các bước trên, thực hiện lệnh sau:
sudo iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
Kiểm tra: