Hướng dẫn cài đặt Socks Server Dante cho Red Hat CentOS 5/6/7: Đối với việc Fake IP cho client bạn có thể dùng VPN, Proxy HTTP(S)
hoặc một cách phổ biến là SOCKS Proxy
. Hôm nay mình sẽ hướng dẫn các bạn cài đặt một máy chủ để Fake IP qua SOCKS trên nền tảng Red Hat CentOS bằng phần mềm có tên Dante rất tiện dụng.
Bạn có thể tham khảo bài trước, cách bật Socks Nhanh không cần phải cài đặt thêm gì.
Trước khi cài đặt Dante Socks Server
lên CentOS 5/6/7 xin bạn nhớ kỹ chuẩn bị sẳn một môi trường như sau trên hệ điều hành CentOS này:
1. Đặt hostname cụ thể đây là server gì (xem hướng dẫn) ví dụ đây mình dùng hostname socks.your-domain.gq
2. Set Date ngày giờ hệ điều hành cho đúng (xem hướng dẫn)
3. Disable SElinux để trong quá trình thực hành không bị phát sinh nhiều lỗi lạ (xem hướng dẫn)
4. Update System hệ thống cập nhật ở trạng thái mới nhất (xem hướng dẫn)
5. Firewall đã allow port 54321/tcp,udp
để công khai dịch vụ Dante Socks Server (xem hướng dẫn)
Nếu bạn muốn làm nhanh chỉ để test thì có thể tạm Disable Firewall trên CentOS 5/6/7:
systemctl stop firewalld >/dev/null 2>&1
service iptables stop >/dev/null 2>&1
Chuẩn bị các gói cần thiết:
Cài đặt các gói sau là cần thiết cho việc cài đặt và sử dụng Dante Socks Server:
yum -y install gcc make bison flex rpm-build openldap-devel pam-devel openssl-devel libgssapi-devel nano
yum -y install tcp_wrappers-devel
Cài đặt Dante Socks Server:
Bạn có thể tải mã nguồn Dante Socks Server từ trang chủ về và tiến hành biên dịch:
curl -O https://www.inet.no/dante/files/dante-1.4.2.tar.gz
tar xvfz dante-1.4.2.tar.gz
cd dante-1.4.2
./configure
make
make install
Bạn chú ý file /etc/sysconfig/network
phải có dòng NETWORKING=yes
để Dante Socks Server hoạt động được:
nano /etc/sysconfig/network
NETWORKING=yes
Cấu hình Dante Socks Server:
Việc cấu hình như thế nào thông thường bị quyết định bởi ý định mong muốn sử dụng Socks Server ra sao. Trước tiên bạn kiểm tra trong câu lệnh ifconfig
để biết có bao nhiêu card mạng và bao nhiêu IP Public mà bạn đang có trong máy chủ của bạn trước đã:
[root@socks ~]# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:0C:29:D8:D6:C2
inet addr:1.1.1.10 Bcast:1.1.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fed8:d6c2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:237334 errors:0 dropped:0 overruns:0 frame:0
TX packets:9515 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:18943109 (18.0 MiB) TX bytes:1141524 (1.0 MiB)
eth1 Link encap:Ethernet HWaddr 00:0C:29:D8:D6:CC
inet addr:1.1.1.11 Bcast:1.1.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fed8:d6cc/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:10 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1166 (1.1 KiB) TX bytes:1112 (1.0 KiB)
Giả sử mình có 2 card mạng và 2 IP Public là eth0
và eth1
như trên (trong một số trường hợp sẽ là card sub interface
ví dụ eth0:1 eth0:2 eth1:1
hoặc CentOS 7 là eno16777736
). Trên 2 card mạng tương ứng mình có là 2 IP public 1.1.1.10
với 1.1.1.11
và mình mong muốn Socks Server cho 2 IP đó trên máy chủ:
Client dùng Socks 1.1.1.10:54321
thì kiểm tra IP sẽ thấy IP gốc là 1.1.1.10
Client dùng Socks 1.1.1.11:54321
thì kiểm tra IP sẽ thấy IP gốc là 1.1.1.11
Thì mình có thể tạo file cấu hình cho card mạng thứ 1 eth0.conf
như sau:
nano /eth0.conf
internal: eth0 port = 54321
external: eth0
user.privileged: root
user.unprivileged: nobody
socksmethod: none
errorlog: /var/log/sockd.errlog
logoutput: /var/log/sockd.log
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: error connect # disconnect
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: connect
log: error connect # disconnect
}
Tạo file cấu hình cho card mạng thứ 2 eth1.conf
cũng tương tự chỉ thay tên card mạng vào:
nano /eth1.conf
internal: eth1 port = 54321
external: eth1
user.privileged: root
user.unprivileged: nobody
socksmethod: none
errorlog: /var/log/sockd.errlog
logoutput: /var/log/sockd.log
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: error connect # disconnect
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: connect
log: error connect # disconnect
}
Chú ý: Port 54321
phục vụ chỉ là một port mà mình muốn chọn, bạn có thể thay thế bằng port khác trong khoảng 1-65535
port nhưng tốt hơn là port này nên lớn và ngẫu nhiên để tránh bị scan thấy.
Khởi chạy Process Dante Socks Server dưới 2 file cấu hình trên:
sockd -D -f /eth0.conf
sockd -D -f /eth1.conf
Kiểm tra lại với netstat
xem Dante Socks Server đã chạy chưa:
[root@socks ~]# netstat -lntup |grep sockd
tcp 0 0 1.1.1.11:54321 0.0.0.0:* LISTEN 2293/sockd
tcp 0 0 1.1.1.10:54321 0.0.0.0:* LISTEN 2272/sockd
Mỗi lần reboot Dante Socks Server sẽ ngừng chạy tiến trình trên nên cần chạy lại. Hoặc thay vào đó nếu muốn tự động chạy mỗi khi khởi động bạn có thể thêm vào auto run
:
echo "sockd -D -f /eth0.conf" >> /etc/rc.d/rc.local
echo "sockd -D -f /eth1.conf" >> /etc/rc.d/rc.local
Sử dụng Socks Server:
Sau đây là cách cấu hình sử dụng Socks này trong Firefox và Chrome:
Trình duyệt Firefox:about:preferences#advanced > Setting
Trình duyệt Chrome:chrome://settings/ > Network > Change Proxy Setting.. > LAN Setting > Socks
Client dùng Socks 1.1.1.10:54321
thì kiểm tra IP sẽ thấy IP gốc là 1.1.1.10
Client dùng Socks 1.1.1.11:54321
thì kiểm tra IP sẽ thấy IP gốc là 1.1.1.11
File ip.php
là file dùng để kiểm tra IP của Client trên Web Server truy vấn bất kỳ. File này bạn có thể tải về tại đây ip.php
. Ngoài ra còn một số trang khác để kiểm tra IP của bạn mà không cần dùng file này để kiểm ví dụ: ping.eu, aruljohn.com, ip2location.com…
So với VPN sử dụng Socks Server có 1 điểm yếu là chỉ dùng được với những phần mềm có hỗ trợ chạy thông qua Socks. Một số ít phần mềm hỗ trợ Socks ví dụ như IE, Chrome, Firefox, Skype...
nhưng ngoài ra còn rất nhiều các phần mềm khác mà bạn muốn Fake IP lại không có tùy chọn Over Socks, để khắc phục điểm yếu này của Socks thì với những phần mềm nào không hổ trợ Socks bạn có thể ép phần mềm đó chạy trong Socks với phần mềm Proxifier xem hướng dẫn ở đây.
Bạn có thể tìm hiểu thêm hướng dẫn cài đặt VPN Server tại đây.