우분투 16.04 헤드리스
이 지침을 사용하기 위해 분할 라우팅을 성공적으로 얻었습니다.https://schnouki.net/posts/2014/12/12/openvpn-for-a-single-application-on-linux/ 목표는 VPN을 통해서만 전송하고 다른 모든 것은 eth0을 통해 전송하는 것입니다.
netns 내부에서 전송 데몬을 실행 중이고 elink를 통해 전송 웹 GUI에 연결할 수 있지만 LAN 네트워크에 연결하여 데스크톱 컴퓨터 브라우저에서 액세스할 수 없습니다.
내 구성은 다음과 같습니다
ip netns add nordvpn
ip netns exec nordvpn ip addr add 127.0.0.1/8 dev lo
ip netns exec nordvpn ip link set lo up
ip link add vpn0 type veth peer name vpn1
ip link set vpn0 up
ip link set vpn1 netns nordvpn up
ip addr add 10.200.200.1/24 dev vpn0
ip netns exec nordvpn ip addr add 10.200.200.2/24 dev vpn1
ip netns exec nordvpn ip route add default via 10.200.200.1 dev vpn1
iptables -A INPUT \! -i vpn0 -s 10.200.200.0/24 -j DROP
iptables -t nat -A POSTROUTING -s 10.200.200.0/24 -o et+ -j MASQUERADE
sysctl -q net.ipv4.ip_forward=1
/lib/systemd/system/transmission-daemon.service
[Unit]
Description=Transmission BitTorrent Daemon
After=network.target
[Service]
User=root
Type=simple
ExecStart=/bin/sh -c 'exec /sbin/ip netns exec nordvpn /usr/bin/sudo -u debian-transmission /usr/bin/transmission-daemon -f --log-error --config-dir /var/lib/transmission-daemon/info'
ExecReload=/bin/kill -s HUP $MAINPID
[Install]
WantedBy=multi-user.target
/etc/transmission/settings.json
{
"alt-speed-down": 50,
"alt-speed-enabled": false,
"alt-speed-time-begin": 540,
"alt-speed-time-day": 127,
"alt-speed-time-enabled": false,
"alt-speed-time-end": 1020,
"alt-speed-up": 50,
"bind-address-ipv4": "0.0.0.0",
"bind-address-ipv6": "::",
"blocklist-enabled": false,
"blocklist-url": "http://www.example.com/blocklist",
"cache-size-mb": 4,
"dht-enabled": true,
"download-dir": "/mnt/NFS/Movies",
"download-limit": 100,
"download-limit-enabled": 0,
"download-queue-enabled": true,
"download-queue-size": 5,
"encryption": 0,
"idle-seeding-limit": 30,
"idle-seeding-limit-enabled": false,
"incomplete-dir": "/mnt/NFS/Incomplete",
"incomplete-dir-enabled": true,
"lpd-enabled": false,
"max-peers-global": 200,
"message-level": 1,
"peer-congestion-algorithm": "",
"peer-id-ttl-hours": 6,
"peer-limit-global": 200,
"peer-limit-per-torrent": 50,
"peer-port": 51413,
"peer-port-random-high": 65535,
"peer-port-random-low": 49152,
"peer-port-random-on-start": false,
"peer-socket-tos": "default",
"pex-enabled": true,
"port-forwarding-enabled": false,
"preallocation": 1,
"prefetch-enabled": 1,
"queue-stalled-enabled": true,
"queue-stalled-minutes": 30,
"ratio-limit": 2,
"ratio-limit-enabled": false,
"rename-partial-files": true,
"rpc-authentication-required": false,
"rpc-bind-address": "0.0.0.0",
"rpc-enabled": true,
"rpc-password": "{aaaaabbbbbcccccc",
"rpc-port": 9091,
"rpc-url": "/transmission/",
"rpc-username": "blades",
"rpc-whitelist": "127.0.0.1,10.200.200.*,192.168.2.3",
"rpc-whitelist-enabled": true,
"scrape-paused-torrents-enabled": true,
"script-torrent-done-enabled": true,
"seed-queue-enabled": false,
"seed-queue-size": 10,
"speed-limit-down": 100,
"speed-limit-down-enabled": false,
"speed-limit-up": 100,
"speed-limit-up-enabled": false,
"start-added-torrents": true,
"trash-original-torrent-files": false,
"umask": 2,
"upload-limit": 100,
"upload-limit-enabled": 0,
"upload-slots-per-torrent": 14,
"utp-enabled": true
}
/etc/openvpn/se10.nordvpn.com.udp1194.ovpn
client
dev tun
proto udp
remote 91.236.116.83 1194
resolv-retry infinite
remote-random
nobind
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
persist-key
persist-tun
ping 15
ping-restart 0
ping-timer-rem
reneg-sec 0
remote-cert-tls server
#mute 10000
auth-user-pass /etc/openvpn/login.conf
comp-lzo
verb 3
pull
fast-io
cipher AES-256-CBC
<ca>
-----BEGIN CERTIFICATE-----
bbbb
-----END CERTIFICATE-----
</ca>
key-direction 1
<tls-auth>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
aaaaa
-----END OpenVPN Static key V1-----
</tls-auth>
컬 ipv4.icanhazip.com이 내 공용 IP 주소를 반환합니다.
systemctl start transmission-daemon
ip netns exec nordvpn openvpn se10.nordvpn.com.udp1194.ovpn
ip netns pids nordvpn
2231
16252
16265
ps aux
root 16252 0.5 0.0 7672 1656 ? Ss 09:12 0:00 /usr/bin/sudo -u debian-transmission /usr/bin/transmission-daemon -f --log-error --config-dir /var/lib/transmission-daemon/info
debian-+ 16265 0.5 0.1 30700 3364 ? Sl 09:12 0:00 /usr/bin/transmission-daemon -f --log-error --config-dir /var/lib/transmission-daemon/info
root 2231 0.0 0.1 6156 2800 ? S May12 0:01 openvpn se10.nordvpn.com.udp1194.ovpn
netns에 연결하고
ip netns exec nordvpn /bin/bash
curl ipv4.icanhazip.com
VPN 주소 반환
내가 뭘 잘못했나요?
답변1
거의 똑같은 설정과 문제가 있습니다.
내가 아는 한, 네임스페이스 네트워킹은 외부에서 자체적으로 액세스할 수 있는 것을 원하지 않습니다. 매핑을 iptables
허용하는 몇 가지 규칙이 있을 수 있지만 저는 다음을 사용했습니다.192.168.1.*:9091
10.200.200.2:9091
socat
10.200.200.*
실제 IP 주소를 통해 네트워크에 액세스할 수 있도록 하는 해결 방법으로,192.168.1.*
내 생각 10.200.200.2
엔 전송 데몬 rpc가 nordvpn 네임스페이스의 IP 주소에 바인딩되어 있는 것 같습니다. 이 정보를 얻으려면 를 사용해야 합니다 ip netns exec nordvpn ifconfig vpn1
. 가치를 찾아보세요 inet addr
.
ip netns exec nordvpn transmission-remote --auth <username>:<password> -si
세션 정보 가져오기를 사용하여 rpc 서비스가 시작되었는지 확인할 수 있습니다.
9091
그런 다음 socat를 사용하여 가상 네트워크의 포트와 실제 네트워크를 연결합니다.
socat tcp-listen:9091,reuseaddr,fork tcp-connect:10.200.200.2:9091
또한 다음을 사용하여 예약된 작업으로 실행하여 가난한 사람의 데몬으로 전환할 수도 있습니다.at
echo 'socat tcp-listen:9091,reuseaddr,fork tcp-connect:10.200.200.2:9091 > /dev/null 2>&1' | at now
fork
매개변수는 여러 socat
하위 프로세스를 생성합니다. 나중에 다음을 사용하여 이를 중지할 수 있습니다.pkill -f 'socat tcp-listen:9091'
그런 다음 우분투 박스 IP를 사용하여 데스크탑에서 액세스할 수 있어야 합니다.
답변2
스포해서 죄송합니다만, 연관 검색어로 표시됩니다. 나는 같은 가이드를 따랐고 같은 문제에 직면했습니다. Ketwaroo의 답변이 나에게 적합하지 않았기 때문에 추가 조사를 수행해야 했습니다.
이것이 내가 찾은 것입니다:
소카트 솔루션:
sudo socat tcp-listen:9091,fork,reuseaddr exec:'ip netns exec vpn socat STDIO "tcp-connect:10.200.200.2:9091"',nofork
이 사이트의 작성자에게 감사드립니다:https://newbedev.com/port-forwarding-to-application-in-network-namespace-with-vpn작업 솔루션 및시스템 서비스 파일socat 솔루션을 유지하고 싶다면
iptables 솔루션:
iptables -t nat -A PREROUTING -p tcp --dport 9091 -j DNAT --to-destination 10.200.200.2:9091
iptables -t nat -A POSTROUTING -p tcp --dport 9091 -j MASQUERADE
저자에게 감사드립니다:https://npre.wordpress.com/2012/09/15/port-forwarding-with-iptables/이에 대한 통찰력.
나는 항상 네트워크 네임스페이스를 통해 iptables 항목이 있어야 한다고 생각했지만, 내 생각은 틀렸습니다. 이 두 항목이 요구 사항을 충족합니다.
이것이 LAN에서 네트워크 네임스페이스로 일종의 포트 라우팅을 시도하는 다른 사람들에게 도움이 되기를 바랍니다.