iptables: chuyển hướng yêu cầu cục bộ với NAT


8

Tôi muốn chuyển hướng các yêu cầu cục bộ sang cổng được dịch bằng NAT. Tôi có các quy tắc sau:

iptables -t nat -A PREROUTING -p tcp --dport 9020 -j DNAT --to 10.0.3.11:80

tuy nhiên yêu cầu đến từ localhost bị từ chối:

wget http://127.0.0.1:9020
Connecting to 127.0.0.1:9020... failed: Connection refused.

Khi tôi kết nối từ bất kỳ máy tính nào khác, nó hoạt động. Có cách nào để làm điều này mà không cần biên dịch lại kernel CONFIG_IP_NF_NAT_LOCAL=ykhông? https://wiki.debian.org/Firewalls-local-port-redirection (dường như đã lỗi thời).

Cập nhật:

iptables -L -v -n --line-numbers -t nat:

Chain PREROUTING (policy ACCEPT 26 packets, 3230 bytes)
num   pkts bytes target     prot opt in     out     source            destination    
4       0   0     DNAT      tcp  --  *       *      0.0.0.0/0         0.0.0.0/0   tcp dpt:9020 to:10.0.3.11:80

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source                destination         
1        0     0 MASQUERADE all  --  *       *      10.0.0.0/16           0.0.0.0/0 

Câu trả lời:


9

Dựa trên các bình luận @Hauke ​​Laging tôi kết hợp lại:

# connections from outside
iptables -t nat -A PREROUTING -p tcp --dport 9020 -j DNAT --to 10.0.3.11:80
# for local connection
iptables -t nat -A OUTPUT -p tcp --dport 9020 -j DNAT --to 10.0.3.11:80

# Masquerade local subnet
iptables -t nat -A POSTROUTING -s 10.0.3.0/16 -j MASQUERADE
iptables -A FORWARD -o lxcbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i lxcbr0 -o eth0 -j ACCEPT
iptables -A FORWARD -i lxcbr0 -o lo -j ACCEPT

nơi lxcbr0là giao diện trong 10.0.3.0/16subnet và eth0là giao diện với addrees IP công cộng.


1
Tôi đã tìm kiếm điều này trong một thời gian dài (một vài giờ) !!!
Stan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.