Transmission/web iptables vpn netns,从 LAN 访问 netns Web 应用程序

Transmission/web iptables vpn netns,从 LAN 访问 netns Web 应用程序

Ubuntu 16.04 无头

我成功地让分割路由在这些说明下工作https://schnouki.net/posts/2014/12/12/openvpn-for-a-single-application-on-linux/ 目标是仅通过 VPN 进行传输,而其他所有内容均通过 eth0 进行传输。

我在 netns 内运行传输守护进程,我可以通过 elinks 连接到传输 Web 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>

curl 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但我诉诸于使用socat10.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'

之后您应该能够使用您的 ubuntu 盒子 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对于工作解决方案和一个systemd服务文件如果你想保留 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 到网络命名空间进行某种端口路由的人。

相关内容