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
但我诉诸于使用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'
之后您应该能够使用您的 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 到网络命名空间进行某种端口路由的人。