iptables chuyển tiếp lưu lượng đến đường hầm vpn nếu mở


9

Tôi đã sử dụng hướng dẫn sau để thiết lập pi mâm xôi của mình làm điểm truy cập:

Raspberry Pi 3 làm điểm truy cập wifi

Tôi chuyển wlan0đến eth0và NATing tất cả lưu lượng của tôi. Hoạt động tuyệt vời!

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE  
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT  
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT 

Bây giờ tôi muốn thiết lập các quy tắc tương tự ngoại trừ sử dụng giao diện tun0-00và chuyển tiếp tất cả lưu lượng truy cập của tôi thông qua đường hầm vpn của tôi. Tôi muốn gửi tất cả, không muốn bất cứ điều gì rò rỉ vào mạng máy chủ. Nghĩ rằng nó đi một cái gì đó như thế này:

sudo iptables -t nat -A POSTROUTING -o tun0-00 -j MASQUERADE
sudo iptables -A FORWARD -i tun0-00 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o tun0-00 -j ACCEPT

Thật không may, tôi biết rằng các quy tắc iptables này không hoàn thành ... Vấn đề là eth0ở lại; quy tắc ban đầu để chuyển tiếp lưu lượng eth0vẫn còn tồn tại.

Tôi muốn gửi tất cả lưu lượng truy cập của mình qua đường hầm nếu đường hầm được mở; nếu không, tôi tốt với nó bằng cách sử dụng eth0.

Cập nhật:

Đã sử dụng cờ -I để chèn quy tắc của tôi:

sudo iptables -t nat -I POSTROUTING 1 -o tun0-00 -j MASQUERADE
sudo iptables -I FORWARD 1 -i tun0-00 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -I FORWARD 1 -i wlan0 -o tun0-00 -j ACCEPT

Chuỗi FORWARD:

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     all  --  wlan0  tun0-00  0.0.0.0/0            0.0.0.0/0           
2        0     0 ACCEPT     all  --  tun0-00 wlan0   0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
3        0     0 ACCEPT     all  --  eth0   wlan0   0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
4        0     0 ACCEPT     all  --  wlan0  eth0    0.0.0.0/0            0.0.0.0/0           
5        0     0 ACCEPT     all  --  wlan1  wlan0   0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
6        0     0 ACCEPT     all  --  wlan0  wlan1   0.0.0.0/0            0.0.0.0/0           

Vẫn không có niềm vui, việc chuyển tiếp dường như không hoạt động.

Cấu hình VPN máy khách

Tôi đã loại bỏ những thứ có vẻ nhạy cảm:

dev tun
persist-tun
persist-key
cipher AES-256-CBC
auth SHA1
tls-client
client
resolv-retry infinite
remote XXX.XXX.XXX.XXX PORT_NUM udp
lport XXX
verify-x509-name "VPN_Certificate" name
pkcs12 CERT_NAME.p12
tls-auth CERTIFICATE-tls.key 1
ns-cert-type server
redirect-gateway local def1

Các pi kết nối tốt và phản ánh một IP công cộng khác nhau. Các khách hàng vẫn hiển thị pi là cổng của họ nhưng họ không thể kết nối được nữa.

Giải pháp

Đầu tiên tôi cần thêm redirect-gateway def1vào tập tin .ovpn trên pi.

Sau đó, tôi cần phải nhập tên giao diện của mình một cách chính xác ... Ugh. Tôi cảm thấy như một người điên, nhưng rõ ràng tôi đã nhìn thấy tun0-00ngay từ đầu và đó là lần duy nhất nó tồn tại. Giao diện thực sự chỉ là tun0.

Vì vậy, các lệnh iptables thích hợp là:

sudo iptables -t nat -I POSTROUTING 1 -o tun0 -j MASQUERADE
sudo iptables -I FORWARD 1 -i tun0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -I FORWARD 1 -i wlan0 -o tun0 -j ACCEPT

Hoạt động tuyệt vời bây giờ!

Câu trả lời:


15

Bạn sẽ cần cả hai bộ quy tắc trong iptables. Hai quy tắc đảm bảo rằng lưu lượng truy cập rời khỏi các giao diện đã chỉ định được giả mạo thích hợp. Đây là gợi ý của tôi, đơn giản hơn bạn một chút:

# Masquerade outgoing traffic
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

# Allow return traffic
iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT

# Forward everything
iptables -A FORWARD -j ACCEPT

Phần của câu đố còn thiếu là định tuyến. Nếu đường hầm lên, bạn muốn "tất cả" lưu lượng đi để sử dụng nó. Nếu không thì sử dụng các tuyến đường bình thường.

Điều này được xử lý trong OpenVPN bằng cách sử dụng redirect-gateway def1tham số trong cấu hình máy khách của bạn.


Tôi sẽ xem nếu đó là vấn đề của tôi! Cảm ơn rất nhiều!
Shrout1

Trông thật tuyệt, đã thử nó trên Ubuntu 16.04 nhưng không thành công. Nó hoạt động để ping một số ip, nhưng không thể sao chép cùng một IP. Có thể Ubuntu 16.04 có cách triển khai iptables khác để chuyển tiếp không? Cảm ơn vì bất kì sự giúp đỡ !
cyberjoac

2

Công cụ tiện dụng là liệt kê các quy tắc hiện có với số dòng:

iptables --line-numbers -t filter -L FORWARD

Bạn có thể xóa các quy tắc với -Dtùy chọn:

iptables -t filter -D FORWARD 1

Bạn có thể chèn một quy tắc mới tại vị trí được chỉ định với -Itùy chọn:

iptables -t filter -I FORWARD 0 blah-blah-blah

điều này sẽ chèn một quy tắc mới vào đầu bảng, vì vậy nó sẽ được tham khảo trong lượt đầu tiên.

Biên tập:

Nói chung, bạn chỉ cần một quy tắc trong FORWARDbảng khớp với -m state --state RELATED,ESTABLISHED:

-I FORWARD 1 -m state --state RELATED,ESTABLISHED -j ACCEPT

vì theo dõi kết nối sẽ cho phép tất cả các kết nối đã biết được định tuyến.

Và có, bạn cần thiết lập định tuyến chính sách để chuyển tiếp wlanlưu lượng truy cập của mình không đến cổng mặc định có khả năng truy cập thông qua ethernet giao diện của bạn nhưng vpngiao diện máng .


Kiểm tra cập nhật của tôi, không biết tôi đang thiếu gì ... Có lẽ đó là định tuyến? Không chắc chắn tại sao điều đó sẽ cần thiết khi nó hoạt động giữa các giao diện trước đó.
Shrout1

xem chỉnh sửa. chúng ta cần thiết lập định tuyến đúng cách vì các quyết định định tuyến được thực hiện không phải bởiiptables
Serge

Ok đã thử cả redirect-gateway def1redirect-gateway autolocaltrong tập tin .ovpn của tôi ... Không có niềm vui. Không chắc chắn những gì tôi đang làm sai! Một lần nữa, pi tự kết nối qua đường hầm tốt, nhưng không phải khách hàng.
Shrout1

bạn đã đọc bài viết tôi chỉ?
Serge

Tôi đã lén nhìn trộm và có lẽ tôi vẫn còn quá thiếu hiểu biết về những gì tôi cần làm. Tôi sợ rằng nếu tôi đặt tuyến đường tĩnh đến đường hầm thì giao thông của tôi sẽ không đi qua khi đường hầm bị hỏng.
Shrout1
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.